新建MFC项目,名称SerialComm

基于对话框,去掉使用Unicode库

确认下一步的ActiveX控件选中,完成。删掉默认的控件,放上下面的控件(控件ID最后的表格中有)

添加成员变量,有两种方法,右键添加变量或类向导》成员变量

方法一:

方法二:

注意不同,类别和变量类型对不同类型的控件是不同的

然后添加串口控件,左下角切换到解决方案,然后项目名上右键

加入控件对象

在那个电话控件上右键编辑控件可以删掉旁边的空白

给控件添加变量和响应函数

变量名为m_ctrlcomm

同理为两个按钮添加响应函数,结果

三个响应函数代码:

void CSerialCommDlg::OnBnClickedBtnopenserial()
{if(m_ctrlcomm.get_PortOpen())m_ctrlcomm.put_PortOpen(FALSE);m_ctrlcomm.put_CommPort(12);               //打开COM12m_ctrlcomm.put_InputMode(1);               //1:表示以二进制方式检取数据m_ctrlcomm.put_InBufferSize(1024);           //设置输入缓冲区的大小,Bytesm_ctrlcomm.put_OutBufferSize(1024);            //设置输入缓冲区的大小,Bytesm_ctrlcomm.put_Settings("9600,n,8,1");       //波特率9600,无校验,8个数据位,1个停止位  if( !m_ctrlcomm.get_PortOpen()){m_ctrlcomm.put_PortOpen(TRUE);          //打开串口if(m_ctrlcomm.get_PortOpen()){SetDlgItemText(IDC_BtnOpenSerial,"COM12已经打开");}else{MessageBox("该串口无法打开,请检查");}}m_ctrlcomm.put_RThreshold(1);                //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件m_ctrlcomm.put_InputLen(0);                   //设置当前接收区数据长度为0m_ctrlcomm.get_Input();                      //先预读缓冲区以清除残留数据
}void CSerialCommDlg::OnBnClickedBtnsendtxdata()
{UpdateData(TRUE); //UpdateData函数参数和内容传递方向对应关系:false:变量->控件 true:控件->变量 m_ctrlcomm.put_Output(COleVariant(m_EditTxData));//发送数据m_EditTxData = "";UpdateData(false);//发送之后将发送输入框清空
}void CSerialCommDlg::OnCommMscomm1()
{VARIANT variant_inp;COleSafeArray safearray_inp;LONG len,k;BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.CString strtemp;if(m_ctrlcomm.get_CommEvent()==2)        //事件值为2表示接收缓冲区内有字符{variant_inp=m_ctrlcomm.get_Input(); //读缓冲区safearray_inp=variant_inp;           //VARIANT型变量转换为ColeSafeArray型变量len=safearray_inp.GetOneDimSize(); //得到有效数据长度for(k=0;k<len;k++)safearray_inp.GetElement(&k,rxdata+k);//转换为BYTE型数组for(k=0;k<len;k++) //将数组转换为Cstring型变量{BYTE b=*(char*)(rxdata+k); //字符型strtemp.Format("%c",b); //将字符送入临时变量strtemp存放m_EditRxData+=strtemp;    //加入接收编辑框对应字符串 }}UpdateData(FALSE); //UpdateData函数参数和内容传递方向对应关系:false:变量->控件 true:控件->变量
}

编译运行,连接单片机,点击打开串口,单片机上电后就发送0123456789字符串,然后进入循环,将收到的数据发回去。

下载的代码打开后类视图和资源视图应该是空白,VS中工具》选项》文本编辑器》高级设置如下,然后关闭VS,双击SerialComm.sln这个文件等VS加载完成就有了。

代码下载地址点击打开链接

在 MFC应用程序向导中如果没有勾选 ActiveX控件 ,最终程序编译没有错误和警告,但是可能无法运行,而是有一堆类似  线程 'Win32 线程' (0x125c) 已退出,返回值为 27 (0x1b)。的输出,这时需要检查SerialComm.cpp文件CWinApp::InitInstance();这一行后面是否调用了AfxEnableControlContainer();这个函数,关于这一点介绍可参考http://blog.csdn.net/dadalan/article/details/4602825

