一、注册MSCOMM

1、下载控件MSCOMM32.OCX(32位),mswnisck.ocx(64位)

2、把这个ocx文件放在c盘WIndows的system32里,打开cmd执行:regsvr32 MSCOMM32.OCX(32位)

   把这个ocx文件放在c盘WIndows的syswow64里,打开cmd执行:regsvr32 c:\windos\syswow\mswnisck.OCX(64位)

3、在图形界面右键-》插入ActiveX控件,找到MS Communication控件,放在界面里(是一个黄色电话)

二、打开串口

m_mscomm.put__CommPort(1);//选择串口一
m_mscomm.put_InputMode(1);//二进制方式读写数据
m_mscomm.put_InBufferSize(1024);//接收缓冲区大小,字节
m_mscomm.put_OutBufferSize(1024);//发送缓冲区大小,字节
m_mscomm.put_Settings(_T("9600,n,8,1"));//9600波特率,8个数据位,1个停止位
m_mscomm.put_InputLen(0);//设置当前接收区数据长度为0,表示全部读取
m_mscomm.put_RThreshold(1);//接收缓冲区有1个及1个以上字符时,将引发接收数据的OnComm
m_mscomm.put_PortOpen(TRUE);//打开串口,如果打开失败,此函数会调用AfxMessageBox来显示错误信息,并返回

三、发送数据

m_mscomm.put_Output((COleVariant)m_sendstr);//如果发送失败,此函数会调用AfxMessageBox提示错误信息并返回

四、接收数据(基于事件驱动型,和中断类似)

在图形界面,右键MSComm控件,添加事件处理程序onComm,在函数里:

VARIANT variant;
variant=m_mscomm.get_Input();//把接收缓冲区里的数据放在variant结构体中,这个结构体里有很多联合体,数据应该放在其中一个中
COleSafeArray colesafearray;//定义一个安全数组,是为了下面处理数据
colesafearray = variant;//把返回值存放在这个安全数组里
byte buf[512];//定义一个字节数据
long len, k;
len = colesafearray.GetOneDimSize();//数据一共有多少字节
for (k = 0; k < len; k++)
  colesafearray.GetElement(&k, buf + k);//把安全数组里的数据转移到字节数组buf中,方便打印
buf[len] = 0;//防止乱码
AfxMessageBox((CString)buf);

四、关闭串口

m_mscomm.put_PortOpen(FALSE);

ps:如果注册失败,有可能是对c盘的权限不够,把ocx放在其他路径如D盘注册一样使用

MFC使用MsComm做串口通信的更多相关文章

  1. 多线程串口通信 MFC CSerialPort

    写在前面: 晚上应该继续完成未写完的代码,但Chrome上打开的标签实在太多了,约30个了,必须关掉一些,所以需要把自己看的整理一下然后关掉.本次主要写点MFC环境下多线程串口通信相关的东西,这包括线 ...

  2. C# 编程实现串口通信

    http://blog.sina.com.cn/s/blog_6c67dab30101p3vn.html ----------------------------------------------- ...

  3. c#串口通信并处理接收的多个参数

    最近摸索做个上位机,简单记录一下关键的几个部分 c#做串口通信主要使用的是System.IO.Ports类,其实还是十分方便的 最终效果如下: 千万不要忘记了下面这个 填写串口相关配置 我们可以通过G ...

  4. 基于Arduino和python的串口通信和上位机控制

    引言 经常的时候我们要实现两个代码之间的通信,比如说两个不同不同人写的代码要对接,例如将python指令控制Arduino控件的开关,此处使用串口通信是非常方便的,下面笔者将结合自己踩过的坑来讲述下自 ...

  5. 串口通信中,QString 、QByteArray 转化需要注意的问题

    在做串口通信的时候,其中犯了一个错误.在此记录一下:QT中串口通信接到收据和发送数据的接口如下: QByteArray QIODevice::readAll()//接受数据 qint64 QIODev ...

  6. VS2008基于对话框的MFC上位机串口通信(C++实现)简单例程

    首先,在 vs2008 环境下创建 MFC 运用程序 设置项目名称为 ComTest(这个地方随意命名,根据个人习惯),点击确定后,点击下一步 出现如下界面 选择"基于对话框"模式 ...

  7. (转载)用vs2010开发基于VC++的MFC 串口通信一*****两台电脑同一个串口号之间的通信

    此文章以visual C++数据採集与串口通信測控应用实战为參考教程 此文章适合VC++串口通信入门 一.页面布局及加入控件 1, 安装好vs2010如图 2, 新建一个基于VC++的MFC项目com ...

  8. 串口通信-MSComm控件使用详解

    串口通信-MSComm控件使用详解 2012年11月13日 09:35:45 他山之石可以攻玉 阅读数:37952更多 个人分类: 控件编程Delphi编程   MSComm 控件通过串行端口传输和接 ...

  9. C#做一个简单的进行串口通信的上位机

    C#做一个简单的进行串口通信的上位机   1.上位机与下位机 上位机相当于一个软件系统,可以用于接收数据.控制数据.即可以对接收到的数据直接发送操控命令来操作数据.上位机可以接收下位机的信号.下位机是 ...

随机推荐

  1. session hijacking-php.ini

    wamp->php.ini ; This option forces PHP to fetch and use a cookie for storing and maintaining; the ...

  2. kubernetes实战(十五):k8s使用helm持久化部署jenkins集成openLDAP登录

    1.基本概念 Jenkins在DevOps工具链中是核心的流程管理中心,负责串联系统的构建流程.测试流程.镜像制作流程.部署流程等,在持续集成中常用到的工具如下: Maven:源代码编译工具 Robo ...

  3. xpath教程 1 - 什么是XPath

    xpath教程 1 什么是XPath? XPath (XML Path Language) 是一门在 XML 文档中查找信息的语言,可用来在 XML 文档中对元素和属性进行遍历. W3School官方 ...

  4. Lodash 中文文档 (v4.16.1) 手机版

    http://lodash.swift.ren/ 手机扫描二维码直接进入

  5. [py]字符串/列表

    去除str首尾空格(切片) ## str长度 循环,判断 ### [:i] [i:] 记录位置点 ## 方法1 def trim2(s): s2 = "" start = 0 en ...

  6. [LeetCode] 496. Next Greater Element I_Easy tag: Stack

    You are given two arrays (without duplicates) nums1 and nums2 where nums1’s elements are subset of n ...

  7. Mantle 与Injection

    本来Injection可以本地打补丁实时修改代码,但是不知道Mantle的数据类为何不能打补丁,可能因为Mantle利用了很多运行时的技术吧.

  8. docker 批量删除容器和镜像

    docker 批量删除容器和镜像 1,删除单个镜像或者容器 docker  rmi  镜像ID/镜像名字:TAG docker  rm  容器ID/容器名字 1.停止所有的container,这样才能 ...

  9. Django中的admin组件分析

    admin的使用介绍 django-admin的使用 Django 提供了基于 web 的管理工具. Django 自动管理工具是 django.contrib 的一部分.可以在项目的 setting ...

  10. mysql buffer

    php与mysql的连接有三种方式,mysql,mysqli,pdo.不管使用哪种方式进行连接,都有使用buffer和不使用buffer的区别. 什么叫使用buffer和不使用buffer呢? 客户端 ...