Weia ist das gruselig autoübersetzt .. wenn man mal das Original liest,
versteht man auch was Sache ist:
"Because the SerialPort class buffers data, and the stream contained in
the BaseStream property does not, the two might conflict about how many
bytes are available to read. The BytesToRead property can indicate that
there are bytes to read, but these bytes might not be accessible to the
stream contained in the BaseStream property because they have been
buffered to the SerialPort class."
Das sagt nur, dass die SerialPort-Klasse selbst einen FIFO hat, der die
Daten womöglich schon aus dem BaseStream geholt hat und man das daher
nicht mehr selbst tun kann (wofür es in normalen Situationen auch keinen
Grund gibt).
Ich hab nochmal nachgedacht, und der ganze Ansatz ist nicht besonders
günstig. Ich würde das wie gesagt mit einer FSM machen. In C könnte ich
dir die jetzt hinschreiben, aber VB kann nicht (besonders nicht um
Mitternacht).
Kurz, du brauchst ein Array in dem dein Stop-Kommando als Konstante
steht, und einen Index dazu. Dieser steht zuerst auf dem ersten Zeichen.
Für jedes Zeichen prüfst du, ob es diesem entspricht. Wenn ja, setzt du
den Index auf das zweite und überprüfst für das nächste ankommende Byte
ob es dem zweiten entspricht .. wenn ja, ab aufs dritte, wenn nicht,
zurück auf Anfang. Kommst du am Ende vom Stop-Kommando an, hast du es
erfolgreich empfangen.
Also sagen wir du willst einfach S,T,O,P als Zeichenkette haben:
Index auf S:
es kommt ein 'A' -> nix tun
es kommt ein 'C' -> nix tun
es kommt ein 'S' -> Index auf das T
es kommt ein 'O' -> zurück auf S
es kommt ein 'S' -> Index auf T
es kommt ein 'T' -> Index auf O
es kommt ein 'O' -> Index auf P
es kommt ein 'L' -> zurück auf S
es kommt ein 'I' -> nix tun
es kommt ein 'S' -> Index auf T
es kommt ein 'T' -> Index auf O
es kommt ein 'O' -> Index auf P
es kommt ein 'P' -> zurück auf S, und Aktion auslösen
Dabei aus der SerialPort immer nur ein Byte ziehen, das puffern
übernimmt die schon für dich.
Die ganze BIN-HEX Umwandlung und String.Contains ist für das gegebene
Problem völlig unnötig.
Gruß,
Christian