Jedes Ereignis in C#.NET, das mir serielle Port -Aspekte -Ereignis -Ereignisereignisse bezeichnet

StackOverflow https://stackoverflow.com/questions/1201036

  •  05-07-2019
  •  | 
  •  

Frage

Ich arbeite an einer seriellen Portimplementierung in C#. Ich erhalte Daten von Serialport und füge diese Daten zur Warteschlange -Sammlung hinzu (global deklariert). Ich verwende Hintergrundworker -Thread, um Daten in der Warteschlange zu verarbeiten. Das Problem ist, dass. Wenn der serielle Port das Senden von Daten und die empfangenen Daten aufhören, werden noch einige Daten in meiner Warteschlange vorhanden, die eine Verarbeitung erforderten. Gibt es eine Möglichkeit, die mir sagt, dass keine Daten von Serialport stammen oder mit anderen Worten port_datarecebed stellt ein Störden der Empfangen von Daten. Damit ich alle Daten in der Warteschlange verarbeiten kann. Denn diesmal werde ich sicher sein, dass jetzt keine Daten aus dem seriellen Anschluss kommen, und was auch immer die Daten in der Warteschlange sind, sind die letzten verbleibenden Daten, die verarbeitet werden sollen. Vielen Dank im Voraus - Chetaner

War es hilfreich?

Lösung

Wenn Sie das System.io.Ports.Serialport verwenden, glaube ich nicht, dass etwas integriert ist. Sie müssen es selbst codieren.

Gibt es einen Grund, warum Sie nicht einfach das DataRecebed -Ereignis verwenden und die Daten so verarbeiten können, wie sie angezeigt werden?

Dies ist schwierig, da Sie sich mit der Tatsache befassen müssen, dass der Serialport -Listener in einem anderen Thread arbeitet. Sie müssen sich daher möglicherweise um die Sicherheit von Threads kümmern. Sie können jedoch eine globale DateTime -Variable festlegen und in der DataAreceiced -Veranstaltung aktualisieren und dann überprüfen, das in Ihrem Code, um festzustellen, ob die letzten Daten mehr als n Sekunden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top