7

クラスを初期化して値を設定するとBaud Rate、接続されているときに取得する方法があるかどうかを知りたいです。その理由を説明しようと思います...RS232 port
BEFORESerialPort

今日、私は 2 つの異なるRFID Readerデバイスで作業しており、それぞれが異なる で動作します。そのため、クラスを作成するときにBaudRate間違った設定をすると、カード ID がすべて間違って読み取られ、代わりに実際のカードの ID が取得され、何かが取得されます。のように。 また、デバイスにポートがある可能性もあります。baudrateSerialPort????|W2???
USB

そのため、クラスbaud rateをインスタンス化する前にデバイスを知りたいのです。SerialPort

4

2 に答える 2

5

接続先などの詳細に応じて、ボーレートのリストをループし、接続を試みてからエコーテストを実行できます。間違った速度で接続すると、送信した文字列ではなく、エコーがガベージとして返されます。この方法論は私のために働いています。

于 2016-08-22T15:46:38.943 に答える
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 に答える