Forum: PC-Programmierung brauche Denkanstoß C#


von StefanA. (Gast)


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

von Arc N. (arc)


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...

von Sam .. (sam1994)


Lesenswert?

Könntest auch einfach einen Timer starten der sich selbst stoppt wenn er 
aufgerufen wird.

von Peter (Gast)


Lesenswert?

man kann doch einfach den Timeout setzen und die daten ohne das event 
auslesen. Einfach Read.

von Dennis (Gast)


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
}

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.