深入浅出vc++串口编程之第三方类

深入浅出vc++串口编程之第三方类

ID:14187121

大小:104.50 KB

页数:14页

时间:2018-07-26

深入浅出vc++串口编程之第三方类_第1页
深入浅出vc++串口编程之第三方类_第2页
深入浅出vc++串口编程之第三方类_第3页
深入浅出vc++串口编程之第三方类_第4页
深入浅出vc++串口编程之第三方类_第5页
资源描述:

《深入浅出vc++串口编程之第三方类》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、深入浅出VC++串口编程之第三方类串口类从本系列文章可以看出,与通过WIN32API进行串口访问相比,通过MScomm这个Activex控件进行串口访问要来的方便许多,它基本上可以向用户屏蔽多线程的细节,以事件(发出OnComm消息)方式实现串口的异步访问。尽管如此,MScomm控件的使用仍有诸多不便,譬如其发送和接收数据都要进行VARIANT类型对象与字符串的转化等。因此,国内外许多优秀的程序员自己编写了一些串口类,使用这些类,我们将可以更方便的操作串口。在笔者的《深入浅出Win32多线程程序设计之综合实例》(网址:http://dev.

2、yesky.com)一文中,曾向读者展示了由RemonSpekreijse编写的CSerialPort串口类,而本文将向您展示由程序员llbird编写的cnComm(中国串口?)串口类。llbird是一位优秀的程序员,他的代码风格简洁而紧凑,类的声明和实现都被定义在一个头文件中,使用这个类的朋友只需要在工程中包含这一头文件即可:/*CommBaseLibrary(WIN98/NT/2000)ver1.1Compileby:BC++5;C++BUILDER4,5,6,X;VC++5,6;VC.NET;GCC;copyright(c)2004.

3、5-2005.8llbirdwushaojian@21cn.com*/#ifndef_CN_COMM_H_#define_CN_COMM_H_#pragmawarning(disable:4530)#pragmawarning(disable:4786)#pragmawarning(disable:4800)#include#include#include//送到窗口的消息WPARAM端口号#defineON_COM_RECEIVEWM_USER+618#defineON_COM_

4、CTSWM_USER+619//LPARAM1valid#defineON_COM_DSRWM_USER+621//LPARAM1valid#defineON_COM_RINGWM_USER+623#defineON_COM_RLSDWM_USER+624#defineON_COM_BREAKWM_USER+625#defineON_COM_TXEMPTYWM_USER+626#defineON_COM_ERRORWM_USER+627//LPARAMsaveErrorID#defineDEFAULT_COM_MASK_EVENTEV_RX

5、CHAR

6、EV_ERR

7、EV_CTS

8、EV_DSR

9、EV_BREAK

10、EV_TXEMPTY

11、EV_RING

12、EV_RLSDclasscnComm{ public: //------------------------------Construction----------------------------------- //第1个参数为是否在打开串口时启动监视线程,第2个参数为IO方式阻塞方式(0)/异步重叠方式(默认) cnComm(boolfAutoBeginThread=true,DWORDdwIOMode=FILE_FLAG_OV

13、ERLAPPED):_dwIOMode(dwIOMode),_fAutoBeginThread(fAutoBeginThread) {  Init(); } virtual~cnComm() {  Close();  UnInit(); } //----------------------------------Attributes---------------------------------- //判断串口是否打开 inlineboolIsOpen() {  return_hCommHandle!=INVALID_HANDLE_VAL

14、UE; } //判断串口是否打开 operatorbool() {  return_hCommHandle!=INVALID_HANDLE_VALUE; } //获得串口句炳 inlineHANDLEGetHandle() {  return_hCommHandle; } //获得串口句炳 operatorHANDLE() {  return_hCommHandle; } //获得串口参数DCB DCB*GetState() {  returnIsOpen()&&::GetCommState(_hCommHandle,&_DCB)==TRU

15、E?  &_DCB:NULL; } //设置串口参数DCB boolSetState(DCB*pdcb=NULL) {  returnIsOpen()?::SetCommStat

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。