VC6下用控件进行串口通信

使用VC6.0编写串口发送接收的函数 使用VC6.0编写一个串口发送接收的程序 // #include "stdafx.h" #include "stdio.h" #include "comapi.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ////////////////////////////////////////////////////////////////////////// 阅读详情

打开VC++6.0,建立一个基于对话框的MFC应用程序。

  菜单中依次选择Project -> Add To Project -> Components and Controls

  在弹出的Components and Controls Gallery 窗口中双击Registered Activex Controls文件夹

  选中Microsoft Communications Control,version 6.0,点击Insert添加控件,如下图

  在这里如果没有找到Microsoft Communications Control,version 6.0怎么办?

  如果没有,说明这个控件还没有注册。那么需要先注册此控件,方法如下:

  开始 -> 运行 中输入 regsvr32 mscomm32.ocx

  点击确定注册

  添加控件后会弹出一个确认框

  点击“确定”

  再点击"OK",控件就添加成功了

  把此控件拖入界面中,利用MFC ClassWizard添加成员变量(我在这里用的变量名是m_msCom,可变),如图

  然后在控件的属性里进行一些必要的配置:

  CommPort设置串口号

  InputMode设置为1-Binary,表示以二进制方式检取数据

  RThreshold设置为1,表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件

  其它的用默认值。

  也可以在OnInitDialog()函数中用代码设置,如下:

 m_msCom.SetCommPort(1);  // 指定串口号为1(视实际情况而定)

 if (m_msCom.GetPortOpen())

 {

  m_msCom.SetPortOpen(FALSE);

 }

 m_msCom.SetInputMode(1); //1:表示以二进制方式检取数据

 m_msCom.SetRThreshold(1);

  //参数1表示每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件

  设置好以后,要在程序的开始打开串口,不然是没发使用的。在OnInitDialog中加入以下代码:

 m_msCom.SetPortOpen(TRUE);  // 打开串口

 m_msCom.GetInput();//先预读缓冲区以清除残留数据

  OK,在你需要的地方可以随时发送串口数据了,很简单:

m_msCom.SetOutput(COleVariant(TXData));   //发送数据TXData

  接收串口数据:

  首先要添加串口事件消息处理函数,双击控件,弹出添加成员函数对话框,我们用默认的函数名OnOnCommMscomm1,这里也可以更改函数名。

  这个函数是用来处理串口消息事件的,如每当串口接收到数据(正如我们前面设置的RThreshold,每当串口接收缓冲区中有多于或等于1个字符时将引发一个接收数据的OnComm事件),就会产生一个串口接收数据缓冲区中有字符的消息事件,刚才添加的函数就会执行,我们在OnOnCommMscomm1函数加入相应的处理代码就能实现自已想要的功能了。在该函数中加入如下代码以接收数据:

 // TODO: Add your control notification handler code here

 if (m_msCom.GetCommEvent() == 2)   //事件值为2表示接收缓冲区内有字符

 {

  Sleep(100);

  VARIANT rec_data;

  int data_len;

  char cData[1024];

  rec_data = m_msCom.GetInput();  // 读取缓冲区

  data_len = rec_data.parray->rgsabound->cElements;

  memcpy(cData,(char *)rec_data.parray->pvData,data_len);

  cData[data_len] = 0;

  // cData就是指向接收到的字符串的指针

  m_list.AddString(cData); //在listBox控件中显示接收到的数据

 }
VC6.0 MFC 串口通信 AT命令 最近开始学习C++,MFC,以前一直是C,LinuxC,javascript方面的,虽然 阅读详情

相关推荐

LG K120S PLC串口通信开发包:VC6.0源码+ActiveX控件+TE测试程序

一套开箱即用的LG K120S PLC串口通信开发资源,包含完整VC6.0工程源码,核心是封装好的ActiveX控件testocx.ocx,内置串口驱动、K120S专用协议解析(支持D寄存器读写、M继电器状态查询、定时器监控等)、响应超时与校验处理。配套提供可直接运行的TE.exe测试程序,带图形化操作界面,能实时发送指令并显示返回数据;附带注册/卸载控件的批处理脚本,方便部署调试。源码模块清晰划分:_serialport.cpp负责底层RS232通信,_Plc.cpp实现PLC逻辑交互,agreement

r7s8t的博客 212

MSComm控件

 Visual C++为我们提供了一种好用的ActiveX控件Microsoft Communications Control(即MSComm)来支持应用程序对串口的访问,在应用程序中插入MSComm控件后就可以较为方便地实现对通过计算机串口收发数据。  要使用ActiveX控件MSComm,程序员必须将其添加入工程,其方法是:  (1)单击主菜单project的子菜单Add To project

firy_lau1982的专栏 5344

还在用VC6.0?MSComm控件串口通信从入门到避坑

