VB串口通讯控件MSComm详解

合集下载

VB通讯控件说明

VB通讯控件说明

一.引用串行通讯组件(MSComm 控件)包含在专业版及企业版中.MSComm 组件并不是主动出现在工具箱的,当我们需要用到它时,做如下步骤:1.在工具箱上右键单击,在弹出的对话框中选择"部件..."选项2.在"控件"标签中,找到"Microsoft Comm Control 6.0"选项,并勾选它,然后按"确定"3.这时,工具箱中会出现一个"电话机"的图标.已经OK啦.(我用的是简体中文版的.)二.属性常用属性:说明CommPort:设置通讯端口号(1-16).例:mPort=1 '指定使用COM1作通讯传输.Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位.格式为"BBBB,P,D,S".默认值为"9600,N,8,1"BBBB为联机速度,P为同位检查方式,None无(默认值),Even偶数,Mark记号,Odd奇数,Space空白.D为数据位数,4-8.S为停止位,1,1.5,3."9600,N,8,1"的意思是"所使用的通讯端口是以每秒9600 Bit的速度作传输,不作同位的检查,每个元是8个Bit,而停止位是1个Bit"注:四项的顺序是不可前后对调的,其中的字母N可以是大写,也可以是小写.HandShaking:设置通讯双方的交握协议,即流量控制.0-comNone:(默认值)没有交握协议.1-comXOnXOff:(Xon/Xoff)交握协议.2-comRTS:RTS/CTS(Request To Send/CLear To Send)交握协议.3-comRTSXonXoff:Request To Send和Xon/Xoff交握协议.Output: 将一个字符串写入传输缓冲区.例:MSComm1.Output="ABCDE",此即将ABCDE 5个字符通过RS232传送出去.Input: 从对方所传至输入缓冲区的字符读进程序中,并清除缓冲区中已被读取的字符.这是一种FIFO(first in first out)的机制.例:Buffer$=MSComm1.Input.将输入缓冲区的字符读入Buffer字符串变量中.InputLen: 指定由串行端口读入的字符串长度.(每次读取input时,读取多少字节)MSComm1.InputLen=10 '当程序执行Input指令时,只会读取10个字符.假设在输入缓冲区中有55个字节,则每次Input指令会读取10个字节进来,因此要全部读完所有的数据需要执行6次Input指令.RThreshold: 接受的字符数.RTHreshold=1----表示当有一个字节到达接收缓冲区时,响应OnComm事件。

MSCOMM详解

MSCOMM详解

MSComm控件使用详解龚建伟:这篇东西来不及好好整理,因有朋友经常提及,先放在这里,如果有必要,再详细理顺一下,更为详细的信息请去看MSDN。

摘要:本文详细介绍了MSComm控件在串口编程中使用。

目次MSComm控件两种处理通讯的方式CommPort属性RThreshold 属性CTSHolding 属性SThreshold 属性CDHolding 属性DSRHolding 属性Settings 属性InputLen 属性EOFEnable 属性Handshake 常数OnComm 常数InputMode 常数错误消息MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。

MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。

Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。

具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。

1.MSComm控件两种处理通讯的方式MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。

1.1 事件驱动方式事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。

在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者Carrier Detect (CD) 或Request To Send (RTS) 线上一个字符到达或一个变化发生时。

在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。

OnComm 事件还可以检查和处理通讯错误。

所有通讯事件和通讯错误的列表,参阅CommEvent 属性。

VB6.0下MSComm控件实现串口通信

VB6.0下MSComm控件实现串口通信

VB6.0下用MSComm控件实现串口通信MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能,以下先对其属性进行详细的说明后再举一个例子进行说明:1基本属性CommPortO mPort[=value]Object为MSComm控件,value为整数值,标志端口号。

说明:该属性设置并返回通讯端口号,value的值可以设为1-16间的任意数(默认为1)。

在打开端口之前必须先设置CommPort属性,当端口不存在时,如果用PortOpen属性打开它,MSComm控件会产生错误68(即设备无效的错误)。

SettingsObjiect.Setting[=value]Object为MSComm控件,value为字符串类型,表示通讯端口的设置值。

说明:本属性用来设置并返回端口的波特率、奇偶校验位、数据位和停止位参数。

当端口打开时,如果指定的value参数非法,则MSComm控件产生380号(非法属性值)错误。

有效的value参数值由四个设置值组成,有如下格式:“BBBB,P,D,S”,其中BBBB为波特率,P为奇偶校验,D为数据位数,S为停止位数。

Value的默认值为:“9600,N,8,1”,下面给出合法的波特率、奇偶校验位、数据位和停止位参数:波特率:110,300,600,1200,2400,4800,9600(默认),14400,19200,28800,38400,56000,57600,115200,128000,256000。

奇偶校验值:E(偶校验,Even)、M(标记,Mark)、N(默认,Default,None)、O(奇校验,Odd)、S(空格,Space)。

数据位值:4,5,6,7,8(默认),9。

停止位值:1(默认),1.5,2。

