Qualquer evento em C#.NET, que me dizem que o evento serial da porta DataReCeived Pare de receber dados

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

  •  05-07-2019
  •  | 
  •  

Pergunta

Estou trabalhando em uma implementação de porta serial em C#. Estou obtendo dados do Serialport e adiciono esses dados ao tipo de coleção de fila (declarado globalmente). Estou usando o thread BackgroundWorker para processar dados na fila. O problema é que. Se a porta serial parar de enviar dados e dados recebidos, pare de receber dados, ainda haverá alguns dados na minha fila que exigiam processamento. Existe alguma maneira que me diga que não há dados provenientes de Serialport ou, em outras palavras, port_datarecerived pare de receber qualquer dados. Para que eu possa processar todos os dados que existirem na fila. Porque desta vez vou ter certeza de que não haverá dados provenientes da porta serial agora e quaisquer que os dados na fila sejam os últimos dados restantes a serem processados. Desde já, obrigado - Chetan

Foi útil?

Solução

Se você estiver usando o System.io.ports.serialport, não acredito que haja algo incorporado. Você precisaria codificá -lo sozinho.

Existe uma razão pela qual você não pode simplesmente usar o evento DataReecerived e processar os dados à medida que ele entra?

Isso é complicado, porque você precisa lidar com o fato de o ouvinte serialport operar em um tópico diferente; portanto, pode ser necessário se preocupar com a segurança do thread, mas você pode definir uma variável global DateTime e atualizá -la no evento DataReCeived, e depois verificar que em seu código para ver se a última vez que os dados foram recebidos foram mais do que n segundos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top