还剩7页未读,继续阅读
文本内容:
网络编程与实践试验汇报试验内容串口通信编程学号S姓名职荣豪日期2023-9-28
一、试验规定使用编写基于对话框日勺应用程序,两个窗口分别使用两个串口,使得这两个VS2023MFC窗口可以进行通信,包括数据的发送与接受
二、试验原理本试验使用控件,运用这个控件,只需要编写Microsoft CommunicationsControl ActiveX少许代码即可轻松进行通信该控件有关欧函数如下J设置串口号put_CommPort以字符串的形式设置波特率、奇偶校验位(无校验,偶校验,奇校验)、put_Settings n-e-o-数据位数、停止位数」设置接受数据的类型(-文本类型,二进制类型)put nputMode01-」设置从接受缓冲区读取的字节数,表达所有读取put nputLen0设置接受缓冲区大小put_lnBufferSize设置发送缓冲区大小put_OutBufferSize设定当接受几种字符时触发事件,表达不产生事件,表达put_RThreshold OnComm01每接受一种字符就产生一种事件设定在触发事件前,发送缓冲区内所容许欧至少於字符数,put_SThreshold OnCommI I表达发送数据时不产生事件,表达当发送缓冲区空时产生事件01OnComm打开或关闭串口,传入参数为时打开串口,传入参数为时关put_PortOpen truefalse闭串口获得串口上刚发生的事件,事件值为表达接受到数据get_CommEvent2获得缓冲区中的数据位数getJnBufferCount获取缓冲区数据,返回类型为getjnput VARIANT发送数据put_Output
三、设计思绪需要添加一种代控件,用于进行串口通信Micros CommunicationsControl由于规定同一程序可运行两个窗口进行互相通信,需要两个窗口启动两个不一样串口,故需要添加一种控件用于输入串口号,并添加打开串口按钮,在点击该按钮时对串Edit Control口控件的参数进行设置并启动串口同步添加关闭串口按钮,点击后关闭串口并可以对串口号进行修改需要添加两个分别用于显示接受到勺数据以及输入要发送的数据Edit ControlH需要添加一种发送按钮,点击后发送输入的数据试验环节建立基于对话框的应用程序
1.MFC添加界面控件并设置与
2.ID Caption添加代控件,用于进行串口通信Micros CommunicationsControl添加一种控件,用于输入串口号,设置为Edit ControlID IDJPORT添加一种控件,用于标注端口号,将设置为“串口号”Static TextCaption添加两个按钮,分别用于打开串口、关闭串口分别设置为、IDC IDC_BTN_OPEN分别设置为“打开”、“关闭”IDC_BTN_CLOSE,Caption添加两个分别用于显示接受到日勺数据以及输入要发送日勺数据,分别设置Edit Control,ID为IDC_RECEIVE IDC_SEND添加两个控件,用于标注接受区与发送区,分别设置为“接受区”、“发Static TextCaption送区”添加一种按钮用于发送数据,设置为设置为“发送〃ID IDC_BTN_SEND,Caption调整控件的大小与位置完毕后如图:给控件绑定变量
3.右键单击代控件,选择“添加变量”,变量名为Micros CommunicationsControl m_com打开类向导给控件添加变量给绑定变量,用于寄存输入的端口号,数据类型为变量名为IDJPORT int,m_port给绑定变量,用于寄存接受到的数据,数据类型为变量名为IDC.RECEIVE ICString,m_strReceive给绑定变量,用于寄存输入的待发送的数据,数据类型为变量名为IDJSEND JCString,m_strSend控件ID类型心白^HICON蜀IDC_BTN_CLOSE mhlconJIDC_BTN_OPENJIDC_BTN_SENDQIDC.PORT intQIDC.RECEIVE CStringQIDC.SEND CStringm_portm_strReceivem strSend给控件添加事件响应函数
4.右键单击代控件,选择“添加事件处理程序”,点击“添Micros CommunicationsControl加编辑〃,生成响应函数,此函数用于接受数据在函数中添加如下代码UpdateDataTRUE;//更新口勺值m_strReceive〃获取事件值int nEvent=m_com.get_CommEvent;//时间值为此时为收到数据ifnEvent==2{2,int k=m_com.get_InBufferCount;//获取缓冲区位数//位数不大于等于时则返回ifk=0return;」〃获取接受到数据的字char*str=char*m_com.get nput符数组日勺首地址〃字符数组最终一位的下一位设置为‘\,为字符串的结尾标志*str+k=\0;0//在用于显示的字符串末尾添加刚接受到的字符串m_strReceive+=const char*str;I IUpdateDataFALSE;//将勺值显示到控件中m_strReceiveH双击控件,即〃打开〃按钮,生成响应函数,此函数用于设置串口参数并打IDC_BTN_OPEN开串口在函数中添加如下代码UpdateData TRUE;//更新区值m_port I//端口号不不大于等于ifm_port=00{请输入对勺勺串口号!”;AfxMessage8ox”H Hreturn;设定串口为、值m_com.put_CommPortm_port;//m_portW J//设定波特率无奇偶校验位,作为数据位,m_com.put_Settings9600,8^1;9600,8作为停止位1//设定数据接受模式,为二进制方式m_com.put_InputModel;1〃设置从接受缓冲区读取的字节数,表达所有读取m_com.put_InputLen0;0//设置输入缓冲区大小为m_com.put_InBuf ferSize1024;1024byte〃设置输出缓冲区大小为m_com.put_OutBufferSize1024;1024byte每接受到一种字符时,触发事件m_com.put_RThresholdl;//OnComm每发送一种字符时,不触发事件m_com.put_SThreshold0;//OnComm〃打开串口m_com.put_PortOpen true;//打开按钮设为不可用GetDtgIteznIDC_BTN_OPEN-Enabteh/inc/ok/F/lLSE;EnabLelAlindoiA/TRUE;〃关闭按钮设为可用GetDLgIterw IDC_BTN_CLOSE-GetDLgItemIDC_BTN_SEND-EnabLel^indoiA/TRUE;//发送按钮设为可用双击控件,即“关闭”按钮,生成响应函数,该函数用于关闭串口IDC_BTN_CLOSE在函数中添加如下代码//关闭串口m_com.put_PortOpenfalse;GetDLgItemIDC_BTN_OPEN-EnabLelVindoiA/TRUE;//打开按钮设为可用GetDLgItemIDC_BTN_CLOSE-EnabLelA/indoiA/FALSE;〃关闭按钮设为不可用GetDLgItemIDC_BTN_SEND-EnabLe^indoi^FALSE;〃发送按钮设为不可用双击控件,即“发送”按钮,生成响应函数,该函数用于发送数据IDC_BTN_SEND在函数中添加如下代码:UpdateDataTRUE;〃更新的值,读取编辑框内容m_strSend亡发送数据m_com.put_Outpu•tC Lel/ariar m_strSend;//在对话框初始化函数中添加额外初始化代码
5.在对话框刚打开时,此时串口没有启动,故“关闭”按钮与“发送”按钮需设为不可用在函数中添加如下代码OnlnitDialog工加工〃关闭按钮设为不可用GetDLg teDJBTN_CL0SE-E/abLeWMdowF4SE;〃发送按钮设为不可用GetDLgIte/wIDC_BTN_SEND-EnabtelVinc/ok/FZlLSF;
五、试验成果对话框运行成果如下:1对话框运行成果如下:2
六、试验心得通过课上的学习,我学习到了数据通信的基础知识,对网络勺分层构造以及有关协议有了H深入的认识J通过本次试验,我对串口通信勺原理有了更深日勺认识与理解,并对界面制作愈加H MFC纯熟总之,在本课程中我收获诸多,不仅在通信方面的知识有所提高,同步也锻炼了编程能力,I软件口勺使用愈加纯熟VC++。
个人认证
优秀文档
获得点赞 0