PortOpenO bject.PortOpen[=value]Object为MSComm控件。

Value为布尔类型,表明通讯端口的状态。

VB串口

VB串口

MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。

MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。

Micro soft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的A ctiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。

具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。

1.MSComm控件两种处理通讯的方式1.1 事件驱动方式事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。

在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。

在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。

OnCo mm 事件还可以检查和处理通讯错误。

所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。

在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。

这种方法的优点是程序响应及时,可靠性高。

每个MSC omm 控件对应着一个串行端口。

如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。

1.2 查询方式查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。

在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。

如果应用程序较小,并且是自保持的,这种方法可能是更可取的。

例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。

2.MSComm控件的常用属性MSComm1.Settings:=’9600,n,8,1’; //设置波特率 ,校验位,数据位,停止位Settings属性:设置串口的波特率 ,校验位,数据位,停止位, ’9600,n,8,1’表示波特率为9600,无奇偶校验,数据位为8为,1位停止位MSComm1.InBufferSize:=1024; // 接受缓冲区大小InBufferSize 属性:接收缓冲区的大小,默认值为1024,也可以自己设定,比如, MSComm1.InBufferSi ze:=2000,则接收缓冲区的大小为2000字节MSComm1.OutBufferSize:=1024; // 发送缓冲区大小OutBufferSize属性:发送缓冲区的大小,默认值为1024,也可以自己设定。

VB的MSComm控件应用讲义

VB的MSComm控件应用讲义

第12章 VB应用12.1 MSComm控件可以通过它对计算机的RS-23串行通信口进行读写操作1.主要属性设置:(1)CommPort属性:设置通信端口,一般计算机上1-2个RS-232口,由此属性指定使用哪个口,设定其值为1则表示使用1端口。

(2)Settings 属性:默认值“9600,n,8,1”。

9600——波特率n ——效验方式。

“n”不效验8 ——数据位1 ——停止位(3)Sthreshold 属性:设置要返回多少个字符才发生MSComm1_OnComm事件2.两台计算机串行通信的硬件接线A计算机的串口2脚(发送)——B计算机的串口3脚(接收)A计算机的串口3脚(接收)——B计算机的串口2脚(发送)A计算机的串口5脚(地)——B计算机的串口5脚(地)1.读写操作Private Sub Command1_Click() '发送MSComm1.Output = Text1.TextEnd SubPrivate Sub Command2_Click() '清空1Text1.Text = ""End SubPrivate Sub Command3_Click() '发送Text2.Text = MSComm1.InputEnd SubPrivate Sub Command4_Click() '清空2Text2.Text = ""End SubPrivate Sub Form_Load()MSComm1.PortOpen = TrueEnd Sub4.应用MSComm1_OnComm事件自动接收设置Sthreshold 属性为1,当有一个及以上字符进入串行口,发生MSComm1_OnComm事件。

Private Sub MSComm1_OnComm()Text2.Text = Text2.Text + MSComm1.InputEnd Sub。

串口通信mscomm控件的基础函数说明

串口通信mscomm控件的基础函数说明

MSComm控件的重要属性中的一部分CommPort设置并返回通信端口号Settings以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。

PortOpen设置并返回通信端口的状态。

可以用来打开和关闭端口Input从接受缓冲区返回和删除字符串Output向传输缓冲区写一个字符串每个属性都通过Get/Set函数对来获取或设置控件的属性属性简介CommPort设置并返回端口号void CMSComm::SetCommPort(short nNewValue)short CMSComm::GetCommPort()RThreshold在MSComm控件设置CommEvent属性为comEvReceive并产生OnComm之前,设置并返回要接收的字符数。

达到设定值则触发OnComm。

void CMSComm::SetRThreshold(short nNewValue)short CMSComm::GetRThreshold()CTSHolding确定是否可通过查询CTS线的状态发送数据。

硬件握手的手工查询void CMSComm::SetCTSHolding(BOOL bNewValue)BOOL CMSComm::GetCTSHolding()SThreshold在MSComm控件设置CommEvent属性为comEvSend并产生OnComm之前,设置并返回传输缓冲区中允许的最小字符数。

void CMSComm::SetSThreshold(short nNewValue)short CMSComm::GetSTreshold()Handshaking设置或返回硬件握手状态,使用内部通信协议void CMSComm::SetHandshaking(long nNewValue)long CMSComm::GetHandshaking()InputMode设置或返回传输数据的类型void CMSComm::SetInputMode(long nNewValue)long CMSComm::GetInputMode()DSRHolding确定DSR线的状态。

vc串口通讯控件MSComm编程详解

vc串口通讯控件MSComm编程详解

vc串口通讯控件MSComm编程详解在mfc中进行串口通讯最简单的方法莫过于在对话框中使用MSCOMM控件了,MSComm 通信控件提供了一系列标准通信命令的接口,它允许建立串口连接,可以连接到其他通信设备(如Modem).还可以发送命令、进行数据交换以及监视和响应在通信过程中可能发生的各种错误和事件,从而可以用它创建全双工、事件驱动的、高效实用的通信程序。

