mfc c语言串口通信,C++的MFC 串口通讯(转)

2023-10-28

修改了原作者的一些小笔误,完善了一下整个过程

本例程是在VS2010环境下,使用MFC做的是一个简单的串口通信程序。欢迎交流。

1.首先,在VS2010环境下创建基于对话框的MFC应用程序。

a.选择菜单项 文件—>新建—>项目,弹出新建项目对话框。

b.左侧面板中选择Visual C++下的MFC,中间窗口中选择MFC应用程序,然后在下面的名称编辑框中键入工程名称,本例取名SerialTest,在位置编辑框中设置工程的保存路径。点击确定。

c.在弹出的MFC应用程序向导中,点下一步到应用程序类型界面,在应用程序类型下选择基于对话框,其他使用默认设置,点击完成。

a2020b4f2a9f?appinstall=0

2.接下来为对话框添加所需要的控件

a.在资源视图的资源树中双击Dialog下的IDD_SERIALTEST_DIALOG,出现如下对话框编辑窗口(默认新建项目也是出现此界面,所以此步无需操作,仅作说明)

a2020b4f2a9f?appinstall=0

b.选中控件按Delete键删除自动生成的静态文本框TODO:在此放置对话框控件、按钮控件确定和取消。

c.从右侧工具箱中添加两个Button按钮,两个Edit Control编辑框,一个StaticText静态文本框和一个Combo Box组合框。(提示:在工具箱中鼠标左键点下所需控件不放开,并拖到IDD_ADDITION_DIALOG对话框模板上,模板上会出现一个虚线框,我们找到合适的位置松开鼠标左键放下它,即可成功添加所需控件)。

d.适当改变控件大小,并合理布局控件,使之如下图所示(提示:1.用鼠标左键选中控件后周围出现虚线框,然后鼠标移到虚线框上几个黑点的位置会变成双向箭头的形状,此时就可以按下鼠标左键并拖动来改变控件大小了。当然,整个对话框模板也可以用这种方法改变大小。2.几个控件的对齐等操作可按Ctrl键同时选中几个控件,然后选择软件左上侧工具条中的几个按钮进行操作)

a2020b4f2a9f?appinstall=0

e.更改控件属性(选中控件,鼠标移至右侧属性,即出现该控件的属性面板):更改Button1的Caption为清除接收框、ID为IDC_BUTTON_CLEANUP;

Button2的Caption为发送数据、ID为IDC_BUTTON_SEND;下面的编辑框用于显示发送数据,ID设为IDC_EDIT_TXDATA;

上面的编辑框用于显示接收到的数据,ID设为IDC_EDIT_RXDATA;静态文本框的Caption为选择COM口:;ComboBox的

ID设为IDC_COMBO_COM,Type属性设为DropList(即下拉列表式组合框,其编辑框是不能编辑的,只能由用户在下拉列表框中选择了某项后,在编辑框中显示其文本),Sort属性设为False,以取消自动排序显示。

f.添加串口通信控件。首先把串口通信控件加入到工具箱中,因为默认的工具箱是不带 MS 串口通信控件的(MS 串口通信工具箱下载地址和安装方法 (可私信我发送))。方法如下:

在工具箱界面点击鼠标右键出现如下界面:

a2020b4f2a9f?appinstall=0

a2020b4f2a9f?appinstall=0

这样串口控件就已经添加至工具箱了,

a2020b4f2a9f?appinstall=0

将其拖入对话框里,如图所示(串口控件在运行时是看不到的)

a2020b4f2a9f?appinstall=0

至此控件添加基本上就完成了。

3.编写消息处理函数

a. 给Combo Box组合框添加列表项。选中ComboBox控件,右键->添加变量,设置变量名为m_comboCom,如图所示,点击完成。

a2020b4f2a9f?appinstall=0

在左侧类视图面板中,选择CSerialTestDlg类,双击下方的OnInitDialog()函数进入CSerialTestDlg::OnInitDialog()函数

a2020b4f2a9f?appinstall=0

在//TODO:在此添加额外的初始化代码添加如下代码:

// TODO: 在此添加额外的初始化代码

m_comboCom.AddString(_T("COM1")); // 为组合框控件的列表框添加列表项

m_comboCom.AddString(_T("COM2"));

m_comboCom.AddString(_T("COM3"));

m_comboCom.AddString(_T("COM4"));

m_comboCom.AddString(_T("COM5"));

m_comboCom.AddString(_T("COM6"));

m_comboCom.AddString(_T("COM7"));

m_comboCom.AddString(_T("COM8"));

m_comboCom.AddString(_T("COM9"));

