版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
网络编程与实践实验报告实验内容:串口通信编程学号:S姓名:职荣豪日期:2023-9-28
实验规定使用VS2023编写基于对话框的MFC应用程序,两个窗口分别使用两个串口,使得这两个窗口可以进行通信,涉及数据的发送与接受。实验原理本实验使用MicrosoftCommunicationsControl控件,运用这个ActiveX控件,只需要编写少量代码即可轻松进行通信。该控件相关的函数如下:put__CommPort:设立串标语put_Settings:以字符串的形式设立波特率、奇偶校验位(n-无校验,e-偶校验,o-奇校验)、数据位数、停止位数put_InputMode:设立接受数据的类型(0-文本类型,1-二进制类型)put_InputLen:设立从接受缓冲区读取的字节数,0表达所有读取put_InBufferSize:设立接受缓冲区大小put_OutBufferSize:设立发送缓冲区大小put_RThreshold:设定当接受几个字符时触发OnComm事件,0表达不产生事件,1表达每接受一个字符就产生一个事件put_SThreshold:设定在触发OnComm事件前,发送缓冲区内所允许的最少的字符数,0表达发送数据时不产生事件,1表达当发送缓冲区空时产生OnComm事件 put_PortOpen:打开或关闭串口,传入参数为true时打开串口,传入参数为false时关闭串口ﻩget_CommEvent:获得串口上刚发生的事件,事件值为2表达接受到数据 get_InBufferCount:获得缓冲区中的数据位数ﻩget_Input:获取缓冲区数据,返回类型为VARIANTﻩput_Output:发送数据设计思绪需要添加一个MicrosoftCommunicationsControl控件,用于进行串口通信。由于规定同一程序可运营两个窗口进行互相通信,需要两个窗口启动两个不同串口,故需要添加一个EditControl控件用于输入串标语,并添加打开串口按钮,在点击该按钮时对串口控件的参数进行设立并启动串口。同时添加关闭串口按钮,点击后关闭串口并可以对串标语进行修改。需要添加两个EditControl分别用于显示接受到的数据以及输入要发送的数据。需要添加一个发送按钮,点击后发送输入的数据。实验环节建立基于对话框的MFC应用程序添加界面控件并设立ID与Caption添加MicrosoftCommunicationsControl控件,用于进行串口通信添加一个EditControl控件,用于输入串标语,ID设立为IDC_PORT添加一个StaticText控件,用于标注端标语,将Caption设立为“串标语:”添加两个按钮,分别用于打开串口、关闭串口。IDC分别设立为IDC_BTN_OPEN、IDC_BTN_CLOSE,Caption分别设立为“打开”、“关闭”添加两个EditControl,分别用于显示接受到的数据以及输入要发送的数据,ID分别设立为IDC_RECEIVE、IDC_SEND添加两个StaticText控件,用于标注接受区与发送区,Caption分别设立为“接受区”、“发送区” 添加一个按钮用于发送数据,ID设立为IDC_BTN_SEND,Caption设立为“发送” 调整控件的大小与位置。完毕后如图:给控件绑定变量右键单击MicrosoftCommunicationsControl控件,选择“添加变量”,变量名为m_com打开类向导给控件添加变量:给IDC_PORT绑定变量,用于存放输入的端标语,数据类型为int,变量名为m_port给IDC_RECEIVE绑定变量,用于存放接受到的数据,数据类型为CString,变量名为m_strReceive给IDC_SEND绑定变量,用于存放输入的待发送的数据,数据类型为CString,变量名为m_strSend给控件添加事件响应函数右键单击MicrosoftCommunicationsControl控件,选择“添加事件解决程序”,点击“添加编辑”,生成响应函数,此函数用于接受数据。在函数中添加以下代码:ﻩUpdateData(TRUE); //更新m_strReceive的值 intnEvent=m_com.get_CommEvent(); //获取事件值ﻩif(nEvent==2){ﻩﻩ//时间值为2,此时为收到数据ﻩﻩintk=m_com.get_InBufferCount();ﻩ //获取缓冲区位数 if(k<=0)ﻩ//位数小于等于0时则返回ﻩﻩﻩreturn;ﻩ char*str=(char*)m_com.get_Input().parray->pvData;ﻩ//获取接受到数据的字符数组的首地址 *(str+k)='\0';//字符数组最后一位的下一位设立为'\0',为字符串的结尾标志 m_strReceive+=(constchar*)str;ﻩ//在用于显示的字符串末尾添加刚接受到的字符串ﻩ} UpdateData(FALSE); //将m_strReceive的值显示到控件中双击IDC_BTN_OPEN控件,即“打开”按钮,生成响应函数,此函数用于设立串口参数并打开串口。在函数中添加以下代码:UpdateData(TRUE);ﻩ//更新m_port的值 if(m_port<=0) //端标语不小于等于0 {ﻩﻩAfxMessageBox("请输入对的的串标语!");ﻩﻩreturn;ﻩ}ﻩm_com.put__CommPort(m_port);ﻩ//设定串口为m_port的值ﻩm_com.put_Settings("9600,n,8,1"); //设定波特率9600,无奇偶校验位,8作为数据位,1作为停止位 m_com.put_InputMode(1); //设定数据接受模式,1为二进制方式ﻩm_com.put_InputLen(0); //设立从接受缓冲区读取的字节数,0表达所有读取ﻩm_com.put_InBufferSize(1024); //设立输入缓冲区大小为1024byte m_com.put_OutBufferSize(1024); //设立输出缓冲区大小为1024byteﻩm_com.put_RThreshold(1);ﻩ//每接受到一个字符时,触发OnComm事件ﻩm_com.put_SThreshold(0); //每发送一个字符时,不触发OnComm事件ﻩm_com.put_PortOpen(true); //打开串口 GetDlgItem(IDC_BTN_OPEN)->EnableWindow(FALSE);ﻩ//打开按钮设为不可用 GetDlgItem(IDC_BTN_CLOSE)->EnableWindow(TRUE); //关闭按钮设为可用 GetDlgItem(IDC_BTN_SEND)->EnableWindow(TRUE);ﻩ//发送按钮设为可用双击IDC_BTN_CLOSE控件,即“关闭”按钮,生成响应函数,该函数用于关闭串口。在函数中添加以下代码:m_com.put_PortOpen(false);ﻩ//关闭串口ﻩGetDlgItem(IDC_BTN_OPEN)->EnableWindow(TRUE); //打开按钮设为可用 GetDlgItem(IDC_BTN_CLOSE)->EnableWindow(FALSE); //关闭按钮设为不可用 GetDlgItem(IDC_BTN_SEND)->EnableWindow(FALSE);ﻩ//发送按钮设为不可用双击IDC_BTN_SEND控件,即“发送”按钮,生成响应函数,该函数用于发送数据。在函数中添加以下代码: UpdateData(TRUE);//更新m_strSend的值,读取编辑框内容 m_com.put_Output(COleVariant(m_strSend));//发送数据在对话框初始化函数中添加额外初始化代码在对话框刚打开时,此时串口没有启动,故“关闭”按钮与“发送”按钮需设为不可用。在OnInitDialog函数中添加以下代码:GetDlgItem(IDC_BTN_CLOSE)->EnableWindow(FALSE);ﻩ//关闭按钮设为不可用 GetDlgItem(IDC_BTN_SEND)->EnableWindow(FALSE);
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年安远县教师招聘考试参考题库及答案解析
- 2026年文山州强制隔离戒毒所警务辅助人员招聘(2人)笔试备考题库及答案解析
- 2026-海南中国移动企业文化专员招聘考试参考题库-含答案
- 2026湖南长沙市望城区人力资源和社会保障局公益性岗位人员招聘笔试备考试题及答案解析
- 2026-河南地铁集团人力资源专员招聘考试参考题库-含答案
- 中国建设银行青岛市分行2027届校园招聘考试备考试题及答案解析
- 2026-湖北交通局预算核算招聘考试参考题库-含答案
- 2026年乡宁县教师招聘考试参考题库及答案解析
- 2027大唐贵州发电有限公司所属企业高校毕业生招聘38人笔试参考题库及答案解析
- 2026广西南宁市青秀区第一初级中学招聘3人笔试参考题库及答案解析
- 2026年中原农业保险股份有限公司招聘67人备考题库附答案详解
- 超星尔雅学习通《工程伦理(浙江大学)》2025章节测试答案
- 《钢结构设计原理》课件 第5章 受弯构件
- T-CCPMA 007-2024 T-CSTM 01619-2024 超纯铁精粉标准
- 子宫动脉栓塞介入治疗
- 《干部履历表》(1999版电子版)
- 铁路机车车辆驾驶人员(J5类)考试题库大全-上(单选题)
- 生态文明建设理论与实践智慧树知到期末考试答案章节答案2024年东北林业大学
- 田径运动会检查员报告表
- 三级围岩爆破设计
- GA/T 2000.22-2014公安信息代码第22部分:人口迁移(流动)原因代码
评论
0/150
提交评论