我正在使用C#的SerialPort类尝试向设备发送“AT”命令并获得响应。我已经验证它在超级终端中正常工作,如果我发送“AT”命令,它会以“OK”回复。但是,在我的控制台应用程序中,如果我发送“AT”,它会以回显“AT”回复。代码如下,对我在接收代码中出错的任何见解都将非常感激:
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;
}
}
答案 0 :(得分:1)
我认为默认是将命令回显给你,然后确定。首先发送ATE0以关闭回声:
http://tigger.cc.uic.edu/depts/accc/network/dialin/modem_codes.html
答案 1 :(得分:0)
默认情况下,设备(我猜的调制解调器)配置为回显所有通信。有AT命令可以打开和关闭回声。此外,存在若干硬件信令方法来控制数据流。请查看here以获取基本概述。
自从我进行调制解调器通信以来已经有一段时间了(实际上是10年),所以如果我的答案不是100%精确的话,我很抱歉。