Hi Murdoc_mm
Ich schreibe mal kurz wie ich eine Serie von Daten aus bytes, word und string übermittle
; bewirkt dass der Printbefehl ohne Carriage return ausgeführt wird. (Läßt man ; wird automtisch carriage return angefügt)Code:Dim Volt As Word Dim Kurs As Byte, Mr As Byte , Ml As Byte , C1 As Byte , C2 As Byte Dim Servo As Byte Dim Entf As Word Dim Message As String * 5 $baud = 19200 Do Print "x"; Print Hex(Kurs); Print Hex(volt); Print Hex(c1); Print Hex(c2); Print Hex(servo); Print Hex(mr); Print Hex(ml); Print Hex(entf); Print Message; Print Chr(13); anderer Code loop
"x" gibt bei mir immer den Anfang des Strings an
der übermittelte String ist 1+2+4+2+2+2+2+2+4+5+1 = 27 Byte lang. Das letzte Byte ist Chr(13) und kennzeichnet das Ende und ist wie das "x" in dem übermittelten String einzigartig.
Empfang:
Vielleicht hilft Dir dieses Beispiel weiter. Die Werte sollten möglichst oft übermittelt werden, da auf Empfängerseite die Schleife durch Input solange stoppt bis CHR(13) kommt.Code:Dim Volt As Word Dim Kurs As Byte, Mr As Byte , Ml As Byte , C1 As Byte , C2 As Byte Dim Servo As Byte Dim Entf As Word Dim Message As String * 5 Dim Empf As String * 27 Dim Empf1 As String * 2 Dim Empf2 As String * 4 Dim I as Byte $baud = 19200 do Input Empf : I = Instr(1 , Empf , "x") 'Input wartet bis Chr(13) If I = 1 Then Empf1 = Mid(empf , 2 , 2) : kurs = Hexval(empf1) Empf2 = Mid(empf , 4 , 4) : volt = Hexval(empf2) Empf1 = Mid(empf , 8 , 2) : c1 = Hexval(empf1) Empf1 = Mid(empf , 10 , 2) : c2 = Hexval(emp1) Empf1 = Mid(empf , 12 , 2) : servo = Hexval(empf1) Empf1 = Mid(empf , 14 , 2) : mr = Hexval(empf1) Empf1 = Mid(empf , 16 , 2) : ml = Hexval(empf1) Empf2 = Mid(empf , 18 , 4) : entf = Hexval(empf2) message = Mid(empf , 22 , 5) I = 0 End If anderer Code loop
Grüsse
Christian







Zitieren

Lesezeichen