一、用MSComm控件通信1.串口通信基础知识一般悦来,计算机都有一个或多个串行端口,它们依次为com1、Com2、…,这些串口还提供了外部设备与pC进行数据传输和皿信的通道。

这些串口在CPU和外设之间充当解释器的角色。

当字符数据从CPU发送给外设时,这些字符数据将被转换成串行比特流数据;当接收数据时,比特流数据被转换为字符数据传递给CPU,再进一步说,在操作系统方面,Windows用通信驱动程序(COMM.DRV)调用API函数发送和接收数据,当用通信控件或声明调用API函数时,它门由COMM. DRV解释并传递给设备驱动程序,作为一个vB程序员,要编写通信程序.只需知道通信控件提供给Windows通信AP1函数的接口即可.换句话说,只需设定和监视通信控件的属性和事件即可。

2.使用Mscomm控件在开始使用MSComm控件之前。

需要先了解其属性、事件或错误属性描述CommPort 设置或返回通信端口号Settings 以字符串的形式设置或返回波特率、奇偶校验、数据位和停止位PortOpen 设置或返回通信端口的状态。

也可以打开和关闭端口Input 返回和删除接收缓冲区中的字符Output 将字符串写入发送缓冲区CommEvent属性为通信事件或错误返回下列值之一。

在该控件的对象库中也可以找到这些常量。

常量值描述ComEventBreak 1001 收到了断开信号ComEventCTSTO 1002 Clear To Send Timeout。

VB控件MSComm串口通讯实例教程

VB控件MSComm串口通讯实例教程

现有电子秤一台,使用串口与计算机进行通讯。

编写VB程序来访问串口,达到读取电子秤上显示的数据。

该电子秤为BE01型仪表,输出为RS-232C标准接口,波特率为300-9600、偶校验、7个数据位、2个停止位。

所有字符现有电子秤一台,使用串口与计算机进行通讯。

编写VB程序来访问串口,达到读取电子秤上显示的数据。

该电子秤为BE01型仪表,输出为RS-232C标准接口,波特率为300-9600、偶校验、7个数据位、2个停止位。

所有字符均发送11位ASCII码,一个起始位。

在VB中与串口通讯需要引入控件MSComm串口通讯控件(在Microsoft Comm Control 6.0中)。

