Hi Murdoc_mm
Ich schreibe mal kurz wie ich eine Serie von Daten aus bytes, word und string übermittle
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
; bewirkt dass der Printbefehl ohne Carriage return ausgeführt wird. (Läßt man ; wird automtisch carriage return angefügt)
"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:
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
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.
Grüsse
Christian
Lesezeichen