欢迎来到天天文库
浏览记录
ID:37898286
大小:45.00 KB
页数:12页
时间:2019-06-02
《VC学习:Windows CE下的串口通讯类》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、VC学习:WindowsCE下的串口通讯类文章来源:作者:zhenxizhou/CSDN 串行通讯是目前计算机、通信和控制领域最基本的通信方式。在CSDN的“嵌入式开发/WINCE”社区中,经常有人提问该到哪找串口通讯类,其实这个问题我自己也问过。:)而一般的回答是给你提供一个PocketPC2002的SDK例子程序。但到底SDK的程序和MFC的结构有很大的不同,对于想用MFC编写通信程序的人来说也不是很便利。 另一方面,由于WindowsCE是一个基于Unicode的操作系统,并且WindowsCE不支持Windows下常用的串行通信重叠I/O方式(OVERLAPPED
2、),因此编写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//_MS
4、C_VER>1000 DWORDWINAPIReadPortThread(LPVOIDlpvoid);//读数据线程 classCSerial { public: BOOLInitCommTimeouts();//设置超时参数 BOOLInitDCB();//配置串口 BOOLm_bConnected; BOOLClosePort(HANDLEhCommPort);//关闭串口 DWORDWritePort(TCHAR*buf,DWORDdwBytesToWrite);//写数据 BOOLOpenPort(LPTSTRlps
5、zPortName);//打开串口 CSerial(); HANDLEhReadThread; virtual~CSerial(); }; #endif//!defined(AFX_SERIAL_H__59575586_AAA9_4FEF_B2A7_E089553698EF__INCLUDED_) 源文件:Serial.cpp //Serial.cpp:implementationoftheCSerialclass. // ///////////////// #include"stdafx.h" #include"
6、Serial.h" #ifdef_DEBUG #undefTHIS_FILE staticcharTHIS_FILE[]=__FILE__; #definenewDEBUG_NEW #endif HANDLEhPort; CStringstrInChar; ////////////////////////////////////////// //Construction/Destruction ///////////////////////////////////////// CSerial::CSerial()
7、 { } CSerial::~CSerial() { if(hPort!=INVALID_HANDLE_VALUE) ClosePort(hPort); } BOOLCSerial::OpenPort(LPTSTRlpszPortName) { DWORDdwError, dwThreadID; if(hPort) { returnFALSE; } //打开串口 hPort=CreateF
此文档下载收益归作者所有