`

VC++.NET和VC++6.0串行通信控件的使用区别

阅读更多
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++6.0使用之差别.htm

    介绍vc++.net与vc++6.0使用之差别.

    扫雷源代码,vc++.net版

    扫雷源代码,vc++.net版 扫雷源代码,vc++.net版 扫雷源代码,vc++.net版

    VC.zip_VC++6.0下载_VC++6.0配色_vc++6.0配色工具

    本文将深入探讨如何下载和配置VC++6.0的配色方案,以及如何使用提供的配色工具进行个性化定制。 首先,关于“VC.zip”,这很可能是包含VC++6.0配色文件的压缩包。下载该文件后,用户需要进行解压操作,通常可以通过...

    VC++运行库集合 6.0-2017

    例如,从VC++ 2005开始引入了.NET Framework的组件,使得C++开发者能够利用.NET平台的优势。在后续版本中,如VC++ 2010、2012、2013和2015,微软进一步加强了对C++11、C++14标准的支持,并增强了对64位系统的支持。 ...

    VC++6.0写ActiveX控件,和WEB通信的一些心得

    在使用VC++6.0开发ActiveX控件并与Web端进行通信的过程中,可能会遇到多种挑战,包括但不限于参数传递方式的选择以及安全性问题。通过本文介绍的方法和技术,可以有效解决这些问题,帮助开发者顺利完成项目。当然,...

    VC++用ActiveX控件与单片机串行通信

    在创建基于对话框的应用程序时,可以使用VC++6.0的APPWizard生成模板,然后根据需要添加和配置MSCOMM控件,设置其属性并编写处理通信事件的代码。 总的来说,利用VC++和ActiveX控件进行串行通信,尤其是使用MSCOMM...

    Win32环境下基于VC++6.0串口通信编程方法

    Win32环境下基于VC++6.0串口通信编程方法

    利用VC++6.0实现上位机与PLC的串行通信

    ### 利用VC++6.0实现上位机与PLC的串行通信 #### 一、引言 随着计算机技术和可编程逻辑控制器(PLC)技术的发展,现代工业已经进入了信息化时代。PLC作为新一代工业控制器,因其高性价比而在工业测控系统中得到了...

    图析VC++6.0中使用mscomm串口控件

    使用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使用串口控件例程.zip上位机开发VC串口学习资料源码下载[005]...

    vc++6.0基于MsComm控件的串口通讯方法

    在VC++ 6.0开发环境中,MsComm控件是一种常用的串口通信工具,尤其适合初学者学习和使用。本文将深入探讨如何利用MsComm控件进行串口通信,包括基本概念、设置方法以及实际应用。 串口通信,也称为串行通信,是...

    VC++6.0精简版 VC++6.0中文版 win7兼容 下载

    VC++6.0简体中文版本,支持win7提示兼容问题忽略就行。 此前装过别的版本,但win...vC++6.0精简中文版版,Win7兼容,安全无毒,适合学习使用。 注册csdn就有积分送,简单快捷,安全放心,快来下载吧!下载后评论返积分!

    VC++串口通信源代码(VC6.0)

    同步串口通信、用串口实现警报系统,VC用单文档方式实现、用于VC的DLL库,使用异步通讯方式,具体使用方法请看源码、用于串口读写数据用的程序源代码、在VC++6.0中用MSComm控件编程,可以实现串口接收数据和发送数据...

    vc++6.0入门教程(PDF编辑版)整理.pdf

    VC++6.0 入门教程概述 VC++6.0 是一个功能强大且广泛应用的集成开发环境(IDE),本教程旨在指导读者从零开始学习...通过本教程,读者可以掌握 VC++6.0 的基本使用和操作步骤,从而更好地使用 VC++6.0 进行程序开发。

    VC++6.0 Edit 使用示例(含多项功能)

    在本文中,我们将深入探讨如何在VC++6.0环境下使用Edit控件,这是一个非常基础且重要的组件,常用于创建用户界面,允许用户输入和显示文本。Edit控件提供了多种功能,包括改变文本的视觉样式,处理文本数据,以及与...

    vc++6.0使用串口控件例程知识.pdf

    VC++6.0 使用串口控件例程知识 VC++6.0 是一个功能强大且广泛使用的集成开发环境,串口控件是其中一个重要的控件。下面我们将详细介绍如何在 VC++6.0 中使用串口控件。 建立项目 首先,我们需要打开 VC++6.0 并...

    VC++6.0中MsChart控件的用法

    VC++6.0 中 MsChart 控件的用法 MsChart 是 VC++6.0 中自带的一个特殊控件类,用于绘制坐标曲线图。它提供了丰富的绘制曲线图的功能,包括设置背景色、显示图例、设置 Y 轴刻度、设置 X 轴刻度、设置数据点类型等。...

    VC++ 6.0常用控件使用方法介绍

    VC++ 6.0 常用控件使用方法介绍 在 VC++ 6.0 中,MFC 框架提供了多种基本控件,用于构建图形用户界面。这些控件可以帮助开发者快速生成界面,提高开发效率。下面将对 VC++ 6.0 中常用的控件进行介绍,并提供使用...

    MFC.rar_VC++6.0 MFC_Vc_vc++6.0教程_vc6.0mfc教程_visual c

    **VC++6.0 MFC 详细使用教程** 在编程领域,Microsoft Foundation Classes(MFC)是微软为...同时,虽然VC++6.0已经较旧,但其MFC库的原理和使用方式对于理解现代MFC(如在Visual Studio 2019中)依然具有指导意义。

Global site tag (gtag.js) - Google Analytics