版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
医用仪器软件设计——基于MFC串口通信小工具设计实验07Contents.1实验内容2实验原理3代码分析USB转串口与电脑通讯串口通信简介串口通信基本流程和函数串口类介绍MFC中的回调函数1.实验内容学习串口通信相关知识点,了解串口通信过程,然后通过MFC完成串口通信小工具的界面布局,并依据本章实验步骤完善底层驱动,设计出一个可实现串口通信的应用程序。2.1USB转串口与电脑通讯2.实验原理电平转换芯片一般用CH340,同时电脑还需要安装CH340驱动单片机:TTL电平芯片实现通信协议和电平的转换USB协议通信和串口协议通信不一样,不能直接通信单片机是TTL电平,对于3.3V单片机,高电平3.3V对应逻辑1,低电平0V对应逻辑0。USB采用VCC、GND、D+、D-传输。2.2串口通信简介2.实验原理串口也称为串行通信接口。串行接口是指数据一位一位地顺序传送。串口通信是指外设和计算机间,通过数据信号线、地线、控制线等,按位进行传输数据的一种通讯方式。这种通信方式使用的数据线少,在远距离通信中可以节约通信成本,但其传输速度比并行传输低。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。对于两个进行通信的端口,这些参数必须匹配。利用WindowsAPI通信函数进行串口通信:串口和其它通信设备作为文件处理。串口的打开、关闭、读取和写入所用的函数与操作文件的函数完全一致。CreateFile():打开串口CloseHandle():关闭串口ReadFile():读串口WriteFile():写串口2.3串口通信基本流程和函数2.实验原理lpFileName:将要打开的串口逻辑名,如“COM1”;dwDesiredAccess:指定串口访问的类型,可以是读取、写入或二者并列;dwShareMode:指定共享属性,由于串口不能共享,该参数必须置为0;lpSecurityAttributes:引用安全性属性结构,缺省值为NULL;dwCreationDistribution:创建标志,对串口操作该参数必须置为OPEN_EXISTING;dwFlagsAndAttributes:属性描述,用于指定该串口是否进行异步操作,该值为FILE_FLAG_OVERLAPPED,表示使用异步的I/O;该值为0,表示同步I/O操作;hTemplateFile:对串口而言该参数必须置为NULL;HANDLECreateFile(LPCTSTRlpFileName,DWORDdwDesiredAccess,DWORDdwShareMode,LPSECURITY_ATTRIBUTESlpSecurityAttributes,DWORDdwCreationDistribution,DWORDdwFlagsAndAttributes,HANDLEhTemplateFile);打开串口函数原型关闭串口函数原型BOOLCloseHandle(HANDLEhObjedt);关闭串口,成功关闭串口返回TRUE,失败返回FALSE2.3串口通信基本流程和函数2.实验原理读串口函数BOOLReadFile(HANDLEhFile,LPVOIDlpBuffer,DWORDnNumberOfBytesToRead,
LPDWORDlpNumberOfBytesRead,
LPOVERLAPPEDlpOverlapped
);hFile:串口的句柄;lpBuffer:要读入的数据存储的地址;nNumberOfBytesToRead:要读入的数据的字节数;lpNumberOfBytesRead:实际读入的字节数;lpOverlapped:重叠操作时,该参数指向一个OVERLAPPED结构,同步操作时,该参数为NULL;BOOLWriteFile(HANDLEhFile,
LPCVOIDlpBuffer,DWORDnNumberOfBytesToWrite,
LPDWORDlpNumberOfBytesWritten,
LPOVERLAPPEDlpOverlapped
);写串口函数hFile:串口的句柄;lpBuffer:要写入的数据存储的地址;nNumberOfBytesToWrite:要写入的数据的字节数;lpNumberOfBytesWritten:实际写入的字节数;lpOverlapped:重叠操作时,该参数指向一个OVERLAPPED结构,同步操作时,该参数为NULL;2.4串口类介绍2.实验原理CUART类的函数函数说明OpenPort(intiPort,intiRecvMode);打开串口。iPort-端口号,iRecvMode-接收模式。ConfigPort(intbaudRate,intparity,intdataBits,intstopBits,EnumFlowControlfc);配置串口。baudRate-波特率,parity-奇偶校验,dataBits-端口数据位,stopBits-端口停止位数,fc-串口流控制。BOOLIsOpen();检查是否已经打开一个端口。成功返回TRUE,失败返回FALSE。RegisterCallFunc(CALLFUNCcallFunc,void*pThis);注册用于处理接收数据的线程函数。callFunc-回调函数指针,pThis-回调函数对象指针。ClosePort();关闭串口。SendData(LPCVOIDpData,DWORDdwLen);发送数据。pData-发送的数据指针,dwLen-发送数据长度。2.5MFC中的回调函数回调函数:通过函数指针调用的函数。如果把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用于调用它所指向的函数时,我们就说这是回调函数。2.实验原理classCallBackClass{public:typedefvoid(*CallBackPtr)(int);voidRegisterCallBack(CallBackPtrcallBackPtr);
voidTaskProc();private:CallBackPtrmCallBackPtr;};voidCallBackClass::RegisterCallBack(CallBackPtrcallBackPtr){
mCallBackPtr=callBackPtr;}voidCallBackClass::TaskProc(){inta=2;mCallBackPtr(a);}第一步:在类中类中声明回调指针在类成员函数声明一个注册函数,参数必须含有回调函数类型定义函数指针变量定义调用回调函数的函数实现注册函数、调用回调函数的函数第二步:在另一个类中实现静态回调函数,注意参数要和上面类回调指针类型对应,且必须是静态函数。处理函数:实例化类并完成注册,将回调函数和函数指针变量关联。通过调用“调用回调函数的函数”实现回调classMainClass{
staticvoidReceiveProc(inta){cout<<"我是回调函数"<<endl;cout<<"a="<<a<<endl;}public:voidProcess(){
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025北京一七一中初三3月月考数学试题及答案
- 勾股定理及其应用课件2025-2026学年人教版八年级数学下册
- 老年脑梗死护理专业知识考核试题
- 汽车基础电子技术 6
- 2026道德与法治一年级阅读角 农夫和蛇故事
- 医院招标采购控制制度
- 医院经济监督制度
- 十项内部管理制度
- 单位妇女儿童工作制度
- 博物馆教育培训制度及流程
- 交通运输概论教学教案
- 2025年昆明市官渡区国有资产投资经营有限公司招聘笔试参考题库附带答案详解
- 2024年版《输变电工程标准工艺应用图册》
- DL∕T 5210.2-2018 电力建设施工质量验收规程 第2部分:锅炉机组
- 2024年高考数学试卷(新课标Ⅰ卷)(空白卷)
- 一年级下册《读读童谣和儿歌》试题及答案共10套
- HGT 20580-2020 钢制化工容器设计基础规范
- 19《小英雄雨来(节选)》 第一课时 公开课一等奖创新教学设计
- 创新思维在高中物理教学中的运用
- PaaS开发运营三级认证考试题库(浓缩300题)
- GB/T 17880.3-1999小沉头铆螺母
评论
0/150
提交评论