1 MSComm介绍
在WINDOWS环境下,用户不能直接对PC的串行端口进行操作。Visual C++.NET中,通过使用微软公司提供的Microsoft Comm Control控件(简称MSComm),可以方便地实现PC与外部设备之间的串行通信,编程工作量相对较少。
2.Visual C++.NET中控件MSComm的函数与Visual C++6.0中的控件函数有所不同。
MSComm有二十多个属性,其中主要的属性有:
CommPort:设置和返回通信端口号,CommPort=1即使用串行端口Com1。
PortOpen:打开或关闭通信端口。
InBufferSize:设置接收缓冲区大小。
OutBufferSize:设置发送缓冲区大小。
Input:读取并删除缓存区中的数据。
Output:将数据写入发送缓存区。
Settings:设置波特率、奇偶校验、数据位和停止位参数,默认值为“9600,N,8,1”,即波特率9600b/s、不进行奇偶校验、8个数据位、1个停止位。
InputLen:设置每次从缓存区读取的字节数。
InputMode:设置和返回数据类型,设置为0时读取的数据为文本形式,设置为1时读取的数据为二进制数据。PC与单片机通信时,InputMode属性常设置为二进制数据形式。
Rthreshold:设置OnComm事件发生前,接收缓存区可以接收的字符数。若设置为0,则不产生OnComm事件。
串行通信控件MSComm有二种处理通信的工作方式:事件驱动方式和查询工作方式。事件驱动方式是指:当串行端口接收或发送完指定数量数据以及发生通信错误等情况时,MSComm控件触发OnComm事件,作出相应处理。查询工作方式是指:通过查询控件的某些属性值(如InBufferCount属性)来作出进一步的处理。以下的程序实例采用事件驱动方式来接收数据。
3.NET下添加步骤
按照已有的步骤注册串口控件MScomm32.ocx,注册完成后,新建一个MFC应用程序,选 工具—添加/移除工具箱项—COM组件—添加Microsoft Communication Control, version 6.0, 就会出现一个电话图标哦!!!
添加控件,右击添加变量m_com4,这个时候会生成2个重要的文件mscomm1.cpp和mscomm1.h(这是与6.0下不同点,mscomm.cpp mscomm1.h)
控件的函数不一样的啊,Set变为put_, Get变为get_ 就搞定。
///////VC.NET 的代码
void CRobotDlg::InitCom(void)
{ m_com4.put_CommPort(4);//1=表示是COM1,若要使用COM2,则将此参数改成2、以此类推
m_com4.put_InputMode(1);//设置输入方式为二进制
m_com4.put_InBufferSize(1024);//设置输入缓冲区大小
m_com4.put_OutBufferSize(1024);//设置输出缓冲区大小
m_com4.put_Settings("9600,n,8,1");//设置参数
if(!m_com4.get_PortOpen())//打开串口
m_com4.put_PortOpen(true);
m_com4.put_RThreshold(2);//2表示有2个字节引发一个事件
m_com4.put_InputLen(0);//清除输入缓冲
}
void CRobotDlg::ComSend(BYTE data)
{
CByteArray array1; //定义字节流
array1.RemoveAll(); //清空
array1.SetSize(1); //设置字节的长度
array1.SetAt(0,data); //以2进制方式发送0xAA
m_com4.put_Output(COleVariant(array1)); //发送
}
void CRobotDlg::OnBnClickedButton1()
{ // TODO: 在此添加控件通知处理程序代码
InitCom();
ComSend(0x00);
}
/////6.0的代码
void CrobotDlg::InitCom4(void)
{
m_com4.SetCommPort(4);//1=表示是COM1,若要使用COM2,则将此参数改成
//2、以此类推
m_com4.SetInputMode(1);//设置输入方式为二进制
m_com4.SetInBufferSize(1024);//设置输入缓冲区大小
m_com4.SetOutBufferSize(1024);//设置输出缓冲区大小
m_com4.SetSettings("9600,n,8,1");//设置参数
if(!m_com4.GetPortOpen())//打开串口
m_com4.SetPortOpen(true);
m_com4.SetRThreshold(2);//2表示有2个字节引发一个事件
m_com4.SetInputLen(0);//清除输入缓冲
}
void CrobotDlg::OnBnClickedComsendButton()
{// TODO: 在此添加控件通知处理程序代码
InitCom4();
ComSend(0x00);
}
void CrobotDlg::ComSend(BYTE mydata)
{
CByteArray array1; //定义字节流
array1.RemoveAll(); //清空
array1.SetSize(1); //设置字节的长度
array1.SetAt(0,mydata); //以2进制方式发送0xAA
m_com4.SetOutput(COleVariant(array1)); //发送
}
4.请看源代码的区别,详见mscomm1.h, mscomm.cpp
如mscomm1.h下的一段串口定义函数代码
void put__CommPort(short newValue)
{
static BYTE parms[] = VTS_I2 ;
InvokeHelper(0x0, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, newValue);
}
如mscomm.cpp下的一段串口定义函数的代码
void CMSComm::SetCommPort(short nNewValue)
{ static BYTE parms[] = VTS_I2;
InvokeHelper(0x4, DISPATCH_PROPERTYPUT, VT_EMPTY, NULL, parms, nNewValue);
}
分享到:
相关推荐
把VC++.NET转换成VC++6.0 把VC++.NET转换成VC++6.0
介绍vc++.net与vc++6.0使用之差别.
扫雷源代码,vc++.net版 扫雷源代码,vc++.net版 扫雷源代码,vc++.net版
本文将深入探讨如何下载和配置VC++6.0的配色方案,以及如何使用提供的配色工具进行个性化定制。 首先,关于“VC.zip”,这很可能是包含VC++6.0配色文件的压缩包。下载该文件后,用户需要进行解压操作,通常可以通过...
例如,从VC++ 2005开始引入了.NET Framework的组件,使得C++开发者能够利用.NET平台的优势。在后续版本中,如VC++ 2010、2012、2013和2015,微软进一步加强了对C++11、C++14标准的支持,并增强了对64位系统的支持。 ...
在使用VC++6.0开发ActiveX控件并与Web端进行通信的过程中,可能会遇到多种挑战,包括但不限于参数传递方式的选择以及安全性问题。通过本文介绍的方法和技术,可以有效解决这些问题,帮助开发者顺利完成项目。当然,...
在创建基于对话框的应用程序时,可以使用VC++6.0的APPWizard生成模板,然后根据需要添加和配置MSCOMM控件,设置其属性并编写处理通信事件的代码。 总的来说,利用VC++和ActiveX控件进行串行通信,尤其是使用MSCOMM...
Win32环境下基于VC++6.0串口通信编程方法
### 利用VC++6.0实现上位机与PLC的串行通信 #### 一、引言 随着计算机技术和可编程逻辑控制器(PLC)技术的发展,现代工业已经进入了信息化时代。PLC作为新一代工业控制器,因其高性价比而在工业测控系统中得到了...
使用MSComm控件在VC++6.0中实现串行通信,需要经历从创建项目、设计对话框、添加控件、配置属性到集成MSComm控件和编写事件处理函数等多个步骤。每个步骤都需仔细操作,以确保串行通信的正确性和可靠性。通过上述...
[005]vc++6.0使用串口控件例程.zip上位机开发VC串口学习资料源码下载[005]vc++6.0使用串口控件例程.zip上位机开发VC串口学习资料源码下载[005]vc++6.0使用串口控件例程.zip上位机开发VC串口学习资料源码下载[005]...
在本文中,我们将深入探讨如何在VC++6.0环境下使用Edit控件,这是一个非常基础且重要的组件,常用于创建用户界面,允许用户输入和显示文本。Edit控件提供了多种功能,包括改变文本的视觉样式,处理文本数据,以及与...
在VC++ 6.0开发环境中,MsComm控件是一种常用的串口通信工具,尤其适合初学者学习和使用。本文将深入探讨如何利用MsComm控件进行串口通信,包括基本概念、设置方法以及实际应用。 串口通信,也称为串行通信,是...
本项目标题所指的“利用VC++6.0树形控件开发的遍历WINDOWS文件”是将Windows文件系统以树形结构展现出来,用户可以通过点击节点来浏览不同目录下的文件和子目录。以下将详细讲解如何实现这一功能。 首先,我们需要...
VC++6.0简体中文版本,支持win7提示兼容问题忽略就行。 此前装过别的版本,但win...vC++6.0精简中文版版,Win7兼容,安全无毒,适合学习使用。 注册csdn就有积分送,简单快捷,安全放心,快来下载吧!下载后评论返积分!
同步串口通信、用串口实现警报系统,VC用单文档方式实现、用于VC的DLL库,使用异步通讯方式,具体使用方法请看源码、用于串口读写数据用的程序源代码、在VC++6.0中用MSComm控件编程,可以实现串口接收数据和发送数据...
VC++6.0 使用串口控件例程知识 VC++6.0 是一个功能强大且广泛使用的集成开发环境,串口控件是其中一个重要的控件。下面我们将详细介绍如何在 VC++6.0 中使用串口控件。 建立项目 首先,我们需要打开 VC++6.0 并...
VC++ 6.0 常用控件使用方法介绍 在 VC++ 6.0 中,MFC 框架提供了多种基本控件,用于构建图形用户界面。这些控件可以帮助开发者快速生成界面,提高开发效率。下面将对 VC++ 6.0 中常用的控件进行介绍,并提供使用...
**VC++6.0 MFC 详细使用教程** 在编程领域,Microsoft Foundation Classes(MFC)是微软为...同时,虽然VC++6.0已经较旧,但其MFC库的原理和使用方式对于理解现代MFC(如在Visual Studio 2019中)依然具有指导意义。
- 使用 VC++ 6.0 编译 `FileTool.dll` 文件,确保其能够正常工作。 - 注意:如果编译出现问题,请检查相关的源代码和编译设置。 4. **卸载 FileTool 扩展** - 在 VC++ 6.0 中选择 “Tools” -> “Customize”,...