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
Guck mal in der Hilfe von Bascom nach LEFT$, MID$ und RIGHT$. Damit kann man Zeichenketten "zersägen". MfG Paul
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.
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.
Das sollte man natürlich auch in BASCOM programmieren können...
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.
>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).
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
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
Es gibt in BASCOM die Funktion SPLIT genau für diesen Zweck. Näher Informationen in der Hilfe. Viele Grüße Josef
@Franz josef Vögel Split gibt es, hatte Bascom 1.11.7.3 ist noch das Problem mit Byte und Funktionen für String
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.