Anfangen würde ich z.B. so:
Code:
Dim Uart_buffer As String * 100
Dim Byte_empfangen As Byte
Dim Buffer_overlay(101) As Byte At Uart_buffer Overlay
Dim Buffer_pointer As Byte
On Urxc Urxc_isr
Enable Urxc
Enable Interrupts
Do
'deine Hauptschleife
Loop
End
Urxc_isr:
If Buffer_pointer < 100 Then Incr Buffer_pointer 'falls zuviele zeichen kommen, ist hier die Bremse
Byte_empfangen = UDR
'hier könntest du jetzt einige Checks machen, wie z.B. auf CR/LF oder auch eine Vorauswertung des Empfangs
'wenn du z.B. das CR/LF gar nicht im Buffer abspeichern willst, dann lässt du den Befehl eben weg und setzt stattdessen nur ein Flag
'welches du dann in der Hauptschleife auswertest.
'auf die Art musst du nicht so viel machen, wenn deine Übertragung vollständig ist, sondern verteilst
'dies auf die relativ langen Pausen zwischen den eingehenden Zeichen
'hier kannst du auch deinen Timer starten um zu überprüfen, ob die Übertragung nicht aus irgendeinem Grund aufgehört hat
Buffer_overlay(buffer_pointer) = Byte_empfangen 'und schließlich das Zeichen im Buffer abspeichern
Return
Lesezeichen