Forum: Mikrocontroller und Digitale Elektronik split bei Bascom oder andere Sprache?


von Christian (Gast)


Lesenswert?

Gibt es eine Funktion mit der man in Bascom einen Sting an einem 
bestimmten trennzeichen teilen kann so wie dies auch unter VB geht. Ich 
will einen über RS232 übertragenen String am = trennen und dann jeweils 
den teil vor und nach diesem Zeichen in meine µC weiter verarbeiten gibt 
es da eine Möglichkeit evtl. auch in C (davon habe ich aber noch keinen 
plan :-( )

Mit freundlichen Grüßen Christian

von Paul Baumann (Gast)


Lesenswert?

Guck mal in der Hilfe von Bascom nach LEFT$, MID$ und RIGHT$. Damit kann 
man Zeichenketten "zersägen".

MfG Paul

von Rahul D. (rahul)


Lesenswert?

Basic hat doch meist ein "POS"-Funktion, die die Position eines Zeichens 
in einem String zurückliefert. Damit füttert man dann die von Paul 
genannten Funktionen.

von Rahul D. (rahul)


Lesenswert?

In C würde man den String von vorne nach hinten durchsuchen (kann sein, 
dass da sogar was fertiges gibt) und die Adresse des Zeichens nach dem 
"=" zurückliefern. Dann hätte man zumindest Speicher gespart.

von Rahul D. (rahul)


Lesenswert?

Das sollte man natürlich auch in BASCOM programmieren können...

von Christian (Gast)


Lesenswert?

Irgendwie will bascom nicht so wie ich will:

Ich will einen String über RS232 an den Controller senden diesen String 
dann Splitten  und die beiden teile auswerten wenn ich die Variable aber 
vom Typ BYTE verwende kann ich keine String Funktionen anwenden (LEFT 
RIGHT MID LEN) POS scheint es auch nicht in Bascom zugeben. Vielleicht 
hat noch einen ein paar Ideen.

von Netbird (Gast)


Lesenswert?

>LEFT RIGHT MID LEN) POS scheint es auch nicht in Bascom zugeben

Das trifft nicht zu: Es gibt Left, Mid, Right, Instr (Instring), Len für 
die Länge eines Strings. Du kannst auch Trim bzw. Rtrim prüfen.
Das setzt voraus, dass Du Stringvariable benutzt. Nach dem Teilen musst 
Du dann ggf. eine Typwandlung vornehmen. Hierfür gibt es Val und CHR und 
Str, je nach Wandlungsrichtung (hier VAl).

von jojansen (Gast)


Lesenswert?

Ich denke mal, daß es mit einer 'Byte' Variablen nicht klappt. Du mußt 
eine 'String' Variable definieren und die Anzahl der maximalen Zeichen 
mit angeben:
dim variablenname as string(5), wobei die '5' für vier!!!! maximale 
Zeichen steht.
Dann liest Du mit 'Input' den String ein. Wenn am PC ein 'CR' gesendet 
wird, ist für Bascom die eingabe zuende.
Dann kannst Du den String zerlegen. Schau mal dazu in der Bascomhilfe 
nach 'MID'.
Aber vermutlich war der falsche Variablentyp das Problem.
Good luck,
:-) Johannes

von Rolf I. (for_ro)


Lesenswert?

jojansen wrote:
>
> dim variablenname as string(5), wobei die '5' für vier!!!! maximale
> Zeichen steht.

Kleine Korrektur: In Bascom steht die 5 dann für 5 Zeichen, nicht für 4 
wie in C. Intern werden vom Compiler dann tatsächlich 6 Byte reserviert.

Gruß

Rolf

von Franz josef V. (advors)


Lesenswert?

Es gibt in BASCOM die Funktion SPLIT genau für diesen Zweck.
Näher Informationen in der Hilfe.

Viele Grüße
Josef

von Christian (Gast)


Lesenswert?

@Franz josef Vögel
Split gibt es, hatte Bascom 1.11.7.3

ist noch das Problem mit Byte und Funktionen für String

von Netbird (Gast)


Lesenswert?

> ist noch das Problem mit Byte und Funktionen für String

Alle Elemente wurden in den Beiträgen bereits genannt:
- Stringvariable definieren, z.B.: DIM s AS STRING * 10
- String vom PC mit input in MC einlesen: Input s
- mit irgendeiner der vielen Möglichkeiten in Teilstrings zerlegen
- Wenn jetzt z.B. der Teilstring teil1="145" ist, dann wandeltst Du ihn 
in eine Bytevariable, z.B. wert, um mit: wert=VAL(teil1)
- wert hast Du vorher natürlich definiert mit DIM wert AS Byte.

Ist ziemlich ähnlich wie in VB, das ist ja der Vorteil von BASIC, auch 
wenn Details in der Syntax (leider) unterschiedlich sein können.

So, jetzt ran ...

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.