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