2011-04-28 88 views
5

我正在使用SerialPort類與外部設備進行通信。我以每秒300波特的速度開始通信,但是在初始「握手」之後,我必須切換到設備指定的波特率(通常爲9600 Bps)。連接打開時更改SerialPort的BaudRate

我試圖在增加波特率後繼續通信,但我不知道爲什麼,我一直沒有成功。這使我想到了我的問題:改變波特率的正確方法是什麼?可以在連接打開時完成,還是應該先關閉連接?

我一直無法找到這個文件中的任何信息......

我曾經嘗試都在兩種方式,這讓我覺得我一定是缺少明顯的東西都沒有成功。

+0

你的意思是不成功,究竟是什麼意思?您是否嘗試過(如果可能)先使用終端進行通信? – Groo 2011-04-28 07:10:35

+0

@格魯:謝謝你的幫助我設法使它工作。事實證明,我所缺少的是在發送ACK和用不同的BaudRate重新打開端口之間的等待時間。它現在有效。 – 2011-04-28 07:13:01

回答

4

事實證明,您可以在打開時更改SerialPort.BaudRate。但在@Groo回答中提到的SerialPort.DiscardInBuffer是一個很好的提示!

+0

你能解釋一下你是如何得到這個更詳細的工作?請參閱http://stackoverflow.com/questions/8852611/changing-the-speed-on-an-open-serial-port – 2012-01-13 15:33:30

9

從我迄今爲止的經驗來看,最安全的選擇是先關閉連接,更改速率,然後再打開它。您的設備不會介意這一點,因爲它可能會等待您發送一些控制字符以確保速度已更改。

您可以嘗試更改端口打開時的波特率,但這可能會導致緩衝區中檢測到無效字符(取決於設備和協議),這意味着您應該在更改(使用SerialPort.DiscardInBuffer)。