7

我想知道是否有办法在你初始化类并设置它的值Baud Rate时获取它的连接时间。让我试着解释一下原因……RS232 port
BEFORESerialPort

今天,我正在使用两种不同的RFID Reader设备,每个设备都在不同的设备上工作BaudRate,所以如果我baudrate在创建SerialPort类时设置错误,它会读取卡 id 全部错误,而不是获取真实卡的 id,它会得到一些东西喜欢????|W2???
此外,该设备也有可能具有USB端口。

这就是为什么我想baud rate在实例化SerialPort类之前知道设备的原因。

4

2 回答 2

5

我尝试了我的串行 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;
        }
    }
于 2013-05-16T14:52:21.933 回答
5

根据您连接的详细信息等。您可以遍历波特率列表,尝试连接,然后执行回声测试。如果您以错误的速率连接,您的回声将作为垃圾返回,而不是您发送的字符串。这种方法对我有用。

于 2016-08-22T15:46:38.943 回答