Hast du 2 Hardware UART? Wenn ja, dann mit
Code:
If Ischarwaiting(x) = 1 Then
arbeiten.
Hast Du nur einen, dann einmal mit ischarwaiting und 1mal mit Interrupt den SoftUART einlesen.
Mit ischarwaiting ist mir noch nichts verloren gegangen.
Codeausschnitt aus einem meiner Projekte (X300T Frontend):
Code:
Config Serialin = Buffered , Size = 88 'wohl überdimensioniert
Enable Interrupts
Do
Gosub Infrarot
If Anders1 = 1 Then 'Laufschrift Timer hat ausgelöst oder Text hat sich geändert
Anders1 = 0
Gosub Lauftext
Gosub Discanimation 'Drehendes Discsymbol animieren
End If
If Anders3 = 1 Then 'Zahlen empfangen, diese auf dem Display anzeigen
Anders3 = 0
Gosub Zahlen
End If
Gosub Buttons
If Ischarwaiting() = 1 Then
Gosub Empfangen
End If
Loop
End
Empfangen:
B = Inkey()
If B >= 13 Then 'Alles kleiner 13 wird abgeschnitten
If B = 13 Then
Gosub Auswerten
Else
If Len(seingang) < 53 Then
Seingang = Seingang + Chr(b)
Else
Seingang = ""
Print "ERROR: COM Overflow..."
End If
End If
End If
Return
Auswerten:
'hier wird der Eingang abgearbeitet.
return
Lesezeichen