欢迎来到天天文库
浏览记录
ID:37241398
大小:92.62 KB
页数:19页
时间:2019-05-20
《WindowsCE下的串口通讯类说明》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、VC学习:WindowsCE下的串口通讯类副标题�作者�未知文章来源�不详点击数�21更新时间�2004-11-7串行通讯是目前计算机、通信和控制领域最基本的通信方式。在CSDN的“嵌入式开发/WINCE”社区中�经常有人提问该到哪找串口通讯类�其实这个问题我自己也问过。:)而一般的回答是给你提供一个PocketPC2002的SDK例子程序。但到底SDK的程序和MFC的结构有很大的不同�对于想用MFC编写通信程序的人来说也不是很便利。另一方面�由于WindowsCE是一个基于Unicode的操作系统�并且WindowsCE不支持Windows下常用的串行通信重叠I/
2、O方式�OVERLAPPED��因此编写WindowsCE下的串口通讯类有一些与桌面Windows不同的地方。以下是我从SDK程序改写而来的MFC类�希望能和致力于WINCE开发的朋友多多交流�由于本人才疏学浅�程序中有许多不完善的地方�请大家指正。我的程序是基于“主动发送请求�被动接收响应”的假设�因此我只设置了一个接收数据的线程。如果有朋友能提供有独立发送数据和接收数据线程的类�我将十分感激。我的E_mail�zhenxizhou@elong.com。感谢“嵌入式开发/WINCE”社区为我提供SDK例子的朋友�感谢CSDN上所有热心的朋友�祝愿中国的软硬件水平能
3、早日挤身世界一流。头文件Serial.h//Serial.h:interfacefortheCSerialclass.///////////////////////////////#if!defined(AFX_SERIAL_H__59575586_AAA9_4FEF_B2A7_E089553698EF__INCLUDED_)#defineAFX_SERIAL_H__59575586_AAA9_4FEF_B2A7_E089553698EF__INCLUDED_#if_MSC_VER>1000#pragmaonce#endif//_MSC_VER>1000DWORDW
4、INAPIReadPortThread(LPVOIDlpvoid);//读数据线程classCSerial{public:BOOLInitCommTimeouts();//设置超时参数BOOLInitDCB();//配置串口BOOLm_bConnected;BOOLClosePort(HANDLEhCommPort);//关闭串口DWORDWritePort(TCHAR*buf,DWORDdwBytesToWrite);//写数据BOOLOpenPort(LPTSTRlpszPortName);//打开串口CSerial();HANDLEhReadThread;vi
5、rtual~CSerial();};#endif//!defined(AFX_SERIAL_H__59575586_AAA9_4FEF_B2A7_E089553698EF__INCLUDED_)源文件�Serial.cpp//Serial.cpp:implementationoftheCSerialclass.///////////////////#include"stdafx.h"#include"Serial.h"#ifdef_DEBUG#undefTHIS_FILEstaticcharTHIS_FILE[]=__FILE__;#definenewDEBUG_N
6、EW#endifHANDLEhPort;CStringstrInChar;////////////////////////////////////////////Construction/Destruction/////////////////////////////////////////CSerial::CSerial(){}CSerial::~CSerial(){if(hPort!=INVALID_HANDLE_VALUE)ClosePort(hPort);}BOOLCSerial::OpenPort(LPTSTRlpszPortName){DWORDdwEr
7、ror,dwThreadID;if(hPort){returnFALSE;}//打开串口hPort=CreateFile(lpszPortName,GENERIC_READ
8、GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);//如果打开端口出错,返回FALSEif(hPort==INVALID_HANDLE_VALUE){//不能打开端口CStringstrError;strError.Format(_T("Unabletoopen%s,ErrorNo.=%d"),lpszPortName,GetLastError());Me
此文档下载收益归作者所有