2013-03-05 42 views
2

我正在編寫一個串口應用程序,通過串口與藍牙模塊進行通信。我發送給設備的第一個At命令運行正常,我得到模塊版本的響應。所有後續的命令都會失敗並返回ERROR。代碼的SerialPort First Command OK。第二個命令錯誤

部分是在這裏:

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); 
    } 
} 

不知道我在這裏錯過了什麼。

+0

您可以使用終端程序與設備通信嗎? – dbasnett 2013-03-05 19:35:46

回答

1

感謝您的回覆。我發現了這個問題。事實上,我不得不使用myport.Write而不是myport.WriteLine。我刪除了myport.NewLine這一行,並在每個命令後加了「\ r」。現在該設備按預期做出響應。至於DTR和RTS,根據供應商的要求,不需要設備

+0

或者你可以設置'.NewLine =「\ r」;'並繼續使用'.WriteLine' – AngryHacker 2013-03-06 18:11:26

0

不知道這是否解決了您的問題,但我注意到您沒有啓用流量控制(例如myport.RtsEnable = false; myport.DtrEnable = false;)。

您是否檢查了文檔以確保藍牙模塊不需要它?通常115kbps或更高的設備需要流量控制。

另一件要檢查的是NewLine常量。您將其設置爲可能爲Cr + Lf的sys默認值。確保模塊預期。

+0

我同意DTR應該打開,但RTS依賴於設備。試試看看。 – dbasnett 2013-03-05 19:34:48

+0

感謝您的回覆。我發現了這個問題。事實上,我不得不使用myport.Write而不是myport.WriteLine。我刪除了myport.NewLine這一行,並在每個命令後加了「\ r」。現在該設備按預期做出響應。至於DTR和RTS,根據供應商的不同,設備不需要它們。 – 2013-03-06 00:44:33