PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pico Plug - Datenmüll?



Ringo
09.11.2005, 17:23
Hallo!
Hab mir für eine Funkverbindung zu meinem Bot eine Bluetooth KArte besorgt. Pico Plug heißt das. Funktioniert eigendlich ganz gut.

Ich hab mir dazu ein Programm in VB geschrieben mit der MScomm Routine.

Naja das Problem ist das ich bei Mscomm1_Oncomm die Daten die ankommen auslese und dann in eine Textbox schreibe.

Funktioniert soweit.

Jetzt hab ich bei jeder Oncomm Routine gesagt er soll schauen ob z.b "Spannung" gesendet wurde oder so.

Das hat nicht funktioniert
nachdem ich lange gerätselt habe, hab ich nach jedem einkommenden ONcomm ein * in die Textboc schreiben lassen.

er empfängt kram wie:

Sp*ann*ung
oder
S*pann*ung*
Span*nu*ng

Also das wort kommt zerhackt an?

Ich weiß nicht woran das liegt.
:-k
Habt ihr ne Idee?
Mfg
Ringo

uwegw
09.11.2005, 17:38
nen kumpel von mir hatte mal auch so ein problem, und zwar dann, wenn er eine rs232->usb-wandler einsetzte und nicht direkt an eine hardware-rs232 schnittstelle ging. das ganze liegt offenbar daran, dass bei usb die daten nicht byteweise, sondern in größeren paketen übertragen werden. bluetooth läuft ebenfalls paket- und nicht byteweise, sodass dein string in einzelteilen ankommt...

Ringo
09.11.2005, 17:47
Danke! Sowas dacht ich mir schon..


na toll das macht die auswertung verdammt schwer ich kann mit MSComm1.RThreshold = 10 immer 10 zeichen einlesen aber dazu muss ich auch immer exakt 10 Zeichen senden..

Mhh oder doch Easy Radio...

MfG
Ringo

uwegw
09.11.2005, 17:53
im fall des usb-wandlers bestand der vorteil, dass das sendende gerät (ein spezieles messgerät) immer noch diverse steuerzeichen vor und hinter den daten mitsendete. daher konnte man einfach die empfangenen daten hintereinader zu einem string zusammenpacken und dann anhand der steuerzeichen in die einzelteile zerlegen... das wäre eine lösungsmöglcihkeit...

Ringo
09.11.2005, 18:00
oder so.
werd ma sehn was einfacher ist..

Danke

ragnar
09.11.2005, 19:19
@Ringo: Schreib nach jedem Messwert ein eindeutiges Endezeichen, z.B. '\n' (Return). Auf der Empfängerseite liest du Daten solange in einen Buffer ein, bis du dein Return findest. Dann kannst du den String in einem Rutsch parsen.

Georg

Ringo
10.11.2005, 15:46
hm kennt da jemand nen guten Befehl?

Ich hab's bislang immer so gemacht:
Avr schickt eine Zahl
VB schaut obs eine Zahl oder ein Wort ist
wenn Zahl ab in eine Textbox (zahl)
AVr schickt Wort (Spannung)
VB schaut obs eine Zahl oder ein Wort ist
wenn wort in Textbox (wort)

Dann hab ich immer den Wert und halt Spannung gehabt und konnt das dann ganz easy wieder weiterverarbeiten!

Jetzt ists komplizierter..
Ich dachte jetzt an:
Avr schickt "*" ; Zahl;"*";
kommt also an : *100*
Dann Spannung
Kommt an *Spannung*
Wie bekomm ich VB jetzt dazu wieder "Spannung" und "100" zu schreiben in eine Textbox für den Rest kann ich wieder meine alte Methode verwenden.

Gibts da ein Befehl.. bin grad am suchen

MfG
Ringo

Ringo
10.11.2005, 18:14
O.k habs hinbekommen!
hier:

b = InStr(1, Me.Text1, "*")
If b = 0 Then
Else
b = b + 1
an = InStr(b, Me.Text1, "*")
End If

If an = 0 Then
Else

an = an - b

Me.EmpText = Mid(Me.Text1, b, an)
Me.Text1 = Me.EmpText
Me.Zahl = Filter(Me.Text1, cNumbers, True)
Me.EmpText = Filter(Me.Text1, cNumbers & cWhiteSpaces)
Me.Text1 = ""

End If
Me.text1 kommt der kam vom Pico plug an
Emp text ist nur ein zwischenbuffer
dann werden die Zahlen schön in Zahl und me.emptext geschrieben

jetzt muss ich nur noch beim ARV befehl das Print "*"; überall dazu schreiben ](*,)

Naja hauptsache es funst \:D/

danke @ all
Mfg
Ringo