www.mikrocontroller.net

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


Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Paul Baumann (Gast)
Datum:

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

MfG Paul

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das sollte man natürlich auch in BASCOM programmieren können...

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Netbird (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: jojansen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rolf Im forum (for_ro)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Franz josef Vögel (advors)
Datum:

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

Viele Grüße
Josef

Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Netbird (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.