Hallo,
ich habe eine Klasse geschrieben die über die RS323 Schnittstelle mit einem externen System kommuniziert.
Es wird ein Befehl abgeschickt, das externe System schickt 17 Bytes zurück, die mit dem ReceiveEreignis (SerialPort.ReceivedBytesThreshold = 17) in einen Bytepuffer geschrieben werden. Funktioniert auch so weit.
Nur wenn ich von einem Testformular den Befehl abschicke, und im Anschluss den Bytepuffer lesen will, wartet der Haupthread nicht bis der Code im ReceiveEreignis den Puffer beschrieben hat, sondern rauscht durch und sieht einen leeren Puffer.
Also:
Sende Befehl
---- hier sollte er warten bis der Puffer besetzt ist ---
Lese Puffer.
Wie bekommt man das hin?
Ich habe es schon mit SyncLock versucht, hatte aber keinen Erfolg.
Weiss jemand wie das geht?
Danke, Friedrich
ich habe eine Klasse geschrieben die über die RS323 Schnittstelle mit einem externen System kommuniziert.
Es wird ein Befehl abgeschickt, das externe System schickt 17 Bytes zurück, die mit dem ReceiveEreignis (SerialPort.ReceivedBytesThreshold = 17) in einen Bytepuffer geschrieben werden. Funktioniert auch so weit.
Nur wenn ich von einem Testformular den Befehl abschicke, und im Anschluss den Bytepuffer lesen will, wartet der Haupthread nicht bis der Code im ReceiveEreignis den Puffer beschrieben hat, sondern rauscht durch und sieht einen leeren Puffer.
Also:
Sende Befehl
---- hier sollte er warten bis der Puffer besetzt ist ---
Lese Puffer.
Wie bekommt man das hin?
Ich habe es schon mit SyncLock versucht, hatte aber keinen Erfolg.
Weiss jemand wie das geht?
Danke, Friedrich