串口通讯实验报告.doc
文本预览下载声明
网络编程与实践实验报告
:串口通信
学号:S2015021
姓名:职荣豪
日期:-9-28
实验要求
VS2010编写基于对话框的MFC应用程序,两个两个串口,使得这两个进行通信,包括的发送与接收。
本实验使用Microsoft Communications Control,veX控件,少量代码进行通信
该控件相关的如下:
put__CommPort
put_Settings:以字符串的形式波特率e-偶校验,-奇)、
put_InputMode:设置接收数据类型-文本类型,1-二进制类型)
put_InputLen:字节数全部读取
put_InBufferSize:缓冲区大小
put_OutBufferSize缓冲区大小
put_RThreshold
put_SThreshold:设定在触发OnComm事件前,发送缓冲区内所允许的最少的字符数,0表示发送数据时不产生事件,1表示当发送缓冲区空时产生OnComm事件
put_PortOpen:打开或关闭传入参数为true打串口,传入参数为false关闭串口
get_CommEvent获得串口上刚发生的事件
get_InBufferCount:获得缓冲区数据位数
get_Input获取缓冲区数据返回类型为
put_Output:发送数据
设计思路
Microsoft Communications Control控件,用于进行串口通信
由于要求同一程序运行两个窗口通信,两个窗口开启两个不同,故需要Edit Control控件用于输入口号添加打开串口按钮点击按钮时串口控件的设置开启串口。添加关闭按钮点击后关闭串口并可以对串口号进行修改。
两个Edit Control 显示的数据以及输入要发送的数据。
添加一个按钮点击发送输入的数据。
建立基于对话框的MFC程序
界面控件ID与Caption
添加Microsoft Communications Control控件,用于进行串口通信
Edit Control控件,用于输入ID设置为
添加一个 Text控件,用于标注端口号将设置为串口号:
添加两个按钮,打开串口、关闭串口IDC分别设置为IDC_BTN_OPENCaption分别设置为打开关闭
添加两个Edit Control,分别用于显示的数据以及输入要发送的数据ID分别设置为IDC_RECEIVEIDC_SEND
添加两个 Text控件,用于标注区与发送区设置为
添加一个按钮用于发送数据,ID为IDC_BTN_SENDption设置为”
调整控件的大小与位置。
如图:
控件
右键单击Microsoft Communications Control控件,选择添加变量,名为
打开类向导给控件添加变量:
IDC_PORT绑定变量,输入的端口号,数据类型为int,变量名为_port
给IDC_RECEIVE绑定变量,用于接收到的数据,数据类型为CString,变量为m_strReceive
IDC_SEND绑定变量,用于的数据,数据类型为CString,变量为m_strSend
添加事件响应函数
单击Microsoft Communications Control添加事件”,生成响应函数,用于接收数据。
在函数中以下代码:
UpdateData(TRUE); //更新m_strReceive的值
int nEvent = m_com.get_CommEvent(); //获取事件值
if(nEvent == 2) { //时间值为2,此时为收到数据
int k = m_com.get_InBufferCount(); //获取缓冲区位数
if(k = 0) //位数小于等于0时则返回
return;
char* str = (char*)m_com.get_Input().parray-pvData; //获取接收到数据的字符数组的首地址
*(str + k) = \0;//字符数组最后一位的下一位设置为\0,为字符串的结尾标志
m_strReceive += (const char *) str; //在用于显示的字符串末尾添加刚接收到的字符串
}
UpdateData(FALSE); //将m_strReceive的值显示到控件中
_BTN_OPEN控件,即“”按钮,生成响应函数,用于串口参数打开串口。
在函数中以下代码
UpdateData(TRUE); //更新m_port的值
if(m_port = 0) //端口号不小于等于0
{
AfxMessageBox(请输入正确的串口号!);
return;
}
m_com.put__CommPort(m_port); //设定串口为m_port的值
m_co
显示全部