具体程序如下:控件简称:MSCDim Out(12) As Byte '接收var中的值Dim var As Variant '接收MSC.input中的数值Dim nRece As Integer '计算MSC.inputbuffer的个数Dim i As Integer, j As Integer '随即变量,计算循环************************************************************************** **Private Sub Form_Load()ClearTextWith MSC.CommPort = 1 '设置Com1为通信端口.Settings = "9600,E,7,2" '设置通信端口参数 9600赫兹、偶校验、7个数据位、2个停止位.(这里需要进一步说明的是:.Setting=”BBBB,P,D,S”。

含义是:B:Baud Rate(波特率);P:Parity(奇偶);D:Data Bit;S:Stop Bit).InBufferSize = 40 '设置缓冲区接收数据为40字节.InputLen = 1 '设置Input一次从接收缓冲读取字节数为1.RThreshold = 1 '设置接收一个字节就产生OnComm事件End WithEnd Sub************************************************************************** **Private Sub ClearText()Text3.Text = ""Text2.Text = "5"Text1.Text = ""End SubPrivate Sub Command1_Click()ClearText' nRece = 0 '计数器清零With MSC.InputMode = comInputModeBinary '设置数据接收模式为二进制形式.InBufferCount = 0 '清除接收缓冲区If Not .PortOpen Then.PortOpen = True '打开通信端口End IfEnd WithEnd SubPrivate Sub MSC_OnComm()DelayTime ‘用来延续时间ClearTextWith MSCSelect Case .CommEvent '判断通信事件Case comEvReceive: '收到Rthreshold个字节产生的接收事件SwichVar 1If Out(1) = 2 Then '判断是否为数据的开始标志.RThreshold = 0 '关闭OnComm事件接收End IfDoDoEventsLoop Until .InBufferCount >= 3 '循环等待接收缓冲区>=3个字节' nRece = nRece + 1For i = 2 To 12SwichVar iText1.Text = Text1.Text & Chr(Out(i))NextText1.Text = LTrim(Text1.Text)Text2.Text = Text2.Text & CStr(nRece).RThreshold = 1 '打开MSComm事件接收Case Else' .PortOpen = FalseEnd SelectEnd WithEnd Sub************************************************************************** **Private Sub DelayTime()Dim bDT As BooleanDim sPrevious As Single, sLast As SinglebDT = TruesPrevious = Timer (Timer可以计算从子夜到现在所经过的秒数,在Microsoft Windows中,Timer函数可以返回一秒的小数部分)Do While bDTIf Timer - sPrevious >= 0.3 Then bDT = FalseLoopbDT = True(通信传输速率为9600bps,则最快速度1.04ms发送一个字节,仪表每秒发送50帧数据,每帧数据有4个字节,即每秒发送200个字节,平均5.0ms 发送一个字节,连续读取串口数据时要在程序中添加循环等待程序)Private Sub SwichVar(ByVal nNum As Integer)DelayTimevar = Nullvar = MSC.InputOut(nNum) = var(0)End Sub(设置接收数据模式采用二进制形式,即 InputMode=comInputModeBinary,但用Input 属性读取数据时,不能直接赋值给 Byte 类型变量,只能通过先赋值给一个 Variant 类型变量,返回一个二进制数据的数组,再转换保存到Byte类型数变量中。

vb的MSCOMM控件

vb的MSCOMM控件

第6章V B串口通信程序设计典型实例利用VB开发串口通信程序既可以使用MSComm控件也可以调用Windows API函数实现。

不过,只要MSComm控件可以被选用,我们推荐选择此控件实现,因为MSComm控件的功能和API调用一样强,甚至比它还好且使用起来更加简单。

在本章提供的串口通信程序设计中,除了PC与PC串口通信外,PC与单片机、PC与智能仪表、PC与PLC、PC与GSM短信模块等串口通信任务的实现均采用MSComm控件。

6.1 PC与PC串口通信程序设计当两台串口设备通信距离较近时,可以直接连接,最简单的情况,在通信中只需3根线(发送线、接收线、信号地线)便可实现全双工异步串行通信。

本设计通过两台PC串口3线连接,介绍了利用API函数和MSComm控件设计串口通信程序的方法,包括字符与文件的发送与接收。

6.1.1 PC与PC串口通信程序设计目的(1)掌握PC与PC串口通信的线路连接方法。

(2)利用MSComm控件和API函数实现PC与PC串口通信的程序设计方法。

6.1.2 PC与PC串口通信程序设计用软、硬件本设计用到的硬件和软件清单如表6-1所示。

表6-1设计用软、硬件6.1.3 PC与PC串口通信程序硬件线路图线路说明,在计算机通电前,按图6-1所示将两台PC通过串口线连接起来:计算机A 串口COM1端口的TXD与计算机B串口COM1端口的RXD相连,计算机A串口COM1端第6章VB串口通信程序设计典型实例口的RXD与计算机B串口COM1端口的TXD相连,计算机A串口COM1端口的GND与计算机B串口COM1端口的GND相连。

图6-1 PC与PC串口通信线路6.1.4 设计任务利用MSComm控件和VB API函数编写程序实现PC与PC串口通信。

任务要求,两台计算机互发字符并自动接收,如一台计算机输入字符串“Please return abc123”,单击“发送字符”命令,另一台计算机若收到,就输入字符串“abc123”,单击“发送字符”命令,信息返回到第一组的计算机。

Mscomm控件属性、方法及事件

Mscomm控件属性、方法及事件

Mscomm控件1、引用Mscomm控件Mscomm控件不是普通的工具箱控件,在VB中首先要引用Mscomm控件,而后才能使用用它。

引用Mscomm控件很简单:选择“工程”主菜单,在“工程”菜单上选择“部件”命令,弹出如图所示的部件对话框,在控件属性页上选定“Microsoft Comm Control 6.0”控件,单击“确定”按钮后,Mscomm就添加到控件面板上。

2、Mscomm控件信息处理Mscomm控件拥有功能完善的串口数据的发送和接收功能,Mscomm控件提供了两种处理方式。

●事件驱动方式:由Mscomm控件的OnComm事件自动捕获并处理通信错误及事件;●查询方式:通过定时查询Mscomm控件CommEvent属性的值来判断事件和错误。

在PC机串行端口通信时,使用了十几条线进行信号传输。

利用Mscomm控件开发串口通信软件,需了解以下5条线的代号及作用,这5条线的高低电平状态分别对应Mscomm 控件的相应属性的True/False值:●DRT线:用于传输PC机发往串口Modem等设备的信号,该信号表示PC机是否已准备好;●RTS线:用于传输PC机发往串口Modem等设备的信号,该信号表示PC机是否允许Modem发数据;●DSR线:用于传输串口Modem等设备发往PC机的信号,该信号表示串口Modem 等设备是否已做好操作准备;●CTS线:用于传输串口Modem等设备发往PC机的信号,该信号表示Modem是否允许发送数据;●CD线:用于传输串口Modem等设备发往PC机的信号,该信号表示Modem已经和远方的设备建立了连接。

Mscomm控件的通信功能实现,实际上是调用了API函数,而API函数是由Comm.drv 解释并传给设备驱动程序执行的,对于VB程序开发者只需要知道MSComm控件的属性和事件的用法即可以实现对串口的操作。

3、Mscomm控件的属性(1)CommPort属性该属性用于设置或返回连接的串口编号,Windows将会利用该串口和外界通信。

VB中串口通讯的实现详解说明

VB中串口通讯的实现详解说明

VB中串口通讯的实现VB中串口通讯的实现一、概述串口通讯作为一种古老而又灵活的通讯方式,被广泛地应用于PC间的通讯以及PC和单片机之间的通讯之中。

提到串口通讯的编程,人们往往立刻想到C、汇编等对系统底层操作支持较好的编程语言以及大串繁琐的代码。

实际上,只要我们借助相关ActiveX控件的帮助,即使是在底层操作一向不被人看好的VB 中,一样能够实现串口通讯,甚至其实现方法和C、汇编相比,要更加快捷方便。

下面,笔者就介绍一下在VB中实现串口通讯的方法。

在Visual Basic中有一个名为Microsoft Communication Control(简称MSComm)的通讯控件。

我们只要通过对此控件的属性和事件进行相应编程操作,就可以轻松地实现串口通讯。

下面,笔者就简要地介绍一下MSComm控件的使用方法。

二、MSComm控件的主要属性、事件1、MSComm的属性由于MSComm控件属性很多,在此笔者仅介绍与实现串口通讯密切相关的核心属性。

Commport:设置通讯所占用的串口号。

如设成1(默认值),表示对Com1进行操作。

Setting:对串口通讯的相关参数。

包括串口通讯的比特率,奇偶校验,数据位长度、停止位等。

其默认值是“9600,N,8,1”,表示串口比特率是9600bit/s,不作奇偶校验,8位数据位,1个停止位。

Portopen:设置串口状态,值为True时打开串口,值为False时关闭串口。

Input:从输入寄存器读取数据,返回值为从串口读取的数据内容,同时输入寄存器将被清空。

Ouput:发送数据到输出寄存器。

InBufferCount:设置输入寄存器所存储的字符数,当将其值设为0时,则输入寄存器将被清空。

InputMode:设置从输入寄存器中读取数据的形式。

若值为0,则表示以文本形式读取;值为1,则表示以二进制形式读取。

OutBufferCount:设置输出寄存器所存储的字符数,当将其值设为0时,则输出寄存器将被清空。

MSComm控件使用详解

MSComm控件使用详解

MSComm控件使用详解目次MSComm控件两种处理通讯的方式CommPort属性RThreshold 属性CTSHolding 属性SThreshold 属性CDHolding 属性DSRHolding 属性Settings 属性InputLen 属性EOFEnable 属性Handshake 常数OnComm 常数InputMode 常数错误消息MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。

MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。

Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows 下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。

具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。

1.MSComm控件两种处理通讯的方式MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。

1.1 事件驱动方式事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。

在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。

在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。

OnComm 事件还可以检查和处理通讯错误。

所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。

在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。

这种方法的优点是程序响应及时,可靠性高。

每个MSComm 控件对应着一个串行端口。

如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。

毕业设计-VB中MSCOMM串行通信控件的使用方法

毕业设计-VB中MSCOMM串行通信控件的使用方法

VB是Visual Basic的简称,是由美国微软公司于1991年开发的一种可视化的、面向对象和采用事件驱动方式级程序设计语言,可用于开发Windows 环境下的各类应用程序。

它简单易学、效率高,且功能强大可以与Windows 专业开发工具SDK相媲美。

在Visual Basic环境下,利用事件驱动的编程机制、新颖易用的可视化设计工具,使用Windows内部的广泛应用程序接口(API)函数,动态链接库(DLL)、对象的链接与嵌入(OLE)、开放式数据连接(ODBC)等技术,可以高效、快速地开发环境下功能强大、图形界面丰富的应用软件系统。

他的简单易学可以使我们快速实现自己想在Windows下的软件功能。

小则可以做计算器、上位机等符合自己需要的小软件;大则可以连接数据库做些管理系统,比如某公司的人事管理系统。

这里要说的是MSCOMM控件在VB中的使用方法。

MSComm 作为一个串行通讯控件为程序员串口通讯编程节省了很多时间。

在应用中加入一个MSComm控件非常简单。

在VB的常用控件里是没有MSCOMM控件的,我们可以通过工程部件勾取Microsoft comm control 6.0 来添加MSCOMM控件。

下面,让我们来了解其使用方法:1.串口通信基础知识一般悦来,计算机都有一个或多个串行端口,它们依次为com1、Com2、…,这些串口还提供了外部设备与PC进行数据传输和通信的通道。

这些串口在CPU和外设之间充当解释器的角色。

当字符数据从CPU发送给外设时,这些字符数据将被转换成串行比特流数据;当接收数据时,比特流数据被转换为字符数据传递给CPU,再进一步说,在操作系统方面,Windows用通信驱动程序(COMM.DRV)调用API函数发送和接收数据,当用通信控件或声明调用API函数时,它门由COMM. DRV解释并传递给设备驱动程序,作为一个VB程序员,要编写通信程序.只需知道通信控件提供给Windows通信AP1函数的接口即可.换句话说,只需设定和监视通信控件的属性和事件即可。

VB控件:VB通信控件MSComm使用方法(二)

VB控件:VB通信控件MSComm使用方法(二)

Carrier Detect 也被称为 Receive Line Signal Detect (RLSD)。

数据类型:Boolean DSRHolding 属性:确定 Data Set Ready (DSR) 线的状态。

Data Set Ready 信号由调制解调器发送到相连计算机,指⽰作好操作准备。

该属性在设计时⽆效,在运⾏时为只读。

语法:object.DSRHolding object 所在处表⽰对象表达式,其值是“应⽤于”列表中的对象。

DSRHolding 属性返回以下值: 值描述说明True Data Set Ready 线⾼ 当 Data Set Ready 线为⾼电平 (DSRHolding = True) 且超时时,MSComm 控件设置CommEvent 属性为 comEventDSRTO(数据准备超时)并产⽣ OnComm 事件。

当为 Data Terminal Equipment (DTE) 机器写 Data Set Ready/Data Terminal Ready 握⼿例程时该属性是⼗分有⽤的。

数据类型:BooleanFalse Data Set Ready 线低 Settings 属性: 设置并返回波特率、奇偶校验、数据位、停⽌位参数。

语法: object.Settings[ = value] 说明:当端⼝打开时,如果 value ⾮法,则 MSComm 控件产⽣错误 380(⾮法属性值)。

Value 由四个设置值组成,有如下的格式: \"BBBB,P,D,S\" BBBB 为波特率,P 为奇偶校验,D 为数据位数,S 为停⽌位数。

value 的缺省值是: \"9600,N,8,1\" InputLen 属性:设置并返回 Input 属性从接收缓冲区读取的字符数。

语法 object.InputLen [ = value] InputLen 属性语法包括下列部分: value 整型表达式,说明 Input 属性从接收缓冲区中读取的字符数。

VBmscomm串口控件及及51单片机通讯使用指南

VBmscomm串口控件及及51单片机通讯使用指南

一、概述串口通讯作为一种古老而又灵活的通讯方式,被广泛地应用于PC间的通讯以及PC和单片机之间的通讯之中。

提到串口通讯的编程,人们往往立刻想到C、汇编等对系统底层操作支持较好的编程语言以及大串繁琐的代码。

实际上,只要我们借助相关ActiveX控件的帮助,即使是在底层操作一向不被人看好的VB中,一样能够实现串口通讯,甚至其实现方法和C、汇编相比,要更加快捷方便。

下面,笔者就介绍一下在VB中实现串口通讯的方法。

在Visual Basic中有一个名为Microsoft Communication Control(简称MSComm)的通讯控件。

我们只要通过对此控件的属性和事件进行相应编程操作,就可以轻松地实现串口通讯。

下面,笔者就简要地介绍一下MSComm控件的使用方法。

二、MSComm控件的主要属性、事件1、MSComm的属性常用属性和方法利用MSComm控件实现计算机通信的关键是理解并正确设置MSComm控件众多属性和方法。

以下是MSComm控件的常用属性和方法:●Commport:设置通讯所占用的串口号。

如设成1(默认值),表示对Com1进行操作。

语法 mPort[value ] (value 一整型值,说明端口号。

)说明在设计时,value 可以设置成从 1 到 16 的任何数(缺省值为 1)。

但是如果用PortOpen 属性打开一个并不存在的端口时,MSComm 控件会产生错误 68(设备无效)。

注意:必须在打开端口之前设置 CommPort 属性。

●CTSHolding 属性:确定是否可通过查询 Clear To Send (CTS) 线的状态发送数据。

Clear To Send 是调制解调器发送到相联计算机的信号,指示传输可以进行。

该属性在设计时无效,在运行时为只读。

语法: object.CTSHolding(Boolean)Mscomm 控件的 CTSHolding 属性设置值:True Clear To Send 线为高电平。

VB COMM控件使用介绍与讲解

VB COMM控件使用介绍与讲解

VB_COMM使用介绍与讲解MSComm控件使用详解MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。

MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。

Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。

具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。

1.MSComm控件两种处理通讯的方式MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。

1.1 事件驱动方式事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。

在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。

在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。

OnComm 事件还可以检查和处理通讯错误。

所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。

在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。

这种方法的优点是程序响应及时,可靠性高。

每个MSComm 控件对应着一个串行端口。

如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。

1.2 查询方式查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。

在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。

如果应用程序较小,并且是自保持的,这种方法可能是更可取的。

例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。

VB中MSComm控件的使用

VB中MSComm控件的使用

unsigned char receive[5]={0,0,0,0,0};
ES = 0;
for(i=0;i<5;i++)
{
while(RI==0);
receive[i]=SBUF;
RI=0;
}
for(i=0;i<5;i++)
{
SBUF = receive[i];
while(!TI);
TI=0;
}
ES=1;
PCON |= 0x80;
//SMOD=1:波特率倍增
TH1 = 0xf3;
//波特率设定为 4800bps
TL1 = 0xf3;
TR1 = 1; ES = 1;
//开启串行口中断
EA = 1;
while(1);
பைடு நூலகம்
}
void uart(void) interrupt 4
{
unsigned char i;
批注本地保存成功开通会员云端永久保存去开通
一、VB:
1.1 界面设计:
MSComm 使用案例
1.2 MSComm 控件设置:
1.3 代码: Private Sub Command1_Click()
'发送
Dim outbte(0) As Byte Dim count As Integer
If MSComm.PortOpen = False Then MSComm.PortOpen = True For count = 0 To 4
outbte(0) = Val(Text1(count))
MSComm.OutBufferCount = 0 MSComm.Output = outbte

VB_MSCOMM控件简介

VB_MSCOMM控件简介

VB 通信控件MscommMscomm 控件提供了功能完善的串口数据的发送和接收功能,Mscomm 控件具有两种处理方式: 1 事件驱动方式: 由Mscomm 控件的OnComm 事件捕获并处理通信错误及事件;2 查询方式: 通过检查CommEvent 属性的值来判断事件和错误。

Mscomm 控件的通信功能实现,实际上是调用了API 函数,而API 函数是由Comm.drv 解释并传给设备驱动程序执行的,对于VB 程序开发者只需知道Mscomm 控件的属性和事件的用法即可以实现串口的操作。

以下是Mscomm 控件的主要属性和方法:1)CommPort: 设置或返回串行端口号,其取值范围为1 ~99,缺省为1。

