我正在使用串口创建发送/接收消息的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
}