Cualquier evento en C # .Net que me diga Datos de puerto serie Detección de evento recibido Recepción de datos

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

  •  05-07-2019
  •  | 
  •  

Pregunta

Estoy trabajando en una implementación de puerto serie en C #. Estoy obteniendo datos de SerialPort y estoy agregando esos datos al tipo de colección de cola (declarada globalmente). Estoy utilizando el hilo de BackgroundWorker para procesar datos en la cola. El problema es ese. Si el puerto serie deja de enviar datos y datos recibidos deja de recibir datos Todavía quedarán algunos datos en mi cola que requirieron procesamiento. ¿Hay alguna forma de decirme que no hay datos provenientes de SerialPort o, en otras palabras, Port_dataReceived se ha detenido para recibir datos? Para poder procesar cualquier dato que esté allí en la cola. Debido a que esta vez estaré seguro de que no habrá ningún dato proveniente del puerto serie ahora y que los datos en la cola son los últimos datos restantes que se procesarán. Gracias por adelantado - Chetan

¿Fue útil?

Solución

Si está utilizando System.IO.Ports.SerialPort, no creo que haya algo incorporado. Deberá codificarlo usted mismo.

¿Hay alguna razón por la que no pueda usar el evento DataReceived y procesar los datos a medida que se producen?

Esto es complicado porque tiene que lidiar con el hecho de que el oyente SerialPort opera en un hilo diferente, por lo que es posible que deba preocuparse por la seguridad del hilo, pero podría establecer una variable global DateTime y actualizarla en el evento DataReceived, y luego verifique que en su código para ver si la última vez que se recibieron datos ha sido de más de n segundos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top