2) Setting 设置或返回串行端口的波特率、奇偶校验位、数据位数、停止位。

如:Mscomm.Setting=“9600,N,8,1”。

3)PortOpen: 打开或关闭串行端口,格式为:Mscomm.PortOpen={TRUE|FALSE}。

4) InBufferSize: 设置或返回接收缓冲区的大小,缺省为1024 字节。

5) InBufferCount: 返回接收缓冲区内的等待读取的字节个数,可通过设置该属性为0 来清除接收缓冲区。

6) RThreshold: 该属性为一阀值,它确定当接收缓冲区内字节个数达到或超过该值后就产生代码为MSCOMM_EV_RECEIVE 的OnComm 事件。

7) InputLen: 设置或返回接收缓冲区内用Input 读入的个数。

若取0,则INPUT 读取整个缓冲区的内容。

8) Input: 该属性表示从接收缓冲区移走一串字符。

9) OutBufferSize: 设置或返回发送缓冲区,缺省为512 字节。

10) OutBufferCounter: 返回发送缓冲区内等待发送的字符数,可用来清空缓冲区。

11) Output: 向发送缓冲区传送一字符串。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

VB串口通讯控件MSComm详解MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。

MSComm 控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。

Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。

具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。

1.MSComm控件两种处理通讯的方式MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。

