我試過我的串行USB設備。不斷更改波特率並檢查。 ComboBox包含一系列可能的波特率。
public void initConfig(SerialPort serialPort)
{
// you can assign these values in a combo box
string[] ports= "{COM1", "COM2", "COM3", "COM4", "COM5", "COM6", "COM7", "COM8"};
//you can assign these values in a combo box in a string format
int[] baudRate = { 4800, 9600, 19200, 38400, 57600, 115200, 230400 };
serialPort.PortName = ports[0]; //else get from combobox : portCombobox.SelectedItem
serialPort.BaudRate = baudRate[0];
//serialPort.BaudRate = Int32.Parse(speedComboBox.SelectedItem.ToString());
//you can have controls to store and change these values if required
serialPort.Handshake = System.IO.Ports.Handshake.None;
serialPort.Parity = System.IO.Ports.Parity.None;
serialPort.DataBits = 8;
serialPort.StopBits = System.IO.Ports.StopBits.One;
serialPort.ReadTimeout = 200;
serialPort.WriteTimeout = 50;
}
將字符串更改爲相應的類型並調用打開。
最後:
public void callingMethod() //or your connect event attached control
{
SerialPort serialPort = new SerialPort();
initConfig(serialPort);
try
{
serialPort.Open();
}
catch
{
MessageBox.Show("Error: Unable to Open the serial interface !");
return;
}
}
你知道你的程序支持哪些波特率和設備。你希望當你請求某些信息時你期待着。邏輯解決方案是使用一個波特率連接到設備,檢查請求的數據是否正確,以及它是否斷開連接並嘗試另一個波特率。無法從串行設備「請求」頻段速率。 –
@Rhhound你可以發佈這個答案。 –
@Ramhound嗯......我有2個不同的設備,一個工作在'9600'上,另一個工作在'19200'上,但是我不能創建一個應用程序,我必須根據用戶設備的配置改變它的值... 你懂 ? 但我怎麼能這樣做?據我所知,當讀取「RFID卡」時,我將能夠測試數據。你能給我一些理想的解決辦法嗎?謝謝 ! – PlayHardGoPro