PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : umgang mit Strings (einzelne Felder usw.)



Neokortex
13.06.2009, 21:33
Hallo,

mein Roboter fährt soweit schon ganz gut, allerdings möchte ich ihm (per RS232) mitteilen wie schnell er fahren soll. Dazu ist das rn-controll mit einem EeePC verbunden während der Fahrt.

Wie kann ich aus einem String, der mehrere Stellen hat nur einzlne chars per if abfragen und nur bestimmte Zeichen auslesen bzw. kopieren?

z.B.:


Sub Serial0charmatch()

Local Incoming_data As String * 30
'Daten vom Buffer auslesen
Input Incoming_data Noecho

If Incoming_data [...und hier nur Feld 1] = "x" Then
[...und jetzt die restlichen 1-3 Felder mit Zahlen in eine Variable schreiben]



In dem Beispielcode dachte ich daran die Werte für das PWM Signal zu schicken und um es von Steuerbefehlen unterscheiden zu können eben zuvor mit einem Zeichen wie 'x' zu versehen.

Steuercodes werden wie folgt abgefangen:


If Incoming_data = "v" Then
Call Mvor
Elseif Incoming_data = "z" Then
Call Mzur
Elseif Incoming_data = "l" Then
Call Mlin
Elseif Incoming_data = "r" Then
Call Mrec
Elseif Incoming_data = "o" Then
Pwm1a = 0
Pwm1b = 0
End If


unter c++ geht sowas mit [pos] oder MFC String.Right(n) usw. aber wie in Bascom? Hat jemand nen Tip?

for_ro
13.06.2009, 21:52
Wenn ich dich richtig verstanden habe, willst du einen Teilstring der Länge 1 aus einem anderen String haben.
Dazu gibt es die MID-Funktion bzw. den MID-Befehl. Schau mal in die Hilfe.
Um ein einzelnes Zeichen eines Strings in einem IF zu überprüfen, benutze ich allerdings häufig eine andere Methode, da das Rausschneiden recht aufwändig ist.
Du legst ein Byte-Array über den String. Im Byte-Array kannst du nun direkt ein bestimmtes Element ansprechen. Schau mal in der Hilde unter DIM und dort unter Overlay.

Gruß

Rolf

Neokortex
13.06.2009, 21:55
Ja genau, hast Du gerad zufällig ein Beispielcode zur Hand? Zum Beispiel aus dem String "1234" nur "234" zu lesen?

Dank Dir jedenfalls schonmal!

for_ro
13.06.2009, 22:57
Die Bascom-Hilfe ist dein Freund.

out_str = Mid("1234",2,3) oder
out_str = Mid("1234",2)
out_str = Right("1234",3)

Gruß

Rolf

Neokortex
14.06.2009, 12:53
perfekt, klappt prima bis auf das kleine Problem, dass meine Motoren erst bei einem viel zu hohen Startwert anfangen sich zu bewegen und schlichtweg nicht langsam fahren können *grrr*

for_ro
14.06.2009, 13:23
Vielleicht ist nur das Anfahrmoment zu hoch.
Das könntest du umgehen, indem du mal kurz einen höheren Wert gibst und dann runter auf deinen eigentlichen Wert gehst.

Gruß

Rolf

Neokortex
14.06.2009, 13:26
jep, genau sowas hatte ich vor zu testen - heute nach dem Baden... ;-)

Dank Dir!