展开全部
如果你使用的是底层api的话
可以起一个新线程,用于监听串口
同时使用ClearCommError查询串口是否有数据到来
具体步骤如下:
1、创建一个异步读/写的串口
HANDLE m_hComm;
m_hComm=CreateFile( m_port, GENERIC_READ |GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED,NULL);
m_port为端口号
FILE_FLAG_OVERLAPPED是关键
2、配置串口:包括超时、DCB、读写缓冲区
3、启动新线程
CWinThread* m_pCommThread;
m_pCommThread=AfxBeginThread(ThreadComm,pInfo,THREAD_PRIORITY_NORMAL,0,0); //开启串口线程
ThreadComm为线程回调函数
pInfo 为封装有所有要向线程传递的参数的结构体(类)指针
4、在线程回调函数中
循环查询串口是否有数据到来
DWORD dwError //串口错误码
COMSTAT cs; //串口状态结构体
while(pDoc->IsSerailOpen() //串口处于打开状态下)
{
ClearCommError(hComm,&dwError,&cs);
//调用ClearCommError,如果串口有数据到来,即串口读缓冲区中有数据
//则串口读缓冲区中的数据长度将存入cs.cbInQue变量(unsigned long型)
//如串口读缓冲区中无数据,则cs.cbInQue为0
//对cs.cbInQue作判断即可得知串口是否收到数据。
if(cs.cbInQue)
{
//串口有数据到来,进行处理
//一般是通过发送自定义消息的方式,交由新的消息响应函数去处理
}
}
以上的代码是我曾经一个项目的部分代码,篇幅原因略去了一些代码
另外给你一个链接,你可以参考一下
http://hi.baidu.com/xtxycy/blog/item/66827a7766637813b051b9ee.html
可以起一个新线程,用于监听串口
同时使用ClearCommError查询串口是否有数据到来
具体步骤如下:
1、创建一个异步读/写的串口
HANDLE m_hComm;
m_hComm=CreateFile( m_port, GENERIC_READ |GENERIC_WRITE,FILE_SHARE_READ|FILE_SHARE_WRITE,NULL, OPEN_EXISTING, FILE_FLAG_OVERLAPPED,NULL);
m_port为端口号
FILE_FLAG_OVERLAPPED是关键
2、配置串口:包括超时、DCB、读写缓冲区
3、启动新线程
CWinThread* m_pCommThread;
m_pCommThread=AfxBeginThread(ThreadComm,pInfo,THREAD_PRIORITY_NORMAL,0,0); //开启串口线程
ThreadComm为线程回调函数
pInfo 为封装有所有要向线程传递的参数的结构体(类)指针
4、在线程回调函数中
循环查询串口是否有数据到来
DWORD dwError //串口错误码
COMSTAT cs; //串口状态结构体
while(pDoc->IsSerailOpen() //串口处于打开状态下)
{
ClearCommError(hComm,&dwError,&cs);
//调用ClearCommError,如果串口有数据到来,即串口读缓冲区中有数据
//则串口读缓冲区中的数据长度将存入cs.cbInQue变量(unsigned long型)
//如串口读缓冲区中无数据,则cs.cbInQue为0
//对cs.cbInQue作判断即可得知串口是否收到数据。
if(cs.cbInQue)
{
//串口有数据到来,进行处理
//一般是通过发送自定义消息的方式,交由新的消息响应函数去处理
}
}
以上的代码是我曾经一个项目的部分代码,篇幅原因略去了一些代码
另外给你一个链接,你可以参考一下
http://hi.baidu.com/xtxycy/blog/item/66827a7766637813b051b9ee.html
展开全部
开一个线程专门读取
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
利用mscomm控件,在其OnComm函数中进行响应
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
同意 2 楼的
利用mscomm控件,在其OnComm函数中进行响应
建议 看看 龚建伟 的 书,入门级 的 很不错 的
祝你顺利
利用mscomm控件,在其OnComm函数中进行响应
建议 看看 龚建伟 的 书,入门级 的 很不错 的
祝你顺利
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询