Hallo Blamaster
Ich mache das immer so.
Gesendet wird immer ein String also z.b >01_XXX_250_2F (also Ascii zeichen )
> =SyncByte
01 = Modul
xxx = Befehl
250 = wert
2F = Checksum ( erfunden, also keine Antworten Checksum stimmt nicht)
Code:
Const Sync_byte = 62
Dim Startbit As Bit
Dim Rxd_buffer As String * 32
startbit = 0
'########################## im RXD Interrupt
Rxd_byte = Udr
If Rxd_byte = Sync_byte And Startbit = 0 Then
Startbit = 1
Rxd_buffer = ""
Rxd_in_counter = 0
End If
If Startbit = 1 Then
Incr Rxd_in_counter
If Rxd_byte <> 13 Then
If Rxd_in_counter < 30 Then
Rxd_buffer = Rxd_buffer + Chr(rxd_byte)
End If
Else
Buffer = Rxd_buffer
Disable Urxc
Startbit = 0
End If
End If
Wenn jetzt > ( 62 ) ankommt wird das Sartbit auf 1 gesetzt und der Buffer geleert, jedes weitere Byte wird jetzt in den Buffer geschreiben bis die 13 (Return) ankommt, der Interrupt wird dann abgeschalten bis du z.B den String verarbeitet hast oder so ......
Man kann da so viel machen und jeder machts anders.
Mfg
Lesezeichen