0

AT コマンドをシリアル ポート経由で送信する簡単なプログラムを作成しました。MSDNの例の指示に従いました

シリアルポート (38400、N、8、1)

serialPort1.PortName = "COM" + "5";// textBox1.Text;
        try
        {
            if (!(serialPort1.IsOpen))
                serialPort1.Open();


            // if (listBox1.SelectedIndex == 0 || listBox1.SelectedIndex == 1)
                serialPort1.WriteLine("atrst");
            // else
            //     serialPort1.WriteLine("araprst");

            serialPort1.Close();
        }
        catch (Exception ex)
        {
            MessageBox.Show("Error opening/writing to serial port :: " + ex.Message, "Error!");
            Application.Exit();
        }

WriteLine コマンドを使用すると、AT コマンドがポートに送信されないことがあります。理由は何ですか?, WriteLine(String) が失敗したことを知る方法はありますか?

4

1 に答える 1

0

あなたが説明したことにはいくつかの原因があり、そのMSDNの記事には...興味深い...コードがあります。あなたのコード スニペットから、シリアル ポートを適切に設定していないことがわかります。そのため、指定した設定で実際の例を投稿し、それが役立つことを願っています。

serialPort = new SerialPort(
                "COM5",      // port name
                38400,       // baud rate
                Parity.None, // parity
                8,           // bits
                StopBits.One // stop bits
            );

serialPort.Handshake = Handshake.None;
serialPort.WriteTimeout = 500;

serialPort.Open();
serialPort.Write("atrst");
serialPort.Close();

これは非常に基本的なアプローチであり、エラー処理は含まれていませんが、指定した設定のシリアル デバイスで機能します。ハンドシェイクが間違っていない限り、高いボーレートを考えると、かなり可能性があり、調査する必要があります。

于 2013-02-10T21:34:04.383 に答える