C# serialPort Statusabfragen

Dshing

Lt. Commander
Registriert
Nov. 2007
Beiträge
1.436
Hi,
gibt es in C# eine Möglichkeit abzufragen, ob der SerialPort gerade beschäftigt ist bz. ob ein Zeichen im Leseregister enthalten ist?
Ich will eigentlich etwas senden, worauf ich eine Antwort erwarte. Wenn ich aber gleich nach dem Senden nach frage gibt es einen Fehler, wenn ich 100ms warte, dann funktioniert es. Ihr habt mir aber mal gesagt, dass man besser nicht auf Zeitbasen programmieren soll, deshalb würde ich das gerne besser machen.

Code:
serialPort1.Write(new byte[] { 41, 0, 0 }, 0, 3);
            System.Threading.Thread.Sleep(100);
            y1 = (byte)serialPort1.ReadByte();
            y2 = (byte)serialPort1.ReadByte();
 
aus dem bauch heraus würde ich mal schätzen, dass der port noch mit dem senden beschäftigt ist während du schon wieder empfangen willst.

probiers mal asynchron mit diesem event:
http://msdn.microsoft.com/de-de/library/system.io.ports.serialport.datareceived.aspx

Edit: Klar ist es nicht gut auf zeitblsaen zu programmieren. Aber wenn es den sachverhalt einfacher macht ... warum nicht. Im Microcontroller Bereich ist das fast unumgänglich.
 
Zuletzt bearbeitet:
Ist das nicht sogar abhängig vom verbauten Controller? ich meine mich zu erinnern nicht jeder Controller kann soetwas
 
Hi, ja ich komme auch eher aus dem µC Bereich. Die Controller können das nicht immer, aber hier ist jetzt ein PC das Gerät, auf dem mit C# was geschehen soll.

Ich hatte es jetzt versucht mit dem , aber nicht so recht hin bekommen. Ich dachte es gibt da vielleicht auch so was wie im Backgroundworker, mit dem:
Code:
if (this.backgroundWorker1.IsBusy == false)
nur halt mit SerialPort.IsBusy oder so ^^
 
Zurück
Oben