1.1 事件驱动方式事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。

在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者Carrier Detect (CD) 或Request To Send (RTS) 线上一个字符到达或一个变化发生时。

在这些情况下,可以利用MSComm 控件的OnComm 事件捕获并处理这些通讯事件。

OnComm 事件还可以检查和处理通讯错误。

所有通讯事件和通讯错误的列表,参阅CommEvent 属性。

在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。

这种方法的优点是程序响应及时,可靠性高。

每个MSComm 控件对应着一个串行端口。

如果应用程序需要访问多个串行端口,必须使用多个MSComm 控件。

1.2 查询方式查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。

在程序的每个关键功能之后,可以通过检查CommEvent 属性的值来查询事件和错误。

如果应用程序较小,并且是自保持的,这种方法可能是更可取的。

例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。

2.MSComm 控件的常用属性MSComm控件有很多重要的属性,但首先必须熟悉几个属性。

CommPort 设置并返回通讯端口号。

Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。

PortOpen 设置并返回通讯端口的状态。

也可以打开和关闭端口。

Input 从接收缓冲区返回和删除字符。

Output 向传输缓冲区写一个字符串。

下面分别描述:CommPort属性设置并返回通讯端口号。

语法mPort[value ] (value 一整型值,说明端口号。

)说明在设计时,value 可以设置成从1 到16 的任何数(缺省值为1)。

