MFC单文档之基于MSCOMM的多个编辑框的串口通讯
2017-04-10 12:48
459 查看
VS2013取消了MSCOMM串口控件,如果还想用该控件写串口程序,就得自己添加写基于MFC的程序
百度经验
补充:串口号可以更改是一个优势,另外有的电脑你把那四个文件复制后,是可以自动完成注册的,所以最好先试一试看能不能使用,不能使用的话再新建注册表项。
下载地址
虚拟串口软件使用
里面的成对使用是有道理的,具体的道理往下看
设置好虚拟串口后,打开串口调试助手,打开两次,分别设置为之前设置的COM口,如COM3COM4,这样在两个界面中就可以互相发送消息并实时地显示。
{
// TODO: 在此添加控件通知处理程序代码
UpdateData(true); //读取编辑框内容
m_mscomm.put_Output(COleVariant(m_EditSend + m_EditSend1));//发送数据
m_EditSend.Empty(); //发送后清空输入框
m_EditSend1.Empty(); //发送后清空输入框
UpdateData(false); //更新编辑框内容
}
随手建立的一个对话框,故有码,但是功能可以实现。
1.在VS2013下编写基于MSCOMM的MFC串口通讯程序
直接参考百度经验,里面有非常明确的讲解如何下载控件及使用控件进行通信。百度经验
补充:串口号可以更改是一个优势,另外有的电脑你把那四个文件复制后,是可以自动完成注册的,所以最好先试一试看能不能使用,不能使用的话再新建注册表项。
2.新建多个串口控件
在每个对话框中都插入一个ActiveX控件,然后添加变量等,这样每个对话框中都可以进行串口通信了3.虚拟串口的设置
有时候没有单片机等硬件时,测试就要用到虚拟串口啦!虚拟串口软件
虚拟串口的使用参考这个文章:下载地址
虚拟串口软件使用
里面的成对使用是有道理的,具体的道理往下看
设置好虚拟串口后,打开串口调试助手,打开两次,分别设置为之前设置的COM口,如COM3COM4,这样在两个界面中就可以互相发送消息并实时地显示。
4.进阶
把其中一个串口调试助手的界面关掉,如关掉COM3,然后打开VS里面建立的工程,运行后设置串口号为,此时串口打开成功,发送框和接收框可以与串口调试助手中的界面进行通信。5.新建多个发送编辑框和接收编辑框
教程上一般只是建立一个发送编辑框和接收编辑框,而实际中往往会有多个,所以新建多个发送编辑框和接收编辑框然后进行添加变量等操作6.修改函数代码
6.1发送多个编辑框代码
void CMFCApplication2Dlg::OnBnClickedBottonSend(){
// TODO: 在此添加控件通知处理程序代码
UpdateData(true); //读取编辑框内容
m_mscomm.put_Output(COleVariant(m_EditSend + m_EditSend1));//发送数据
m_EditSend.Empty(); //发送后清空输入框
m_EditSend1.Empty(); //发送后清空输入框
UpdateData(false); //更新编辑框内容
}
6.2多个编辑框接收的代码
void CMFCApplication2Dlg::OnCommMscomm1() { // TODO: 在此处添加消息处理程序代码 static unsigned int cnt = 0; VARIANT variant_inp; COleSafeArray safearray_inp; long len, k; unsigned int data[1024] = { 0 }; byte rxdata[1024]; //设置 BYTE 数组 CString strtemp; static unsigned int Receive_flag = 0; if (m_mscomm.get_CommEvent() == 2) //值为 2 表示接收缓冲区内有字符 { cnt++; variant_inp = m_mscomm.get_Input(); //读缓冲区消息 safearray_inp = variant_inp; ///变量转换 len = safearray_inp.GetOneDimSize(); //得到有效的数据长度 for (k = 0; k<len; k++) { safearray_inp.GetElement(&k, rxdata + k); } for (k = 0; k<len; k++) //将数组转换为 CString 型变量 { strtemp.Format(_T("%c"), *(rxdata + k)); switch (Receive_flag) { case 0: m_EditReceive += strtemp; break; case 1: m_EditReceive1 += strtemp; break; //case 2: m_strR += strtemp; break; } Receive_flag++; if (2 == Receive_flag) { Receive_flag = 0; } } } UpdateData(FALSE); //更新编辑框内容 }
7.实验成果
随手建立的一个对话框,故有码,但是功能可以实现。
相关文章推荐
- 简单而强大的多线程串口编程工具CserialPort类(附VC基于MFC单文档协议通讯源程序及详细编程步骤)
- 简单而强大的多线程串口编程工具CserialPort类(附VC基于MFC单文档协议通讯源程序及详细编程步骤)
- 简单而强大的多线程串口编程工具CserialPort类(附VC基于MFC单文档协议通讯源程序及详细编程步骤)
- 多线程串口编程工具CserialPort类(附VC基于MFC单文档协议通讯源程序及详细编程步骤)
- VC中基于文档(SDI/MDI)程序中能直接用串口MSComm通讯控件吗?
- 在基于单文档(SDI)程序中应用MSCOMM串口通讯控件
- VC中基于文档(SDI/MDI)程序中能直接用MSComm通讯控件吗
- MFC基于单文档分割视图后子窗口点击编辑框获得相应的操作
- MFC单文档之利用全局变量一次设置多个对话框的串口通讯
- MFC单文档之串口通讯实现16进制数据的发送和接收
- MFC单文档之串口通讯三次无返回值报错提醒
- 继承opencv的CImage类在MFC的单文档中编辑并显示图像的方法
- 用MFC写文本文档的编辑字处理程序
- VC2005使用MSCOMM编写串口通讯程序
- 基于文档的MFC程序
- 基于VC6.0 MFC的简单串口通信软件编程
- vc串口通讯控件MSComm编程详解
- 基于Scintilla开发的MFC多文档源代码编辑器CodeEditor(一)
- 基于MFC多文档多视图结构的OGRE指北针程序
- 基于ARM+CPLD的多串口通讯协议转换方案