VS2010串口通信相关推荐

  1. VS2010串口通信详解

    http://blog.csdn.net/whereyougo/article/details/40686279

  2. Visual C++串口通信编程---多线程异步方式

    Visual C++串口通信编程---多线程异步方式 1. 串口通信基础 提到串口让人想起并口,它们是计算机中两个比较重要的通信方式. 串口:也叫COM口,把字节的二进制位按位列队进行传输,每个字节占 ...

  3. python第三方库之学习pyserial库--串口通信

    pyserial串口通信库 1.安装pyserial库 2.填写串口参数的注意事项 3.简单封装一下 4.碰到的bug 1.安装pyserial库 pip install pyserial versi ...

  4. VC串口通信编程-2

    VC串口通信编程 (2009-07-08 13:48:40) 转载▼ Win32串口编程(转:韩耀旭) 在工业控制中,工控机(一般都基于Windows平台)经常需要与智能仪表通过串口进行通信.串口通信 ...

  5. Linux ROS与嵌入式的串口通信

    1.根据ros wiki的官方教程 学习即可,并且有许多例子可供学习 http://wiki.ros.org/rosserial_arduino/Tutorials 2.用ASIO读写设备串行口 AS ...

  6. 投影串口测试程序_【原创】串口通信测试程序

    源代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; ...

  7. labVIEW与单片机实现串口通信的设计过程

    1.概述 在现代测控系统中,我们经常会采用上位机和下位机的开发控制模式.下位机主要是用来采集数据,可以通过嵌入式控制器.单片机控制器.PLC等来实现.上位机主要是图形界面,用来实时显示采集数据,并进行 ...

  8. chord协议模拟实现_C#.NET和单片机串口通信实现监控单片机数字量输入继电器输出模拟量输入模拟量输出...

    一.必备软件和硬件: 1.C#.NET: 2.单片机开发板: 3.通信电缆. 二.通信参数: 1.数据位:8位 2.校验方式:无校验 3.停止位:1位 4.波特率:9600bps 5.通信协议:自定义 ...

  9. java串口通信DataRecive_串口通信之DataReceive事件触发时机

    环境:Windows PC.本机虚拟COM2连接COM3.串口调试助手COM2发数据 图1 1> ReceivedBytesThreshold为默认值1:2> 一次发送41个字节:3> ...

最新文章

  1. SQL SERVER 常用日期计算
  2. python正则匹配所有的中文,数字和英文
  3. .NET Core加解密实战系列之——RSA非对称加密算法
  4. C#开发笔记之21-C#解析Json(序列化/反序列化)的最佳实践。
  5. android中seekbar 常用属性列表,随笔–android中修改SeekBar控件默认显示-Fun言
  6. Java内存模型深度解析:重排序
  7. XSS测试平台源码——免费分享
  8. 《女士品茶》与统计检验
  9. Jmeter+badboy
  10. 虚拟机xp系统如何安装--win10专业版
  11. 图形学-着色(Blinn-Phong模型)
  12. 我如何建立热线电话喀拉拉邦并为抗洪救灾做出了贡献
  13. 使用花生壳配置内网穿透
  14. dsoframer-在线编辑office文档,一款开源的由微软提供
  15. confluence 配置
  16. 前端多页面的代码压缩和混淆
  17. eclipse refreshing external folders解决方案
  18. win7一点计算机就卡死,Win7系统卡屏假死怎么解决
  19. 值得一生收藏的影视经典台词
  20. 软路由当文件服务器拒绝了连接,软路由服务器怎么设置方法

热门文章

  1. 天纵智能软件快速开发平台一般查询分析插件
  2. 战斗 表现和逻辑分离_冗长的优点和表现力的缺点
  3. java毕业生设计中药分类管理系统计算机源码+系统+mysql+调试部署+lw
  4. 简单的恶意样本行文分析-入门篇
  5. 杭电oj1062题c语言答案,杭电大OJ题1062,为什么这样的代码会Time Limited exceed,是太复杂了吗?...
  6. layaair引擎做的一个三消游戏
  7. 计算机毕业设计源代码java项目开发实例ssh+mysql实现的Javaweb在线订电影票系统|影视[包运行成功]
  8. 这个平台展示了如何使用AI预测股市走向
  9. 项目数据验证_如何快速发货和验证新项目
  10. java毕业生设计校园闲置物品信息管理系统计算机源码+系统+mysql+调试部署+lw