欢迎来到天天文库
浏览记录
ID:31738159
大小:92.19 KB
页数:7页
时间:2019-01-17
《串口通讯实验报告》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、网络编程与实践实验报告实验内容:串口通信编程学号:S201502189姓名:职荣豪口期:2015-9-28一、实验要求使用VS2010编写基于对话框的MFC应川程序,两个窗口分别使用两个串口,使得这两个窗口可以进行通信,包括数据的发送与接收。二、实验原理本实验使川MicrosoftCommunicationsControl控件,利用这个ActiveX控件,只需要编写少量代码即可轻松进行通信。该控件相关的函数如下:put_CommPort:设置串口号put_Settings:以字符串的形式设置波特率、奇偶校验位(n■无校验,e■偶校验,o■奇校验)、数据位数、停止位数putJnpu
2、tMode:设置接收数据的类型(0■文木类型,1•二进制类型)putJnputLen:设置从接收缓冲区读取的字节数,0表示全部读取putJnBufferSize:设置接收缓冲区大小put_OutBufferSize:设置发送缓冲区大小put_RThreshold:设定当接收几个字符时触发OnComm事件,0表示不产生事件,1表示每接收一个字符就产生一个事件put_SThreshold:设定在触发OnComm事件前,发送缓冲区内所允许的最少的字符数,0表示发送数据时不产生事件,1表示当发送缓冲区空时产生OnComm事件put_PortOpen:打开或关闭串口,传入参数为true时打
3、开串口,传入参数为false时关闭串口get_CommEvent:获得串口上刚发生的事件,事件值为2表示接收到数据getJnBufferCount:获得缓冲区中的数据位数getjnput:获収缓冲区数据,返回类型为VARIANTput_Output:发送数据三、设计思路需要添加一个MicrosoftCommunicationsControl控件,用于进彳亍串口通信。由于要求同一程序可运行两个窗口进行相互通信,需耍两个窗口开启两个不同串口,故需要添加一个EditControl控件用于输入串口号,并添加打开串口按钮,在点击该按钮时对串口控件的参数进行设査并开启串口。同时添加关闭串口按
4、钮,点击后关闭串口并可以对串口号进行修改。需要添加两个EditControl分别川于显示接收到的数据以及输入要发送的数据。需耍添加一个发送按钮,点击后发送输入的数据。1.建立基于对话框的MFC应用程序2.添加界面控件并设置ID与Caption添加MicrosoftCommunicationsControl控件,用于进行串口通信添加一个EditControl控件,用于输入串口号,ID设置为IDC_PORT添加一个StaticText控件,用于标注端口号,将Caption设置为“串口号:”添加两个按钮,分别用于打开串口、关闭串口。IDC分别设置为IDC_BTN_OPEN、IDC_BT
5、N_CLOSE,Caption分别设置为“打开”、“关闭”添加两个EditControl,分别用于显示接收到的数据以及输入要发送的数据,ID分别设置为IDCRECEIVE、IDCSENDMB添加两个StaticText控件,用于标注接收区与发送区,Caption分别设迸为“接收区”、“发送区”添加一个按钮用于发送数据,ID设置为IDC_盯N_SEND,Caption设置为“发送〃调整控件的大小与位置。完成后如图:1.给控件绑定变量右键单击MicrosoftCommunicationsControl控件,选择"添加变量”,变量名为m_com打开类向导给控件添加变量:给IDC_POR
6、T绑定变量,用于存放输入的端口号,数据类型为int,变最名为m_port给IDC_RECEIVE绑定变量,用于存放接收到的数据,数据类型为CString,变量名为m_strReceive给IDC_SEND绑定变量,用于存放输入的待发送的数据,数据类型为CString,变量名为m_strSend控件ID成员并U目定义变量〉HICONm_hlconJIDC_BTN_CLOSEJIDC_BTN_OPENJIDC-BTN.SENDQIDC_PORTintm_port0IDC_RECEIVECStringm^strReceiveQIDC.SENDCStringm_strSend1.给控件添
7、加事件响应函数右键单击MicrosoftCommunicationsControl控件,选择"添加事件处理程序”,点击"添加编辑〃,生成响应函数,此函数用于接收数据。在函数屮添加以下代码:UpdateData(TRUE);//更新m_strReceive的值intnEvent=m_com.get_CommEvent();//获取事件值if(nEvent==2){//时间值为2,此时为收到数据intk=m_com.get_InBufferCount();//茯取缓冲区位数if(k<
此文档下载收益归作者所有