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)
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 ......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
Man kann da so viel machen und jeder machts anders.
Mfg







Zitieren
Lesezeichen