- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
方法一:使用VC++提供的串行通信控件MSComm 首先,在对话框中创建通信控件,若Control工具栏中缺少该控件,可通过菜单Project – Add to Project – Components and Control插入即可,再将该控件从工具箱中拉到对话框中。此时,你只需要关心控件提供的对 Windows 通讯驱动程序的 API 函数的接口。换句话说,只需要设置和监视MSComm控件的属性和事件。
在ClassWizard中为新创建的通信控件定义成员对象(CMSComm m_Serial),通过该对象便可以对串口属性进行设置,MSComm 控件共有27个属性,这里只介绍其中几个常用属性:
CommPort 设置并返回通讯端口号,缺省为COM1。
Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen 设置并返回通讯端口的状态,也可以打开和关闭端口。
Input 从接收缓冲区返回和删除字符。
Output 向发送缓冲区写一个字符串。
InputLen 设置每次Input读入的字符个数,缺省值为0,表明读取接收缓冲 区中的全部内容。
InBufferCount 返回接收缓冲区中已接收到的字符数,将其置0可以清除接收缓 冲区。
InputMode 定义Input属性获取数据的方式(为0:文本方式;为1:二进制方式)。
RThreshold 和 SThreshold 属性,表示在 OnComm 事件发生之前,接收缓冲区或发送缓冲区中可以接收的字符数。
以下是通过设置控件属性对串口进行初始化的实例:
BOOL CSampleDlg:: PortOpen(){BOOL m_Opened;……m_Serial.SetCommPort(2); // 指定串口号m_Serial.SetSettings(“4800,N,8,1″); // 通信参数设置m_Serial.SetInBufferSize(1024); // 指定接收缓冲区大小m_Serial.SetInBufferCount(0); // 清空接收缓冲区m_Serial.InputMode(1); // 设置数据获取方式m_Serial.SetInputLen(0); // 设置读取方式m_Opened=m_Serail.SetPortOpen(1); // 打开指定的串口return m_Opened;}
打开所需串口后,需要考虑串口通信的时机。在接收或发送数据过程中,可能需要监视并响应一些事件和错误,所以事件驱动是处理串行端口交互作用的一种非常有效的方法。使用 OnComm 事件和 CommEvent 属性捕捉并检查通讯事件和错误的值。发生通讯事件或错误时,将触发 OnComm 事件,CommEvent 属性的值将被改变,应用程序检查 CommEvent 属性值并作出相应的反应。在程序中用ClassWizard为CMSComm控件添加OnComm消息处理函数:
void CSampleDlg::OnComm(){……switch(m_Serial.GetCommEvent()){case 2:// 串行口数据接收,处理;}}
方法二:在单线程中实现自定义的串口通信类
控件简单易用,但由于必须拿到对话框中使用,在一些需要在线程中实现通信的应用场合,控件的使用显得捉襟见肘。此时,若能够按不同需要定制灵活的串口通信类将弥补控件的不足,以下将介绍如何在单线程中建立自定义的通信类。
该通信类CSimpleComm需手动加入头文件与源文件,其基类为CObject,大致建立步骤如下:
(1) 打开串口,获取串口资源句柄
通信程序从CreateFile处指定串口设备及相关的操作属性。再返回一个句柄,该句柄将被用于后续的通信操作,并贯穿整个通信过程。 CreateFile()函数中有几个值得注意的参数设置:串口共享方式应设为0,串口为不可共享设备;创建方式必须为OPEN_EXISTING,即打开已有的串口。对于dwFlagAndAttribute参数,对串口有意义的值是FILE_FLAG_OVERLAPPED,该标志表明串口采用异步通信模式,可进行重叠操作;若值为NULL,则为同步通信方式,在同步方式下,应用程序将始终控制程序流,直到程序结束,若遭遇通信故障等因素,将导致应用程序的永久等待,所以一般多采用异步通信。
(2)串口设置
串口打开后,其属性被设置为默认值,根据具体需要,通过调用GetCommState(hComm,dcb)读取当前串口设备控制块 DCB(Device Control Block)设置,修改后通过SetCommSt
您可能关注的文档
- 现代通信网第一次阶段作业.docx
- 第一章 DbVisualizer 常见问题解答.docx
- 第十三章 计算机系统题目完整版.docx
- Java中for循环几种写法.doc
- 怎样写投标书(模板).doc
- 为什么每家企业都必须做电商剖析.doc
- 事业编制与人事代理编制.doc
- 地球——人类唯一家园.doc
- 第08讲 标志设计中象征形象的运用.doc
- Win7系统下共享链接打印机详细图文教程.doc
- 2024-2025学年度公务员(国考)高分题库带答案详解(名师推荐).docx
- 2024-2025学年度公务员(国考)高频难、易错点题【有一套】附答案详解.docx
- 2024-2025学年度公务员(国考)高分题库附参考答案详解(满分必刷).docx
- 2024-2025学年度公务员(国考)高分题库及答案详解【最新】.docx
- 2024年公务员(国考)模拟题库审定版附答案详解.docx
- 2024公务员(国考)模拟试题参考答案详解.docx
- 2024年公务员(国考)考试黑钻押题【必考】附答案详解.docx
- 2024公务员(国考)全真模拟模拟题及完整答案详解(各地真题).docx
- 2024丽江市公务员行测含答案详解【A卷】.docx
- 2024年公务员(国考)复习提分资料及参考答案详解【满分必刷】.docx
最近下载
- 《匹克球运动 场地的使用要求及检验方法》.docx
- 2023年浙大城市学院计算机科学与技术专业《操作系统》科目期末试卷B(有答案).docx VIP
- 2025 年广东省初中学业水平考试生物押题卷6(含答案).docx VIP
- 2025-2026年药学考试-医院药学(副高)考试练习题3套带答案卷2.pdf VIP
- 四川省眉山市2023-2024学年高一下学期期末教学质量检测数学试题(含答案).pdf VIP
- 证券分析.pdf VIP
- 年产30万吨甲醇燃料项目可行性研究报告.docx VIP
- 国家开放大学2025年《中级财务会计(一)》形考任务1-4答案.docx
- 第一单元 “声、音、乐” 学习项目一 “音乐从振动开始” 的教学设计 人教版(简谱)2025音乐七年级下册.pdf VIP
- 绘本好饿的毛毛虫市公开课获奖课件省名师示范课获奖课件.pptx VIP
文档评论(0)