m_comboCom.AddString(_T("COM10"));

b.我们希望在组合框中选中的列表项改变时,以打开相应串口并设置串口参数,那么这就要用到CBN_SELCHANGE通知消息。选中ComboBox,右键->添加事件处理程序,出现如图所示界面,点击添加编辑。

a2020b4f2a9f?appinstall=0

在CSerialTestDlg::OnCbnSelchangeComboCom()函数中添加代码之前我们需要给串口控件添加控制变量m_ctrlComm(方法见3.->a.),如图

a2020b4f2a9f?appinstall=0

然后我们创建一个类,类名为mscomm1:

a2020b4f2a9f?appinstall=0

mscomm1.h复制如下代码:

#pragma once

// 计算机生成了由 Microsoft Visual C++ 创建的 IDispatch 包装类

// 注意: 不要修改此文件的内容。如果此类由

// Microsoft Visual C++ 重新生成,您的修改将被覆盖。

/

// CMscomm1 包装类

class CMscomm1 : public CWnd

{

protected:

DECLARE_DYNCREATE(CMscomm1)

public:

CLSID const& GetClsid()

{

static CLSID const clsid

= { 0x648A5600, 0x2C6E, 0x101B, { 0x82, 0xB6, 0x0, 0x0, 0x0, 0x0, 0x0, 0x14 } };

return clsid;

}

virtual BOOL Create(LPCTSTR lpszClassName, LPCTSTR lpszWindowName, DWORD dwStyl

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mfc c语言串口通信,C++的MFC 串口通讯(转) 的相关文章

  • springmvc 防止XSS攻击

    XSS攻击 即Cross Site Script 跨脚本攻击 往web页面注入html代码或者script代码 造成页面混乱 spring mvc框架中 有很多编辑器 每个编辑器有不同的作用 防止XSS攻击 就用到PropertyEdito
  • 图像处理之OpenCV腐蚀和膨胀

    图像处理之OpenCV腐蚀和膨胀 在图像处理中 腐蚀和膨胀是常用的基础操作 它们可以对图像进行去噪 分割和形态学处理等 本文将介绍使用OpenCV库进行腐蚀和膨胀的方法及其相关代码 腐蚀操作 腐蚀操作可以看作是一种局部最小值滤波器 它的主要
  • UNIX环境高级编程习题答案——第四章

    4 1 用stat函数替换图4 3程序中的lstat函数 如若命令行参数之一是符号链接 会发生什么变化 会输出符号链接所指向文件的文件类型 4 2 如果文件模式创建屏蔽字是777 八进制 结果会怎样 用shell的umask命令验证该结果
  • 判断子序列的三种方法

    392 判断子序列https leetcode cn problems is subsequence 给定字符串 s 和 t 判断 s 是否为 t 的子序列 字符串的一个子序列是原始字符串删除一些 也可以不删除 字符而不改变剩余字符相对位置
  • springmvc源码学习(二十六)异步请求管理器WebAsyncManager异步任务执行流程

    目录 前言 一 回顾 二 异步任务分发 三 异步任务执行 总结 前言 接着上一篇进行分析 在异步任务创建完 那接下来springmvc会去处理该异步任务 一 回顾 1 上一篇中 在请求完接口 生成了一个调度任务dispatchTask 存储
  • IDEA如何向Maven项目中添加JDBC

    IDEA如何向Maven项目中添加JDBC 解决这个问题有两个步骤 下载这个jar包 导入这个jar包 向pom xml文件中导入依赖 我们依次展开 一 Jar包的下载 访问MySQL官网 点击顶部栏的下载 点击MySQL Communit
  • python selenium4 使用无界面浏览器 爬虫 并存储mysql数据库

    浏览器驱动 需要查看对应浏览器版本进行下载 selenium PyPIhttps pypi org project selenium 浏览器设置中查看当前版本 from selenium import webdriver from sele
  • 【JavaScript】只需要7行代码实现图片懒加载

    前言 面试的时候 面试官经常会问到一个问题 前端优化性能 其中 图片懒加载是性能优化的一个点 准备 offsetTop offsetTop是元素到offsetParent顶部的距离 offsetParent offsetParent是距离具
  • Python列表元素删除方法详解

    Python列表元素删除方法详解 在Python中 列表是一种非常常用的数据类型 它允许我们按照特定的顺序存储大量元素 但是在实际开发中 经常需要对列表中的元素进行删除操作 本篇文章将向您介绍Python中列表删除元素的四种方法 帮助您轻松
  • ARCGIS一些tips

    1 不同shapefile使用相同的自定义风格
  • 网络空间安全导论-第三章习题

    网络空间安全导论 第三章习题 TCP IP模型共有几层 各层各有什么功能 应用层 访问网络服务的接口 例如为操作系统或网络应用程序提供访问网络服务的接口 表示层 提供数据格式转换服务 如加密与解密 图片解码和编码 数据的压缩和解压缩 会话层
  • 【全国科技者工作日】:致敬每一位科技工作者,时代的发展永远也少不了这一批人!

    在我们的日常生活中 科技已经渗透到了方方面面 从第一台计算机的发明到智能手机的出现 再到人工智能的应用 科技的发展已经深刻地改变了我们的生活 在这个快速发展的时代 科技工作者是推动社会发展的重要力量 他们的辛勤付出和不懈努力为我们带来了更多
  • 量化python:使用热力图heatmap绘制胜率图方法及工具函数

    胜率图是分析策略的一种图形 对于胜率的分析需要三种数据 策略 参数集 表现在胜率图的横纵轴含义 对比的场景编号 表现在对比两个策略时使用的场景 通常见于不同的时间 不同的参数 不同的周期 场景对应的值 场景对应的值 可能代表收益率 模型的分
  • Oracle学习笔记5_简单查询

    Oracle简单查询语句 查看表结构 desc dept 查看所有列 select from dept 查询指定列 select ename sal job deptno from emp 如何取消重复行 select distinct d
  • C语言system函数用法

    system 函数用于向操作系统传递控制台命令行 以WINDOWS系统为例 通过system 函数执行命令和在DOS窗口中执行命令的效果是一样的 所以只要在运行窗口中可以使用的命令都可以用SYSTEM 传递 但要注意的是输入斜线时要输入两个
  • Python中的各种函数

    1 map 函数 将可迭代对象中每一条数据都执行一次函数 并且将函数执行的返回结果放入另一个可迭代对象中 2 filter 函数 会将列表中每一条数据执行一次函数 并将条件为真的数据放入结果中 None False 0这些都是条件为假的 数
  • leetcode算法面试题:单词接龙问题

    题目 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 序列中第一个单词是 beginWord 序列中最后一个单词是 endWord 每次转换只能改变一个字母 转换过程中的中
  • Spring——Bean 的生命周期

    目录 一 Bean 的生命周期 二 代码演示 三 主要步骤简述 一 Bean 的生命周期 对于普通的 Java 对象 new 的时候会去创建对象 而当它没有任何引用的时候则被垃圾回收机制回收 相较于前者 由Spring IoC 容器托管的对
  • 从事煤矿智能化多年,收集的相关政策、技术文件

    2016 年 6 月 1 日 能源技术革命创新行动计划 2016 2030 年 原文 2018 年 智慧矿山信息系统通用技术规范 2019 年 1 月 煤矿机器人重点研发目录 2020 年 3 月 3 日 关于印发 关于加快煤矿智能化发展的

随机推荐

  • 因果相关的论文与算法

    跟causality相关的算法目录方便大家查找代码和论文 https github com rguo12 awesome causality algorithms 如何将因果推断 分析 和深度学习有机结合弥补两者的不足 有哪几个关键问题需要
  • Java编程的逻辑 (30) - 剖析StringBuilder

    本系列文章经补充和完善 已修订整理成书 Java编程的逻辑 由机械工业出版社华章分社出版 于2018年1月上市热销 读者好评如潮 各大网店和书店有售 欢迎购买 京东自营链接 http item jd com 12299018 html 上节
  • promise详解

    一 promise含义 Promise 是异步编程的一种解决方案 比传统的解决方案 回调函数和事件 更合理和更强大 它由社区最早提出和实现 ES6 将其写进了语言标准 统一了用法 原生提供了Promise对象 所谓Promise 简单说就是
  • poi 灵活导出excel(有这一篇即可~~~~)

    大家在开发项目的时候 但凡涉及数据多而杂的时候或多或少需要导出excel 用什么的工具类这时候就很烦恼了 接下来的工具类傻瓜式一键生成大家需要的excel 1 依赖 Apache POI是Apache软件基金会的开放源码函式库 POI提供A
  • 以太坊开发者常见的问题答案

    求职面试不仅是一种过滤掉不合格候选人的考验 对于候选人来说 这也是一个很好的机会 可以评估未来雇主的开发团队的优秀程度 如果你的面试官问的是原始的 蹩脚的或错误的问题 是的 他们会问你一些完全没有意义的事情 然后这是一个红旗 也许你应该重新
  • Error:Cannot build Artifact 'art_training:war exploded' because it is included into a circular depen

    今天在做项目弄项目的时候启动tomcat出现问题错误如下 Error Cannot build Artifact art training war exploded because it is included into a circula
  • 远程访问服务器Jupyter Notebook (浏览器访问和pycharm访问)

    1 在remote server上运行 jupyter notebook no browser port 8888 复制远程终端显示的 token 序列 2 在本地终端上运行 ssh L 8888 localhost 8888
  • Android中的DPI和PPI

    DPI是Android开发中的像素密度 PPI是Android手机物理像素密度 他们两者是完全没有关系的 千万不要把ppi的公式等同于dpi dpi是通过displayMetrics获取的 val densityDpi resources
  • 芯片开发语言:Verilog 在左,Chisel 在右

    来源 老石谈芯 在最近召开的RISC V中国峰会上 中科院计算所的包云岗研究员团队正式发布了名为 香山 的开源高性能处RISC V处理器 前不久我有幸和包老师就这个事情做了一次深度的交流 我们聊了关于RISC V 还有 香山 处理器的前世今
  • VS code Python使用:debug环境配置,日常使用技巧

    1 配置debug环境 1 1 步骤一 9步配置远程环境 成功解决 vscode远程调试python 如果单步跳过快捷键F10没有反应 可以 设置 键盘快捷方式 重新设置一遍 Debug 单步跳过 随便设一个键 然后再设置回 F10 拓展插
  • 算法_快速排序

    Python 快速排序 快速排序使用分治法 Divide and conquer 策略来把一个序列 list 分为较小和较大的2个子序列 然后递归地排序两个子序列 步骤为 挑选基准值 从数列中挑出一个元素 称为 基准 pivot 分割 重新
  • 【C语言】_8.数据的存储

    正文 1 数据类型介绍 前面我们已经了解到基本的内置类型 char 字符数据类型 1个字节 short 短整型 2个字节 int 整型 4个字节 long 长整型 4或8个字节 long long 更长的整型 8个字节 float 单精度浮
  • Android让EditText输入框真正失去焦点问题解决

    在显示一些记录的时候 不希望EditText有光标 也就是失去焦点 可以通过调用edittext clearFocus 来实现 但clearFocus 的会将焦点移到Activity的第一个View 如果不幸你的EditText就是第一个V
  • 由于找不到d3dx9_43.dll无法继续执行代码

    电脑提示由于找不到d3dx9 43 dll 无法继续执行代码如何修复呢 相信不少小伙伴遇到过这个问题 d3dx9 43 dll是Windows系统中重要的组件 缺失或者损坏都会导致很多游戏跟软件无法运行打开 小编今天就把修复教程分享给大家
  • java map取第一个元素_从HashMap获取第一个和最后一个元素

    6 个答案 答案 0 得分 3 首先 地图不是有序的 所以你不会真正拥有第一个和最后一个元素 但是 如果你想获得它的第一个和最后一个元素 你可以只获取值并将其转换为数组 这不是很漂亮 但它会起作用 Map result new HashMa
  • 有没有免费/便宜好用的云服务器推荐?

    国内各大云平台目前都处于拉新阶段 免费是有的 但是时间都有限 例如腾讯云个人注册新用户可以领取一个月的免费服务器 企业注册新用户可以领取6个月的免费服务器 虽然都是1核1G1M带宽的 但是对于熟悉云环境还是有一定的帮助 具体可前往腾讯云官网
  • 蓝桥杯嵌入式STM32G431——第十二届第一场省赛停车计费系统真题及代码

    1 第十二届第一场省赛真题 2 解题思路整理 本届赛题相较于往届赛题在串口部分有较为复杂的逻辑 想要解决还是需要下一番功夫的 首先除了串口模块 LED LCD 按键 PA7输出频率固定 占空比固定的PWM这些模块都是基本的套路比较简单 先把
  • C++模板*******

    模板是泛型编程的基础 泛型编程即以一种独立于任何特定类型的方式编写代码 模板是创建泛型类或函数的蓝图或公式 库容器 比如迭代器和算法 都是泛型编程的例子 它们都使用了模板的概念 每个容器都有一个单一的定义 比如 向量 我们可以定义许多不同类
  • 配置Win10解决VMware Intel VT-x虚拟化问题

    http jingyan baidu com article 4b52d702a3e0aafc5d774b7c html
  • mfc c语言串口通信,C++的MFC 串口通讯(转)

    修改了原作者的一些小笔误 完善了一下整个过程 本例程是在VS2010环境下 使用MFC做的是一个简单的串口通信程序 欢迎交流 1 首先 在VS2010环境下创建基于对话框的MFC应用程序 a 选择菜单项 文件 gt 新建 gt 项目 弹出新