欢迎来到天天文库
浏览记录
ID:24489340
大小:54.00 KB
页数:4页
时间:2018-11-15
《windows ce下串口通信》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、WindowsCE下串口通信 网上已经有CE下串口通信的文章了。我之所以发表同样内容的文章是因为我的文章是一系列的,不会因为别人写过我就不写了。另外我对串口通信有着自己的观点。 现在大多数的笔记本电脑都没有外置串口,这不奇怪,因为有更快更稳定的接口代替了串口。不过基于TIMEOUTS mTimeouts; GetmTimeouts(m_hSerial,mTimeouts); mTimeouts.ReadIntervalTimeout=MAXDultiplier=10; mTimeouts.ReadTotalTimeo
2、utConstant=10; mTimeouts.ultiplier=50; mTimeouts.ultiplier乘以要发送的字符数加上eoutConstant。单位是毫秒。读操作的超时和写类似。所以设置超时是一个关键。设置太小可能丢失数据。 二、关闭串口 关闭串口用关闭句柄函数。if(hSerial!=NULL) { CloseHandle(hSerial); hSerial=NULL;}三、向串口发送数据p;Byte, //数据缓冲区地址 nByte, //数据大小 dB
3、ytes, //返回发送出去的字节数 NULL //不支持重叠); 向串口发送数据一般都会成功。需要注意的是如果终端设备需要一定处理时间或者称反应时间的话,那么两个写操作之间一定要注意时间间隔不能太小。具体的时间由终端设备的反应时间和缓冲区大小有关。 四、读取串口数据 串口麻烦就麻烦在读取数据上。除了考虑及时的读取数据外,还要解决接收到的数据的处理工作。如果在读取串口数据的线程中安置数据处理工作,那么可能会丢失数据(终端设备发送数据但是没收到),也有可能不会丢失(终端设备发送的数据的时间、大小都是确定的)
4、。如果肯定接收的数据在处理工作结束后终端设备才发送数据,那么完全可以将数据处理工作放在读取串口的线程中。对于及时的读取数据,下面提供了一种解决办法:***假设接收的都是字符***UINT ReadThread(LPVOI12下一页——感谢阅读这篇文章,..,DpParam)?////接收串口数据线程{ HANDLE hPort=*(HANDLE*)pParam; BYTE Byte; int iCounter=0; Dask(hPort,EV_RXCHAR); ///只接收字符 Status; a
5、sk(hPort,EV_RXCHAR);///重新设置要等待的信号 ////接收数据 do { ReadFile(hPort,Byte,1,dp=nep==NULL) { ///L内存不足,接收串口数据线程关闭; return-1; } memcpy(pTmp,ReceiveBuf,iCounter); pTmp[iCounter]=NULL; ////字符串结尾 ////////创建新
6、线程处理数据 ////在ProcessData函数中处理数据。别忘了delete[]pTmp; AfxBeginThread(ProcessData,pTmp); iCounter=0; ////清空计数器 }///////endwhile return0;}上一页12——感谢阅读这篇文章,..,
此文档下载收益归作者所有