但是如果用PortOpen 属性打开一个并不存在的端口时,MSComm 控件会产生错误68(设备无效)。

注意:必须在打开端口之前设置CommPort 属性。

RThreshold 属性:在MSComm 控件设置CommEvent 属性为comEvReceive 并产生OnComm 之前,设置并返回的要接收的字符数。

语法object.Rthreshold [ = value ](value 整型表达式,说明在产生OnComm 事件之前要接收的字符数。

)说明当接收字符后,若Rthreshold 属性设置为0(缺省值)则不产生OnComm 事件。

例如,设置Rthreshold 为1,接收缓冲区收到每一个字符都会使MSComm 控件产生OnComm 事件。

CTSHolding 属性:确定是否可通过查询Clear To Send (CTS) 线的状态发送数据。

Clear To Send 是调制解调器发送到相联计算机的信号,指示传输可以进行。

该属性在设计时无效,在运行时为只读。

语法:object.CTSHolding(Boolean)Mscomm 控件的CTSHolding 属性设置值:True Clear To Send 线为高电平。

False Clear To Send 线为低电平。

说明:如果Clear To Send 线为低电平(CTSHolding = False) 并且超时时,MSComm 控件设置CommEvent 属性为comEventCTSTO (Clear To Send Timeout) 并产生OnComm 事件。

