Domanda

Sto usando classe SerialPort per comunicare con un dispositivo esterno. Inizio la comunicazione a 300 baud al secondo tuttavia dopo il "handshake" iniziale devo passare ad una velocità di trasmissione specificato dal dispositivo (di solito 9600 bps).

Ho avuto successo nei miei tentativi di continuare a comunicare dopo ho aumentare velocità di trasmissione ma non sono sicuro perché. Questo mi porta alla mia domanda: Qual è il modo corretto di cambiare la velocità di trasmissione? Può essere fatto mentre la connessione è aperta, o dovrei chiudere la connessione prima?

Sono stato in grado di trovare tutte le informazioni su questo nella documentazione ...

Ho provato entrambi e non hanno avuto successo in entrambi i modi, il che mi ha fatto pensare che devo mancare qualcosa di ovvio.

È stato utile?

Soluzione 2

Si scopre che si può cambiare SerialPort.BaudRate mentre è aperto. Ma la SerialPort.DiscardInBuffer menzionato nella risposta da @Groo è una buona mancia!

Altri suggerimenti

Dalla mia esperienza fino ad ora, la scommessa più sicura è quella di chiudere la connessione prima, cambiare la velocità, e quindi aprirlo di nuovo. Il tuo dispositivo non mente questo, come probabilmente attende l'invio di alcuni caratteri di controllo per assicurarsi che la velocità è stata modificata.

È possibile provare a modificare la velocità di trasmissione, mentre la porta è aperta, ma puo causare caratteri non validi rilevati nel buffer (a seconda del dispositivo e il protocollo), il che significa che dovrebbe anche cancellare i buffer immediatamente dopo la modifica (utilizzando SerialPort.DiscardInBuffer() ).

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