Byte empfangen über RS232
Hallo,
ich möchte 10 werte = 10 Byte von einem µC zum anderen senden.
Es sind immer 10 Werte und es sendet immer der selbe µC.
Am Anfang sende ich "250" als Start, dann die 10 DatenBytes und dann Wert "251"
Code:
Dim Test(10) As Byte 'als Array
Dim C As Byte
'---
Do
For C = 1 To 10
Test(c) = C 'fill array
Next
Print Chr(250); 'zum starten
Printbin Test(1) ; 10 'hier die Daten
Print Chr(251); 'Ende
Wait 2
Loop
End
Das funktioniert und ich kann die Daten am PC sehr schön sehen!
Nun der Empfang:
Wert 250 wird empfangen und setzt Variable N auf "0"
Bei jedem empfangenem Byte wird N um 1 hochgezählt
und "E_byte" wird in "Test(N)" übertragen.
Wird 251 empfangen soll die Variable z.B. "Test(3)" auf dem LCD angezeigt werden.
Leider wir nur T:T:T:T:T:T:T:T:T:T:T:T: angezeigt....
Was muss ich ändern?
Tobias
Code:
Dim N As Byte
Dim Test(10) As Byte 'als Array
'Für RS232:
On Urxc Onrxd 'Interrupt-Routine setzen
Enable Urxc 'Interrupt URXC einschalten
Enable Interrupts 'Interrupts global zulassen
Do
Loop
End
Onrxd:
Incr N
E_byte = Udr
Select Case E_byte
Case 250 : N = 0 'Empfang starten
Cls
Case 251 : Lcd "T:" ; Test(3) 'Empfang beenden
Case Else : Test(n) = E_byte
End Select
Return
Liste der Anhänge anzeigen (Anzahl: 1)
merkwürdiger weise steht nun 48 49 53 54 auf dem LCD - ich habe aber die ersten 4 abgefragt... (also 48,49,50,51)
so - nun mal etwas aufwändiger:
Beide µC haben ein LCD.
Der Sender hat zusätzlich ein Poti um den Wert zu erhöhen(0-1023)
Sender LCD zeigt Poti=0; Werte sind 1,2,3,4,5,6,7,8,9,10 auf dem LCD
Am Anfang wird "250" gesendet, dann die Werte udn am Ende "251"
Am PC kann ich genau diese Kette korrekt sehen(siehe Bild).
Nun zum Empfang:
Das LCD zeigt: 1,2,6,7,8,9,10,0,0,0
In der Do...Loop steht nichts.
Code:
Onrxd:
Incr N
E_byte = Udr
Select Case E_byte
Case 250 : N = 0 'Empfang starten
Cls
Case 251 : Gosub Anzeige
Case Else : Test(n) = E_byte
End Select
Return
Anzeige:
Locate 1 , 1
Lcd Test(1)
Locate 1 , 5
Lcd Test(2)
Locate 1 , 9
Lcd Test(3)
Locate 1 , 13
Lcd Test(4)
Locate 1 , 17
Lcd Test(5)
Locate 2 , 1
Lcd Test(6)
Locate 2 , 5
Lcd Test(7)
Locate 2 , 9
Lcd Test(8)
Locate 2 , 13
Lcd Test(9)
Locate 2 , 17
Lcd Test(10)
Return
Wenn ich das Poti verändere ändern sich auch die Werte auf beiden LCD´s. Nur das bei dem Empfänger immer dieser Sprung ist.
Hardware: beide µC nutzen HW-UART 9600Baud und haben je einen MAX232 - und die Hardware läuft denke ich einwandfrei.
Der Wert "250" am Anfang wird wohl erkannt, da die Empfangsreihenfolge stimmt - die "251" wird erkannt, da sonst das empfangene nicht auf dem LCD erscheinen kann.
Tobias