brauche Denkanstoß C#

Gast #1873593
Lesenswert?

Hallo,

ich möchte mit C# über die serielle Schnittstelle was senden und erwarte 
dann von der Gegenstelle natürlich eine Antwort.
Und ich steh irgendwie voll aufm schlauch - Wie mache ich es, das mein 
Programm auf die Antwort "wartet"?

Ich weis da gibts das DataReceive-Event, aber das kann ja im 
schlimmstenfall kommen wann es will - oder gar nicht bei einer 
fehlerhaften übertragung.

Also: Sende Befehl -> erwarte zB innerhalb 500ms eine Antwort, die dann 
positiv oder negativ ausfallen kann

Tut mir echt leid, ich weis das ist bestimmt voll easy aber hab grad ne 
denkblockade^^

Gruß Stefan
#1873605
Lesenswert?

Kommt drauf an was da für Daten ankommen...
Steht bspw. die Anzahl der Bytes fest, könnte man ReceivedBytesThreshold 
festlegen (muss dann aber aufpassen, falls mal was nicht vollständig 
etc.) ankommt.
Oder man legt ReadTimeout fest und "wartet" auf die Exception...
Oder man nimmt einen eigenen Thread, der die über DataReceived 
hereinkommenden Teile zusammensetzt und sich dann mit einem eigenen 
Event meldet oder...
Gast #1875558
Lesenswert?

Ja einfach so.

try {
  serialPort1.ReadTimeout = 500; // Wenn nach 500ms keine Antwort kommt 
--> Exception
  string antwort = serialPort1.ReadString(); // Oder andere Lesemethode
} catch ()
{
   hier deinen fehler abfangen
}

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren