人人范文网 范文大全

串口通讯实验报告

发布时间:2020-03-03 02:09:10 来源:范文大全 收藏本文 下载本文 手机版

网络编程与实践实验报告

实验内容:串口通信编程 学号:S201502189 姓名:职荣豪 日期:2015-9-28

一、实验要求

使用VS2010编写基于对话框的MFC应用程序,两个窗口分别使用两个串口,使得这两个窗口可以进行通信,包括数据的发送与接收。

二、实验原理

本实验使用Microsoft Communications Control控件,利用这个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:发送数据

三、设计思路

需要添加一个Microsoft Communications Control控件,用于进行串口通信。 由于要求同一程序可运行两个窗口进行相互通信,需要两个窗口开启两个不同串口,故需要添加一个Edit Control控件用于输入串口号,并添加打开串口按钮,在点击该按钮时对串口控件的参数进行设置并开启串口。同时添加关闭串口按钮,点击后关闭串口并可以对串口号进行修改。

需要添加两个Edit Control 分别用于显示接收到的数据以及输入要发送的数据。 需要添加一个发送按钮,点击后发送输入的数据。

四、实验步骤

1.建立基于对话框的MFC应用程序 2.添加界面控件并设置ID与Caption 添加Microsoft Communications Control控件,用于进行串口通信 添加一个Edit Control控件,用于输入串口号,ID设置为IDC_PORT 添加一个Static Text控件,用于标注端口号,将Caption设置为“串口号:”

添加两个按钮,分别用于打开串口、关闭串口。IDC分别设置为IDC_BTN_OPEN、IDC_BTN_CLOSE,Caption分别设置为“打开”、“关闭” 添加两个Edit Control,分别用于显示接收到的数据以及输入要发送的数据,ID分别设置为IDC_RECEIVE、IDC_SEND 添加两个Static Text控件,用于标注接收区与发送区,Caption分别设置为“接收区”、“发送区”

添加一个按钮用于发送数据,ID设置为IDC_BTN_SEND,Caption设置为“发送” 调整控件的大小与位置。

完成后如图:

3.给控件绑定变量

右键单击Microsoft Communications Control控件,选择“添加变量”,变量名为m_com 打开类向导给控件添加变量:

给IDC_PORT绑定变量,用于存放输入的端口号,数据类型为int,变量名为m_port 给IDC_RECEIVE绑定变量,用于存放接收到的数据,数据类型为CString,变量名为m_strReceive 给IDC_SEND绑定变量,用于存放输入的待发送的数据,数据类型为CString,变量名为m_strSend

4.给控件添加事件响应函数

右键单击Microsoft Communications Control控件,选择“添加事件处理程序”,点击“添加编辑”,生成响应函数,此函数用于接收数据。

在函数中添加以下代码:

UpdateData(TRUE); if(nEvent == 2) {

} UpdateData(FALSE); //将m_strReceive的值显示到控件中

//更新m_strReceive的值

//获取事件值

//获取缓冲区位数

//时间值为2,此时为收到数据 int nEvent = m_com.get_CommEvent(); int k = m_com.get_InBufferCount(); if(k pvData; //获取接收到数据的字*(str + k) = \'\\0\';//字符数组最后一位的下一位设置为\'\\0\',为字符串的结尾标志 m_strReceive += (const char *) str; //在用于显示的字符串末尾添加刚接收到的符数组的首地址

字符串

双击IDC_BTN_OPEN控件,即“打开”按钮,生成响应函数,此函数用于设置串口参数并打开串口。

在函数中添加以下代码:

UpdateData(TRUE);

if(m_port

} m_com.put__CommPort(m_port); //设定串口为m_port的值 m_com.put_Settings(\"9600,n,8,1\");

//设定波特率9600,无奇偶校验位,8作为数据位,AfxMeageBox(\"请输入正确的串口号!\"); return;

//更新m_port的值 //端口号不小于等于0

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));//发送数据

5.在对话框初始化函数中添加额外初始化代码

在对话框刚打开时,此时串口没有开启,故“关闭”按钮与“发送”按钮需设为不可用。 在OnInitDialog函数中添加以下代码:

GetDlgItem(IDC_BTN_CLOSE)->EnableWindow(FALSE); //关闭按钮设为不可用 GetDlgItem(IDC_BTN_SEND)->EnableWindow(FALSE); //发送按钮设为不可用

五、实验结果

对话框1 运行结果如下:

对话框2 运行结果如下:

六、实验心得

通过课上的学习,我学习到了数据通信的基础知识,对网络的分层结构以及相关协议有了进一步的认识。

通过本次实验,我对串口通信的原理有了更深的认识与理解,并对MFC界面制作更加熟练。 总之,在本课程中我收获很多,不仅在通信方面的知识有所提升,同时也锻炼了编程能力,VC++软件的使用更加熟练。

串口通信实验报告

串口通信实验报告

串口通讯的工作方式

VB中串口通讯的实现

嵌入式串口和网络编程实验报告

串口中断

中兴通讯程控交换实验报告

VB实现PC与欧姆龙PLC通讯的串口编程

单片机串口总结

串口接收字符串

串口通讯实验报告
《串口通讯实验报告.doc》
将本文的Word文档下载到电脑,方便编辑。
推荐度:
点击下载文档
点击下载本文文档