2

シリアル ポート経由で Bluetooth モジュールと通信するためのシリアル ポート アプリを作成しています。デバイスに送信した最初のAtコマンドは正常に実行され、モジュール バージョンの応答が返されます。後続のすべてのコマンドは、ERROR の応答で失敗します。

コードの一部は次のとおりです。

namespace PhoneApp
{
    public partial class Form1 : Form
    {
        //SerialPort myport = OPenPort.OpenIt();
        SerialPort myport = new SerialPort();


        public Form1()
        {
            InitializeComponent();
            myport.PortName = "COM3";
            myport.BaudRate = 115200;
            myport.Parity = Parity.None;
            myport.DataBits = 8;
            myport.StopBits = StopBits.One;
            myport.NewLine = System.Environment.NewLine;
            myport.ReadTimeout = 500;
            myport.WriteTimeout = 500;
            myport.DtrEnable = false;
            myport.RtsEnable = false;
            myport.WriteBufferSize = 4096;
            myport.ReadBufferSize = 4096;
            myport.Handshake = Handshake.None;
            myport.Encoding = System.Text.Encoding.ASCII;

            if (!myport.IsOpen)
            {                
                myport.Open();
            }

            calling.Visible = false;
            myport.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);
            mycommand.Text = @"AT+BGVER";     

コマンドを送信するボタン。デバイスには、各コマンドの後に改行が必要です。

private void button2_Click(object sender, EventArgs e)
{
    try
    {               
        myport.WriteLine(mycommand.Text.Trim());
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

ここで何が欠けているのかわかりません。

4

2 に答える 2

1

返信ありがとうございます。私は問題を見つけました。実際、myport.WriteLine の代わりに myport.Write を使用する必要がありました。行 myport.NewLine を削除し、すべてのコマンドに「\r」を追加しました。これで、デバイスは期待どおりに応答します。DTR と RTS に関しては、ベンダーによるとデバイスには必要ありません

于 2013-03-06T00:46:22.443 に答える
0

これで問題が解決するかどうかわかりませんが、フロー制御が有効になっていないことに気付きました (例: myport.RtsEnable = false; myport.DtrEnable = false;)。

ドキュメントをチェックして、Bluetooth モジュールがそれを必要としないことを確認しましたか? 通常、115kbps 以上のデバイスにはフロー制御が必要です。

もう 1 つ確認する必要があるのは、NewLine 定数です。おそらくCr + Lfであるsysデフォルトに設定します。モジュールがそれを期待していることを確認してください。

于 2013-03-05T18:35:51.330 に答える