0

我正在使用 C# 的SerialPort类尝试向AT设备发送命令并获得响应。我已经验证它在超级终端中正常工作,如果我发送它的命令,AT它会以OK. 但是,在我的控制台应用程序中,如果我发送AT,它会回复一个 echo 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;
            }
        }
4

2 回答 2

1

我认为默认是将您的命令回显给您,然后确定。先发送一个 ATE0 来关闭回显:

http://tigger.cc.uic.edu/depts/accc/network/dialin/modem_codes.html

于 2010-09-07T19:17:26.807 回答
0

默认情况下,设备(我猜是调制解调器)配置为回显所有通信。有 AT 命令可以打开和关闭回声。此外,存在几种硬件信令方法来控制数据流。在这里查看基本概述。

自从我进行调制解调器通信以来已经有一段时间(实际上 > 10 年),所以如果我的答案不是 100% 准确,我很抱歉。

于 2010-09-07T19:23:42.047 回答