- 1、本文档共95页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第14章 串口通信编程应用;14.1 MFC串口控件编程;14.1.1 VC中应用MSComm控件编程步骤;1.创建工程;2.向工程中添加串口控件;图14.1 添加串口控件;;图14.2 注册串口控件;图14.3 提示控件注册成功;14.1.2 MSComm控件类;1.CMSComm类头文件;2.使用CMSComm类;14.1.3 MSComm控件串行通信编程方法;1.设置串口参数;;表14.1 串口接收数据类型的取值;用户设置串口的相关参数,可以调用函数SetSettings()来实现。该函数原型如下:
void SetSettings(LPCTSTR lpszNewValue);
参数lpszNewValue表示与该串口相关的参数,其顺序依次是波特率、奇偶校验、数据位数、停止位数。例如,用户使用该函数设置串口的相关参数,代码如下:
CString str=9600,n,8,1; //定义并初始化参数字符串
comm.SetSettings(str); //设置串口参数
在上面的程序中,用户将波特率设置为9600(默认值),n表示无校验位,数据位为8,停止位为1。其中,设置奇偶校验位的取值如表14.2所示。;表14.2 设置奇偶校验位的取值;;;2.打开串口;;3.发送串口数据;4.接收串口数据;图14.4 添加串口消息响应函数;;14.1.4 在基于对话框的程序中使用MSComm控件;1.设计界面;图14.5 实例程序界面设计;表14.3 控件ID、属性以及作用;图14.6 控件关联的变量;2.程序的初始化;3.发送串口数据;4.接收串口数据;图14.7 程序运行效果;14.2 串口API编程;14.2.1 Windows API串口编程概述;;14.2.2 API串口编程中用到的结构及相关概念说明;1.串口编程相关结构体;表14.4 参数BaudRate的常用取值;表14.5 参数StopBits的常用取值;;;;;2.串口编程的相关API函数;;;例如,用户使用这两个函数为串口设置相关的参数,其代码如下:
01
02 BOOL istrue; //定义布尔变量
03 GetCommState(hModem,dcb);
04 dcb.BaudRate = 9600;
05 dcb.ByteSize = 8;
06 dcb.fParity = FALSE;
07 dcb.StopBits = ONESTOPBIT;
08 istrue=SetCommState(hModem, dcb); //调用函数进行参数设置
09 if(istrue) //判断串口参数是否设置成功
10 {
11 MessageBox(串口参数设置成功!); //若参数设置成功,则提示用户
12 }
13 else
14 {
15 MessageBox(串口参数设置失败!请重试); //若参数设置失败,则提示用户重试
16 }
;;例如,用户为串口设置操作超时时间间隔。代码如下:
01 ... //省略部分代码
02 COMMTIMEOUTS con; //定义结构体变量
03 con.ReadIntervalTimeout=1000; //设置串口数据读取的超时时间
04 BOOL istrue; //定义布尔变量
05 istrue= SetCommTimeouts(hModem, con); //调用函数进行参数设置
06 if(istrue) //判断串口参数是否设置成功
07 {
08 MessageBox(超时时间设置成功!); //若参数设置成功,则提示用户
09 }
10 else
11 {
12 MessageBox(超时时间设置失败!请重试); //若参数设置失败,则提示用户重试
13 }
14 ... //省略部分代码
;;;;;表14.6 串口缓冲区清除标志值;例如,用户将前面所指定的串口缓冲区中的内容清除。代码如下:
01 ... //省略部分代码
02 BOOL istrue; //定义布尔变量
03 istrue=PurgeComm(hModem,
04 PURGE_TXABORT| PURGE_RXABORT| PURGE_TXCLEAR| PURGE_RXCLEAR);
05 //调用函数对缓冲区内容进行清除
06 if(istrue) //判断清除是否成功
07 {
08 MessageBox(缓冲区数据清除成功!); //若参数设置成功,则提示用户
09 }
10 else
11 {
12 MessageBox(缓冲区数据清除失败!请重
您可能关注的文档
最近下载
- 高应变法检测及答案.pdf VIP
- 高中化学:2021申报的省教研课题成果参考 基于学科育人的高中化学实验教学研究与实践.docx
- 黑龙江哈尔滨工业大学松江实验室劳务派遣工作人员招考聘用笔试历年典型考题及解题思路附答案详解.docx VIP
- 津津有味·读经典Level2《彼得•潘》译文和答案.docx
- 0-1 迹点与迹线.ppt
- 2024国家社会科学基金申报指南.pdf
- 九年一贯制学校学校三年发展规划.docx
- 个人信用报告征信简版电子版PDF版2024年2月必威体育精装版版带水印可编辑.pdf
- 大班社会活动认识钱币.pptx VIP
- 八年级数学上册 4.4.2 一次函数的应用教案 (新版)北师大版.doc VIP
文档评论(0)