首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网络技术 > 网络协议 >

串口短信接收事件有关问题

2012-02-22 
串口短信接收事件问题各位前辈,小弟这几天刚接触短信猫,了解到有一个短信到达事件(AT+CNMI1,1,0,2,1),于

串口短信接收事件问题

各位前辈,小弟这几天刚接触短信猫,了解到有一个短信到达事件(AT+CNMI=1,1,0,2,1),于是我想写两个线程。
1. 发送短信线程,伪码如下:
gsmSendMessage()
{
WriteComm(cmd, strlen(cmd)); // 先输出命令串
nLength = ReadComm(ans, 128); // 读应答数据
// 根据能否找到"\r\n> "决定成功与否
if (nLength == 4 && strncmp(ans, "\r\n> ", 4) == 0)
{
WriteComm(pdu, strlen(pdu)); // 得到肯定回答,继续输出PDU 串
nLength = ReadComm(ans, 128); // 读应答数据
// 根据能否找到"+CMS ERROR"决定成功与否
if (nLength > 0 && strncmp(ans, "+CMS ERROR", 10) != 0)
{
return TRUE;
}
}
}

2.接收短信线程,伪码如下:
gsmReadMessage()
{
SetCommMask(_hCommHandle, _dwMaskEvent);//设置关注的事件
if (!::WaitCommEvent(_hCommHandle, &dwMask, &_WaitOverlapped))
{
if (::GetLastError() == ERROR_IO_PENDING)
// asynchronous
::GetOverlappedResult(_hCommHandle, &_WaitOverlapped,&dwLength, TRUE);
else
continue;
}
}

但是有一个问题一直没有想清楚,因为发送短信后要调用ReadComm读应答数据,判断是否发送成功,那么应答数据会不会被接收线程的WaitCommEvent()得到?反过来,如果是有新短信到达,会不会被发送线程ReadComm读取了?请问各位前辈是如何处理这两类事件?


[解决办法]
会的
用消息或者回调函数

热点排行