- 1、本文档共26页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
串口通信程序编写
姓名:潘培哲
专业:控制工程
学号:12013002347
——基于Visual C++
软件环境
Windows 7
Microsoft Visual Studio 2012
CSerialPort类(定义了串口变量和通信方法)
链接地址:
/liquanhai/CSerialPort
/rechen/p/5087498.html
编程步骤
新建一个MFC项目
命名
编程步骤
编程步骤
基本的窗口
对话框编辑器,直接拖动到窗口中去
编程步骤
用到的几种控件
布局后的界面
编程步骤
为每一个控件命名
在控件上右键单击-属性
编程步骤
命名完成后的窗口
为组合框添加数据
解压CSerialPort并将(.h)和(.cpp)文件复制到工程中去。
主对话框头文件中引入 #includeSerialPort.h
编程步骤
编程步骤
在对话框c文件中声明串口类对象 CSerialPort m_SerialPort
定义一个布尔变量 BOOL m_bPortOpen //用来表示标志串口是否打开
编程步骤
给控件添加变量
在控件上右键单击-添加变量
编程步骤
给控件添加变量:编辑框
编辑框只需关联Value型变量
变量名用于程序中赋值时调用
编程步骤
给控件添加变量:组合框
ComboBox需要添加控制变量
变量名用于获取索引值
编程步骤
将各个控件的变量关联如下:
m_ctrlComPort
m_ctrlBaudRate
m_ctrlDataBits
m_ctrlPairty
m_strTxMsg
m_strRxMsg
m_ctrlStopBits
m_strBaudRate
m_strPairty
Control型变量
Value型变量
Value型变量
编程步骤
对写好的对话框进行一个初始化
在初始化函数OnInitDialog()中添加如下语句:
BOOL C串口通信程序Dlg::OnInitDialog()
{
CDialogEx::OnInitDialog();
m_ctrlComPort.SetCurSel(0);//设置默认的索引值
m_ctrlBaudRate.SetCurSel(0);
m_ctrlPairty.SetCurSel(0);
m_ctrlDataBits.SetCurSel(3);
m_ctrlStopBits.SetCurSel(0);
GetDlgItem(IDC_BUTTON1)-EnableWindow(TRUE);
//把窗口中的“打开串口”置为活动的可操作状态
GetDlgItem(IDC_BUTTON2)-EnableWindow(FALSE);
//把窗口中的“关闭串口”置为灰色的不可操作状态
编程步骤
向对话框头文件中添加
串口接收字符函数的消息响应声明
响应Cserialport类中的消息响应函数-OnComm接收数据
编程步骤
然后再向对话框CPP文件中添加OnComm函数的消息映射
响应Cserialport类中的消息响应函数-OnComm接收数据
编程步骤
接着,在对话框CPP文件中加入函数OnComm()的实现
至此,每当串口接收缓冲区中有一个字符时,就会产生一个WM_ONCOMM_RXCHAR消息,触发OnComm()函数,这时就可以在函数中进行数据处理
响应Cserialport类中的消息响应函数-OnComm接收数据
编程步骤
编写按钮控件消息响应处理函数-打开串口
编程步骤
编写按钮控件消息响应处理函数-打开串口
void C串口通信程序Dlg::OnBnClickedButton1()
{
int SelPort,SelBaudRate,SelDataBits,SelStopBits;
char SelParity; //定义字符型变量
SelPort=m_ctrlComPort.GetCurSel()+1; //得到串口号;GetCurSel()得到的是索引值(0-Max)
SelStopBits=m_ctrlStopBits.GetCurSel()+1; //得到停止位
SelDataBits=m_ctrlDataBits.GetCurSel()+5; //得到数据位
UpdateData(TRUE); //把选定值写入变量
SelBaudRate=atoi(m_strBaudRate); //得到波特率值;atoi是将字符型转整型函
文档评论(0)