- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一种用户友好C串口类设计
一种用户友好的C++串口类设计
摘要:串口通信在装、设备中的应用非常普遍,该文描述了一种基于ActiveX控件MSComm和MFC Library Regular DLL的C++串口类设计,通过精心设计的函数接口和消息机制,大大简化了串口编程。与直接使用MSComm控件相比,采用这种串口类进行编程能够有效的降低串口编程的难度,用户仅仅需要最低限度的关于串口的知识就能写出正常工作的串口程序。
关键词:ActiveX控件;MSComm; MFC Library Regular DLL;Mcomm;客户程序
中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)19-4392-03
串口通信由于成本低,操作方便,可靠性高,传输距离长,应用非常广泛。通过计算机上的串口可以很方便的对装、设备进行参数设置,与设备之间进行数据传输,所以设计具有操作串口功能的计算机程序是十分常见的编程任务。
1 目前Windows操作系统上进行串口编程的四种方法
1)使用微软C运行时库的I/O函数
可采用_inp,_inpw,_inpd,_outp,_outpw,_outpd等函数对串口操作,这些函数可直接对串口芯片进行操作。需要对串口硬件电路的工作原理和时序非常熟悉,才能正确使用它们进行串口的设置、读取以及写入的操作。
2)使用Windows API函数
可采用Windows API中的ReadFile,WriteFile,BuildComDCB,SetCommBreak,SetCommConfig等函数对串口操作。这些函数用法复杂,不易掌握,需要对Windows系统的文件以及设备管理深入了解才能正确使用。
3)采用第三方串口通信类
互联网上有一些源代码开放的第三方串口通信类,比如CSerialPort,cnComm等,采用特定的语言如C++语言编写,并且打包成类(class),内部通过调用Windows API实现对串口的操作。它们突出的优点在于函数接口简单明了,易于编程使用,缺点是仅能供该特定语言的程序员编程使用,而且质量良莠不全,需要认真测试和挑选。
4)使用MFC库附带的ActiveX控件MSComm
这是微软公司提供的用于串口通信控制的ActiveX控件(Microsoft Communication Control)。它支持编译期以图形化的方式来设置串口的属性,它还提供了53个成员函数接口,用户可以通过在程序中调用这些接口来设置串口的属性以及进行串口通信。
从表1中可以看出,编程难度和调试难度的正相关性比较大,这是因为使用的函数越低级,控制的粒度越细,编程和调试的难度和工作量越大。与第三方串口通信类相比,MSComm面向多种语言,所以使用MSComm控件进行编程的情况比较普遍。
然而对于刚刚接触串口编程的用户来说,使用MSComm控件也不容易。首先,该控件接口函数高达53个,短时间不容易弄清楚它们的用法;其次,该控件采用VARIANT类型的接口数据,这种数据结构比较复杂,不易掌握;第三,该控件产生的串口事件是用不同的无符号整数值表示,用户需要查找资料来确定该整数值表示的意义,不够直观。因此在MSComm的基础上进一步简化串口编程就成了本文设定的工作目标。
2 用户友好的串口DLL和C++串口类设计
2.1串口DLL的设计
MSComm控件相当稳定可靠,为本文的设计工作提供了一个稳固的基础。MSComm是一种ActiveX控件,必须将它放置在ActiveX容器中才能工作。对话框是常用的ActiveX容器。为此本文设计了一个对话框类CommCtnr,当在对话框类CommCtnr中插入MSComm控件时,Visual C++开发环境自动替MSComm控件生成代理类CMSComm,该文将CMSComm类的对象作为对话框类CommCtnr的数据成员。
用户可以直接将相关的.cpp和.h文件以及.rc资源文件拷贝到自己的工程目录下,但这种方式显然很不方便。更好的办法是将相关的文件独立编译成一个动态链接库(DLL, Dinamic Link Library),用户只需要调用这个动态链接库就可以进行串口操作。MFC(Microsoft Foundation Class Library)支持两种动态链接库,一种是MFC Library Extension DLL,一种是MFC Library Regular DLL。前者能够将整个C++类作为DLL的外部接口,这样减少了DLL实现的困难,然而要求客户程序使用C++语言编写,并且动态链接MFC库才能够调用这种DLL,这样就大大缩小了它可能的用户群,所以本文不采用这种方式。第二
您可能关注的文档
最近下载
- 养老院门卫管理制度.pdf VIP
- 电力设施保护条例实施细则.pdf VIP
- 统编语文三年级上册第七单元《口语交际:身边的“小事” 》.pptx VIP
- 2024年中央纪委国家监委驻中国邮政集团有限公司招聘笔试参考题库附带答案详解.pdf VIP
- 《大学生创新创业基础》 第六章 市场调查与营销策略.pptx
- 建筑防水工程施工质量监理实施细则hg.doc VIP
- 环境材料概论 课件全套 第1--9章 绪论、吸附材料 ---环境材料的绿色设计.pptx
- 中职英语英语教学计划.docx VIP
- HGT2226-2019普通工业沉淀碳酸钙.pdf VIP
- 3肖仰华-大规模知识图谱构建与应用.pdf VIP
文档评论(0)