如何获取设备的波特率
本文关键字:波特率 获取 何获取 | 更新日期: 2023-09-27 18:13:49
我想知道是否有一种方法可以在RS232 port
上连接Baud Rate
BEFORE
初始化SerialPort
类并设置它的值。让我试着解释一下原因……
今天,我正在使用两个不同的RFID Reader
设备,每个设备都在不同的BaudRate
上工作,所以如果我在创建SerialPort
类时设置了错误的baudrate
,它将读取卡id全部错误,而不是获得真正的卡的id,它将获得类似????|W2???
的东西。
此外,设备也有可能具有USB
端口。
这就是为什么我想知道设备的baud rate
之前,我实例化SerialPort
类。
我尝试了我的串行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;
}
将字符串转换为各自的类型并调用open.
最后:
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;
}
}
取决于您连接的内容等。您可以遍历波特率列表,尝试连接,然后执行回显测试。如果您以错误的速率连接,您的echo将作为垃圾返回,而不是您发送的字符串。这个方法对我来说很有效。