Qualsiasi evento in C # .Net che mi comunica i dati della porta seriale L'evento ricevuto ha interrotto la ricezione dei dati

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

  •  05-07-2019
  •  | 
  •  

Domanda

Sto lavorando su un'implementazione della porta seriale in C #. Sto ottenendo i dati da SerialPort e li sto aggiungendo al tipo di raccolta della coda (dichiarato globalmente). Sto usando il thread BackgroundWorker per elaborare i dati in coda. Il problema è che. Se la porta seriale si interrompe Invio di dati e dati Arresto ricevuto Ricezione di dati Restano ancora alcuni dati nella mia coda che richiedono l'elaborazione. C'è un modo che mi dica che non ci sono dati provenienti da SerialPort o in altre parole Port_dataReceived non riceve più dati. In modo che io possa elaborare qualunque dato ci sia in coda. Perché questa volta sarò sicuro che non ci saranno dati provenienti dalla porta seriale ora e qualunque siano i dati nella coda sono gli ultimi dati rimanenti da elaborare. Grazie in anticipo - Chetan

È stato utile?

Soluzione

Se stai usando System.IO.Ports.SerialPort, allora non credo che ci sia qualcosa incorporato. Dovresti codificarlo tu stesso.

C'è un motivo per cui non puoi semplicemente utilizzare l'evento DataReceived ed elaborare i dati non appena arrivano?

Questo è complicato perché devi affrontare il fatto che il listener SerialPort funziona su un thread diverso, quindi potresti doverti preoccupare della sicurezza del thread, ma potresti impostare una variabile DateTime globale e aggiornarla nell'evento DataReceived, e poi controlla che nel tuo codice per vedere se l'ultima volta che i dati sono stati ricevuti sono stati più di n secondi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top