2017-08-24 63 views
-1

我使用C#/ .NET將重量從磅秤顯示到TextBox中。如何自動獲取通過串口連接的稱重秤的配置?

由於串口連接,此秤可以連接到我的電腦。

爲了達到這個目的,我參考了this post

我的問題:

當我創造,我需要在此之前,聲明一些常量一個新的串行端口連接:

_serialPort = new SerialPort(portName, BaudRate, Parity.None, DataBits, StopBits.One); 

這裏有我需要聲明的常量:

private const int BaudRate = 9600; 
private const int DataBits = 8; 

但是BaudRateDataBits值取決於稱重秤的配置。所以每次我更換稱重秤時,重量都不會很好地顯示出來。

我的問題:

我怎麼能自動檢測秤配置,以良好,沒有手動更改常量值顯示的權重?

+0

你可能會發現你的答案[這裏](https://stackoverflow.com/questions/45647659/how-to-detect-baud-rate-from-data-in-serial-port)。希望這有助於 – Rex

+0

我沒有找到答案,但感謝您的幫助。 – RyanU

回答

1

據我所知,沒有提供從您嘗試與之通信的端點檢測SerialPort BaudRate和DataBits的方法。您可能最好在用戶界面上爲用戶提供SerialPort選項。

如果你真的想自動檢測,呃......一個隨機的瘋狂想法:如果你有點意識到你的數據格式(例如,總是一個字符串中的浮點數,例如「56.12」)請嘗試:在SerialPort中測試每個可能的波特率和數據位組合,直到在SerialPort上讀取的數據具有預期的格式(使用Regex或Parse,也許?)。這可能需要一些時間,但這是一次性操作,所以這可能是您需要的。

注意:最好使用ReadByte或ReadExisting,因爲ReadLine不會工作,直到你得到一個換行符(這將在錯誤的波特率/數據位上隨機發生)。

+0

感謝您的回答。我想到了這樣一個想法,我會盡力實現它。 – RyanU

1

如何自動檢測秤的配置...?

你不能,因爲沒有可靠的軟件技術從現場串行鏈路中獲取波特率和幀參數。
這就是爲什麼串口已經從PC上消失的原因,這些PC需要用戶友好的界面。
我見過的用於自動檢測波特率的方案取決於遠程單元傳輸單個已知字符的流。

解決您的難題的方法是手動將每個設備配置爲通用波特率和幀配置。
然後你的程序將總是使用那個串口配置。
設備將具有默認的串行端口配置,但對於大多數情況下它不是固定的,可以重新配置。舊設備用於此目的具有DIP開關,但低成本LCD屏幕和NV存儲器是現代接口和存儲方法。

+0

感謝您的回答,現在更清晰。 – RyanU

相關問題