串口通信作为工业控制与嵌入式开发中最基础的数据交互方式,至今仍在设备数据采集、仪器控制等场景中发挥着关键作用。其核心原理是通过配置波特率、数据位、校验位等参数,在计算机与外部设备之间建立可靠的字节流通道。掌握串口编程能力,对维护老系统的工程师和初入行的学生都极具实用价值。在实际工程中,很多老工控机仍运行在VC6.0环境下,而MSComm控件正是这一平台上的高效解决方案,它封装了底层Win32 API的细节,使开发者能够快速实现串口收发。从环境搭建的常见坑点出发,这里会详细讲解MSComm控件的配置、收发逻辑

weixin_42639246的博客 227

计算机网络实验vc6实现串口通信,串口通信基础知识及VC++实现

串口是计算机上一种非常通用设备通信的协议。大多数计算机包含两个基于RS232的串口串口通信的概念非常简单,串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是由于串口通信是异步的,串口可以在使用一根线发送数据的同时用另一根线接收数据。它很简单并且能够实现远距离通信。串口通信最重要的参数是波特率、数据位、停止位和奇偶校验。而在VC++中实现串口通信也是一名VC程序员必须要掌...

weixin_39816027的博客 1102

使用VC6.0开发COM组件 - 傻瓜式,不讲理论,只讲实例

2. 选择 Dynamic link Library (DLL),其它两个请百度,或参照其它文档。IID_IUnknown, // 想取得 IUnknown 接口指针。CLSCTX_INPROC_SERVER, // 以进程内组件 DLL 方式加载。3. 添加一个自己的COM类,用于导出需要用到的接口。//(2)创建实例对象,获取IUnknown接口指针。printf("没注册吧\n");多了一个接口和一个类,这都是你刚才添加的。然后运行一下就可以看到效果了。

自学C++,会写HelloWorld 1126

基于VC6实现串口名称读取和热插拔功能

创建一个基于对话框的应用,并加入以下控件 按ALT+W键,然后为ComboBox控件关联变量

mygod2008ok的专栏 775

MFC中利用MSComm控件实现串口通信的例子

之前学过一些MFC,现由于项目需要,上网查阅各种串口通信资料,并成功实现串口通信。 开发环境:VC6.0 参考资料:http://blog.sina.com.cn/s/blog_6e84dc280101433n.html

program_Li的博客 3014

三菱PLC串口通信程序

三菱PLC串口通信程序 去发现同类优质开源项目:https://gitcode.com/ 简介 本资源提供的是一个基于VC6.0开发的三菱PLC串口通信程序。本程序能够通过串口通信方式,实现对于三菱PLC D寄存器数据的读取与写入操作,同时支持判断PLC的在线状态。 特点 程序包含三菱PLC的通信协议代码,方便用户理解和二次开发。 基于MSCOMM控件开发,适用于串口通信需求。 限定开发环境为V...

gitblog_06762的博客 907

VC 6.0实现串行通信的三种方法

VC 6.0实现串行通信的三种方法 中国科学院上海光学精密机械研究所(201800) 王颖 前 言 ---- 在实验室和工业应用中,串口是常用的计算机与外部串行设备之间的数据传输通道,由于串行通信方便易行,所以应用广泛。依据不同的条件实现对串口的灵活编程控制是我们所需要的。 ----在光学镜片镀膜工艺中,用单片机进行多路温度数据采集控制,采集结果以串行方式进入主机,每隔10秒向主

iBreathe的专栏 1438

控件(CMSComm)进行串口编程

1.建立项目  2.在项目中插入MSComm控件3.利用ClassWizard定义CMSComm类控制变量4.在对话框中添加控件  5.添加串口事件消息处理函数OnComm()6.打开和设置串口参数7.发送数据  开始吧:1.建立项目:打开VC++6.0,建立一个基于对话框的MFC应用程序SCommTest(与我源代码一致,等会你会方便一点); 

luheng2006的专栏 3617

MFC 串口编程详细教程 图文并茂

转载:http://blog.csdn.net/a_runing_man/article/details/9947343 本人之前从未接触MFC编程,由于项目需要,所以上网查阅了相关资料,并实现了上位机串口通信。由于网上的资料还不够详细,本人决定写一个图文并茂的详细教程。因为本人只是初学,如有错误,欢迎指点。 开发环境是:VC 6.0 串口编程方法:32位控件 参考资

Rxiang12的博客 8564

MSComm occsite 161

今天装了vs2005准备使用新功能进行串口通信,可是vs2005没有mscomm控件,还要手动注册,注册完成后,发现函数跟我原先在vc6.0的不一样,比如6.0是SetCommPort但是vs2005是put_CommPort,很不爽,卸载了2005,继续使用vc6.0,写好程序后,软件一运行到mscomm的create函数就跳出如下错误 断言错误,跟踪断点,发现时在判断指针是否为空时出现错误...

weixin_30369041的博客 124
上一篇: 保存图像
下一篇: VC控件MSComm编写串口通信程序(转)
dadaadao
博客等级 码龄19年 98粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值