如何为串口创建传入消息的侦听器

时间:2016-06-02 12:56:48

标签: serial-port at-command sendmessage

我正在使用串口创建发送/接收消息的Windows窗体应用程序。我可以使用AT Commnads发送或接收消息。我想要一个传入消息的监听器,我使用了Port DataReceived Event。当一条消息到来时,端口DataReceived事件引发并在port_DataReceived方法中我获取端口上的数据并查找它是否是新消息。如果是MessageReceived的新消息调用,我想显示新收到的消息。 问题是我发送AT + CMGL =“REC UNREAD”命令。它是对端口的响应写入,再次调用port_DataReceived,它会创建一个无限循环。如何解决这个问题呢。

 public void port_DataReceived(object sender, SerialDataReceivedEventArgs e)
    {
        try
        {
            if (e.EventType == SerialData.Chars)
            {
                SerialPort sp = (SerialPort)sender;
                string buffer = sp.ReadExisting();
                if (buffer.Contains("+CMTI"))
                {
                    MessageReceived(sp);
                }
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }

    public void MessageReceived(SerialPort Port)
    {
         //get the newly received message
    }

0 个答案:

没有答案