Clear To Send 线用于RTS/CTS (Request To Send/Clear To Send) 硬件握手。

如果需要确定Clear To Send 线的状态,CTSHolding 属性给出一种手工查询的方法。

详细信息有关握手协议,请参阅Handshaking 属性。

SThreshold 属性:MSComm 控件设置CommEvent 属性为comEvSend 并产生OnComm 事件之前,设置并返回传输缓冲区中允许的最小字符数。

语法object.SThreshold [ = value ]value 整形表达式,代表在OnComm 事件产生之前在传输缓冲区中的最小字符数。

说明:若设置Sthreshold 属性为0(缺省值),数据传输事件不会产生OnComm 事件。

若设置Sthreshold 属性为1,当传输缓冲区完全空时,MSComm 控件产生OnComm 事件。

如果在传输缓冲区中的字符数小于value,CommEvent 属性设置为comEvSend,并产生OnComm 事件。

comEvSend 事件仅当字符数与Sthreshold 交叉时被激活一次。

例如,如果Sthreshold 等于5,仅当在输出队列中字符数从5 降到4 时,comEvSend 才发生。

如果在输出队列中从没有比Sthreshold 多的字符,comEvSend 事件将绝不会发生。

Handshake 常数常数值描述comNone 0 无握手。

comXonXoff 1 XOn/Xoff 握手。

comRTS 2 Request-to-send/clear-to-send 握手。

comRTSXOnXOff 3 Request-to-send 和clear-to-send 握手皆可。

OnComm 常数常数值描述comEvSend 1 发送事件。

comEvReceive 2 接收事件。

comEvCTS 3 clear-to-send 线变化。

comEvDSR 4 data-set ready 线变化。

comEvCD 5 carrier detect 线变化。

comEvRing 6 振铃检测。

comEvEOF 7 文件结束。

Error 常数常数值描述comEventBreak 1001 接收到中断信号comEventCTSTO 1002 Clear-to-send 超时comEventDSRTO 1003 Data-set ready 超时comEventFrame 1004 帧错误comEventOverrun 1006 端口超速comEventCDTO 1007 Carrier detect 超时comEventRxOver 1008 接收缓冲区溢出comEventRxParity 1009 Parity 错误comEventTxFull 1010 传输缓冲区满comEventDCB 1011 检索端口设备控制块(DCB) 时的意外错误InputMode 常数常数值描述comInputModeText 0 (缺省)通过Input 属性以文本方式取回数据。

comInputModeBinary 1 通过Input 属性以二进制方式检取回数据。

CDHolding 属性:通过查询Carrier Detect (CD) 线的状态确定当前是否有传输。

Carrier Detect 是从调制解调器发送到相联计算机的一个信号,指示调制解调器正在联机。

该属性在设计时无效,在运行时为只读。

语法object.CDHolding设置值:CDHolding 属性的设置值为:设置描述True Carrier Detect 线为高电平False Carrier Detect 线为低电平说明:注意当Carrier Detect 线为高电平(CDHolding = True) 且超时时,MSComm 控件设置CommEvent 属性为comEventCDTO(Carrier Detect 超时错误),并产生OnComm 事件。

注意在主机应用程序中捕获一个丢失的传输是特别重要的,例如一个公告板,因为呼叫者可以随时挂起(放弃传输)。

Carrier Detect 也被称为Receive Line Signal Detect (RLSD)。

数据类型BooleanDSRHolding 属性:确定Data Set Ready (DSR) 线的状态。

Data Set Ready 信号由调制解调器发送到相连计算机,指示作好操作准备。

该属性在设计时无效,在运行时为只读。

语法:object.DSRHoldingobject 所在处表示对象表达式,其值是“应用于”列表中的对象。

DSRHolding 属性返回以下值:值描述True Data Set Ready 线高False Data Set Ready 线低说明:当Data Set Ready 线为高电平(DSRHolding = True) 且超时时,MSComm 控件设置CommEvent 属性为comEventDSRTO(数据准备超时)并产生OnComm 事件。

当为Data Terminal Equipment (DTE) 机器写Data Set Ready/Data Terminal Ready 握手例程时该属性是十分有用的。

数据类型:BooleanSettings 属性: 设置并返回波特率、奇偶校验、数据位、停止位参数。

语法: object.Settings[ = value]说明:当端口打开时,如果value 非法,则MSComm 控件产生错误380(非法属性值)。

Value 由四个设置值组成,有如下的格式:"BBBB,P,D,S "BBBB 为波特率,P 为奇偶校验,D 为数据位数,S 为停止位数。

value 的缺省值是:"9600,N,8,1 "InputLen 属性:设置并返回Input 属性从接收缓冲区读取的字符数。

语法object.InputLen [ = value]InputLen 属性语法包括下列部分:value 整型表达式,说明Input 属性从接收缓冲区中读取的字符数。

说明:InputLen 属性的缺省值是0。

设置InputLen 为0 时,使用Input 将使MSComm 控件读取接收缓冲区中全部.。

相关文档
最新文档