Hi Heiko,
auch ohne CRLF sollte der Empfang möglich sein, vielmehr ist es so, dass die UartISR bei empfangenen Bytes mehrfach ausgelöst wird und der empangene String zusammengesetzt werden muss, damit die komplette Message als String zur Verfügung steht.
Wenn kein Message-ENDE-Zeichen definiert ist, wird die Astream-ISR wieder und wieder ausgelöst, dein Empangsstring wächst bis in alle Unendlichkeit oder du verarbeitest jedes einzelne Fragment der Message.
Dabei spielt es keine Rolle, ob mit USBserial oder mit felUSB gearbeitet wird, beide verhalten sich gleich, was den Empfang angeht.
Nachfolgend mal ein Codeschnipsel:
Sub Process_Globals
Dim usb As UsbSerial
Dim astreams As AsyncStreams
Dim Uart_in_ready As Boolean = False
Dim Pakete as Int = 0
Dim Xstr As String = ""
Dim Text_in As String = ""
End Sub
dazwischen wird die USB Permission abgefragt, astreams inizialisiert usw., alles wie im USBSerial Beispiel
Sub Astreams_NewData (Buffer() As Byte)
Pakete = Pakete + 1 ' einzelne Fragmente der Message zählen (ich empfange ca. 50 Bytes, das sind 3 bis 5 Pakete)
Xstr = Xstr & BytesToString(Buffer, 0, Buffer.Length, "UTF-8") ' Bytes im Puffer zu XSTR hinzufügen
If Xstr.EndsWith(CRLF) = True Then ' Message ist fertig nach Empfang von CRLF, kann auch ein beliebiges anderes Zeichen sein
Text_in = Xstr ' komplette Message nach Text_in kopieren
Xstr = "" ' Xstr wieder leeren
Uart_in_ready = True ' Message komplett Flag setzen
Label1.Text = Text_in & " Pakete: " & Pakete ' Message anzeigen, nicht elegant in einer ISR-Sub, aber für Kontrolle ok
End If
End Sub