我正在使用C#的SerialPort類嘗試向設備發送「AT」命令並獲取響應。我已經驗證了它在超級終端中的正常工作,如果我發送了一個「AT」命令,它會迴應「OK」。但是,在我的控制檯應用程序中,如果我發送「AT」,它將回送回「AT」。代碼如下,任何見解,我在我的接收代碼做錯了什麼,將不勝感激:使用SerialPort類讀取連接設備的響應
ComPort.DataReceived += new SerialDataReceivedEventHandler(ComPort_DataReceived);
public void Open()
{
Console.WriteLine();
//close port if already open.
if (ComPort.IsOpen)
{
ComPort.Close();
}
//setup port.
ComPort.PortName = ConfigurationManager.AppSettings["PortName"].ToString();
ComPort.BaudRate = Convert.ToInt32(ConfigurationManager.AppSettings["BaudRate"]);
ComPort.Parity = Parity.None;
ComPort.StopBits = StopBits.One;
ComPort.DataBits = 8;
ComPort.DtrEnable = true;
ComPort.RtsEnable = true;
if (Convert.ToBoolean(ConfigurationManager.AppSettings["HWFlowControlEnabled"]))
{
ComPort.Handshake = Handshake.RequestToSend;
}
//open port.
Console.WriteLine("Opening port " + ComPort.PortName + "...");
ComPort.Open();
Console.WriteLine("Opened port " + ComPort.PortName);
}
void ComPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
string message = ComPort.ReadExisting();
Console.WriteLine("RECEIVED: " + message);
if (message.IndexOf("OK") > -1)
{
ReceivedOK = true;
}
}
感謝您的迴應,但沒有奏效。它回擊ATE0,然後以兩行發送AT(「A」然後「T」)。超級終端會在幕後發送此命令嗎?如果沒有,那麼爲什麼我需要從我的程序發送這個命令,但它在HT中沒有這個命令就可以工作? – Justin 2010-09-07 19:49:55
得到它的工作,我沒有添加\ n \ r的命令,因爲我寫他們到港口。 – Justin 2010-09-07 20:26:21
\ n \ r是否停止沒有ATE0的回聲?我認爲編劇像hypertermianal發送,連接到港口。 – Decker97 2010-09-08 04:49:55