MSComm控件详解

合集下载

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。

C#串口通信:MSComm控件使用详解

C#串口通信:MSComm控件使用详解

C#串口通信: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控件MSComm功能介绍语法: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 事件将绝不会发生。

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。

MSComm控件的用法和函数说明

MSComm控件的用法和函数说明

MSComm控件进行串口编程步骤:1. 在建立的程序工程中插入MSComm控件。

2. 添加MSComm控件ID 的控制变量(或者对象)。

3. 对串口进行初始化,设置MSComm控件的属性。

4. 添加串口事件的消息处理函数OnComm()函数,在函数中根据应用需要,编写数据处理代码5. 编写串口发送等其他代码。

6. 关闭串口。

+MSComm控件常用属性:mPort:设置并返回通信端口号2.Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位3.PortOpen:设置并返回通信端口的状态。

也可以打开和关闭端口4.Input:从接收缓冲区返回和删除字符5.Output:向传输缓冲区写一个字符6.InputLen:设置并返回Input属性从接收缓冲区读取的字符数。

7.InBufferSize:设置或返回输入缓冲区的大小。

8.OutBufferSize:设置或返回输入缓冲区的大小。

9.InBufferCount:设置或返回输入缓冲区内等待读取的字节个数。

10.OutBufferCount:设置或返回输入缓冲区内等待读取的字节个数。

对MSComm控件通过Get/Set函数对来获取或设置控件的属性,每个属性均有与之对应的Get/Set函数对。

用法说明mPort:设置并返回通信端口号Void CMSComm::SetCommPort(short n); 设置串口号Short CMSComm::GetCommPort(); 查询当前串口号说明:n可以设置成1到16中的任何数(缺省值为1)。

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

2.Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位Void CMSComm::SetSettings(LPCTSTR lpszNewValue);CString CMSComm::GetSettings();说明:当端口打开时,如果设置值lpszNewValue非法,则MSComm控件产生错误380(非法属性值)。

mscomm32控件属性

mscomm32控件属性

---- 1、常用属性CommPort:设置或返回串行端口号,缺省为1。

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

缺省值为"9600,N,8,1"。

PortOpen:设置它为True则打开端口,设置它为False则关闭端口。

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

InBufferCount:返回接收缓冲区内的等代读取的字节个数,设属性为0清除接收缓冲区。

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

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

Output:向发送缓冲区传送数据RThreshold: 该属性确定当接收缓冲区内字节个数达或超过该值后就产生代码为ComEventReceive的OnComm事件,设置位0,则不产生OnComm事件。

CommEvent:有通讯错误或事件发生时产生OnComm事件,CommEvent事件的值可以用来确定引发OnComm事件的具体的错误或事件常用的有以下几种(更详细的资料可参考MSComm控件帮助文件)ComEventbreak:接受到中断信号ComEventFrame:硬件检测到帧错误。

ComEventRxOver:接收缓冲区溢出。

ComEventTxFull:发送缓冲区溢出。

ComEventReceive:接受到规定的字符数。

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

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

Input:返回并删除接受缓冲区的数据。

---- 2、示例:---- 下面举一接收程序示例:制作一通讯接收窗口,选择菜单Controls→OLE→Insert Control→MicrosoftCommunications Control,---- 在窗口中出现通信控件图标单击鼠标右键,选择OCX Properties设置常用属性,也可在程序中进行设置窗口的Open事件程序如下ole_mPort=2ole_1.object.Settings="9600,N,8,1"ole_1.object.PortOpen=tureole_1.object.Rthreshold=10ole_1.object..Inputlen=0 . .通信控件的oncomm事件的程序如下choose case ole_mEventcase comEventBreak //接收到中断信号case comEventCDTO //处理CD超时. . .case comEvReceive sle_1.text=ole_1.object.Input. .end choose利用Microsoft公司提供的通讯控件利用Microsoft公司提供的通讯控件(Mscomm.vbx,用于16位通讯程序、Mscomm32.ocx用于开发32位通讯程序)可方便实现串口通讯。

MSComm控件的应用(串口编程)

MSComm控件的应用(串口编程)

MSComm控件的应用(串口编程)MSComm控件通过串行端口发送和接收数据,为应用程序提供了串行通讯功能。

在基于对话框的应用程序中加入一个MSComm控件非常简单。

只需打开“Project->AddToProject->Components and Controls->Registered Activex Controls”,然后选择控件:Microsoft Communication Control,version 6.0插入到当前的工程中。

CMS m类的相关文件 mscomm.cpp 和 mscomm.h 就加到工程中了。

从工具箱中把MSComm控件拖到对话框上,给控件关联成员变量m_Comm。

1.初始化串口,一般在OnInitDialog()函数中m_Comm.SetCommPort(1); //选择COM1m_Comm.SetInputMode(1); //设置数据通讯格式为二进制数组格式0.为文本格式//1.为二进制数组格式m_Comm.SetSettings("9600,n,8,1");//设置波特率为9600bps,无奇偶校验位,数据位8//位,停止位1位m_Comm.SetRThreshold(1); //设置为每次接到一个字节数据就触发OnComm事件m_Comm.SetInputLen(0);//设置当前接收区数据长度为0,表示全部读取波特率:110、300、600、1200、2400、4800、9600、14400、19200、28800、38400、115200 奇偶校验:E偶校验、M标号校验、N无校验、O奇校验、S空格校验数据位:4、5、6、7、8停止位:1、1.5、22.打开串口if(!m_Comm.GetPortOpen()) //如果串口是关闭的,则行打开串口{m_Comm.SetPortOpen(true);m_Comm.GetInput(); //清除串口输入缓冲区中残留数据}else{AfxMessageBox("串口打开失败!");}3.关闭串口if(m_Comm.GetPortOpen()){m_Comm.SetPortOpen(false);}4.接受数据,OnComm()函数中,数据保存在RcvData中VARIANT m_input;char *str;int len,nEvent;CString RcvData;nEvent = m_Comm.GetCommEvent();switch(nEvent){case 2:len=m_Comm.GetInBufferCount(); //接收缓冲区的字符数目if(len>0){m_input=m_Comm.GetInput();str=(char*)(unsigned char*)m_input.parray->pvData;}*(str+len) = '\0’;RcvData.Format("%s", str);}5.发送数据,把str数据发送出去int i,Count;Count=str.GetLength();CByteArray m_Array;m_Array.RemoveAll();m_Array.SetSize(Count);for(i=0;i<Count;i++){m_Array.SetAt(i,str[i]);}m_Comm.SetOutput(COleVariant(m_Array));。

VB_MSCOMM控件简介

VB_MSCOMM控件简介

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

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

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

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

如:=“9600,N,8,1”。

3)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: 向发送缓冲区传送一字符串。

12) EOFEnable: 若置TRUE,则当输入中出现EOF,就停止输入并产生OnComm 事件。

mscomm控件使用方法

mscomm控件使用方法

mscomm控件使用方法献花(0)4).InBufferSize:设置或返回接收缓冲区的大小,缺省值为1024字节。

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

8).InputLen:设置或返回接收缓冲区内用Input读入的字节数,设置该属性为0表示Input读取整个缓冲区的内容。

9).Input:从接收缓冲区读取一串字符。

10).OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。

11).OutBufferCount:返回发送缓冲区内等待发送的字节数,可通过设置该属性为0来清空缓冲区。

12).OutPut:向发送缓冲区传送一串字符。

该项目上位机采用Delphi编写,数据采集仪采用研华ADAM5510作为下位机采集实时压力数据,采用AcII方式传送数据,数据传输速率为9600bp,1位开始位,8位数据位,1位停止位,无奇偶校验位。

数据通信的具体格式为:。

程序用到的全局变量为:ReceiveStr:String;//接受Acii码字符数据字符串Setting:=9600,n,8,1;//设置通信口参数InputLen:=1;//设置Input一次从接受缓冲区读取字节数为1InBufferCount:=0;//清除接受缓冲区OutBufferCount:=0;//清除发送缓冲区InBufferSize:=50;//设置接受缓冲区为50字节OutBufferSize:=2;//设置发送缓冲区为2字节ShowMeage(串口已经打开!);end;2).数据接收与处理buffer:Olevariant;Temp:tring;cNow:Char;tmp某:Double;beginif((cLat=Chr(13))and(cNow=Chr(10)))thenbeginF1:=Trim(F1);dF1:=StrToFloat(F1);withSerieDepthdo//利用TChart绘制深度曲线begintmp某:=某Value[1]-某Value[0];Delete(0);Add某Y(某t+tmp某,dF1,,clGed);end;F1:=;end;if((cLat<>Chr(13))and(cNow<>Chr(10)))thenbeginF1:=F1+cNow;end;cLat:=cNow;end;end;3).串口关闭下面这些代码是针对发送和接收为16进制处理的。

msm控件的用法和函数说明

msm控件的用法和函数说明

MSComm控件进行串口编程步骤:1.在建立的程序工程中插入MSComm控件。

2.添加MSComm控件ID 的控制变量(或者对象)。

3.对串口进行初始化,设置MSComm控件的属性。

4.添加串口事件的消息处理函数OnComm()函数,在函数中根据应用需要,编写数据处理代码5.编写串口发送等其他代码。

6.关闭串口。

+MSComm控件常用属性:mPort:设置并返回通信端口号2.Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位3.PortOpen:设置并返回通信端口的状态。

也可以打开和关闭端口4.Input:从接收缓冲区返回和删除字符5.Output:向传输缓冲区写一个字符6.InputLen:设置并返回Input属性从接收缓冲区读取的字符数。

7.InBufferSize:设置或返回输入缓冲区的大小。

8.OutBufferSize:设置或返回输入缓冲区的大小。

9.InBufferCount:设置或返回输入缓冲区内等待读取的字节个数。

10.OutBufferCount:设置或返回输入缓冲区内等待读取的字节个数。

对MSComm控件通过Get/Set函数对来获取或设置控件的属性,每个属性均有与之对应的Get/Set函数对。

用法说明mPort:设置并返回通信端口号Void CMSComm::SetCommPort(short n);设置串口号Short CMSComm::GetCommPort();查询当前串口号说明:n可以设置成1到16中的任何数(缺省值为1)。

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

2.Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位Void CMSComm::SetSettings(LPCTSTR lpszNewValue);CString CMSComm::GetSettings();说明:当端口打开时,如果设置值lpszNewValue非法,则MSComm控件产生错误380(非法属性值)。

mscom控件详解(龚建伟)

mscom控件详解(龚建伟)

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 属性的值来查询事件和错误。

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

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

SMCOMM控件使用

SMCOMM控件使用

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

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

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

由于MSComm控件不是标准控件,要使用它就必须将MSComm控件添加到控件工具箱中添加控件的方法:选择“工程”|“部件”命令,在出现的“部件”对话框中选择“Microsoft Comm Controls 6.0”选择并单击“确定”按钮。

这时候MSComm控件就被添加到VB的控件工具箱中了。

如右图:(在图中那个电话标识)串口的初始化:1With MSComm1 初始化串口mPort = 13.Settings = "19200,N,8,1"4.OutBufferSize = 10245.InBufferSize = 10246.PortOpen = True7End With在上述初始化中完成了:设置通信端口,串口通信参数(波特率、奇偶校验、数据位、停止位),接收缓冲区的字节数,传输缓冲区的字节数,设置端口的状态为打开。

上述初始化放在窗体加载中完成。

数据的传输:在这里,我们先添加2个按钮控件,1个文本控件,1个标签控件。

点击“生成串号”按钮,读取到当前日期,显示在文本控件中。

1Private Sub Command1_Click()2Dim time_now1 As Date3time_now1 = Now4Text1.Text = Format(time_now1, "yyyymmdd")5used_data = False6End Subused_data为一个全局变量,目的是避免一次的数据发送好几次。

mscom控件详解龚建伟

mscom控件详解龚建伟

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控件: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 属性从接收缓冲区中读取的字符数。

MSCOMM控件的常用属性和方法

MSCOMM控件的常用属性和方法

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

以下是MSComm控件的常用属性和方法:●Commport:设置或返回串口号。

●Settings:以字符串的形式设置或返回串口通信参数。

●Portopen:设置或返回串口状态。

●InputMode:设置或返回接收数据的类型。

●Inputlen:设置或返回一次从接收缓冲区中读取字节数。

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

●InBufferCount:设置或返回接收缓冲区中等待计算机接收的字符数。

●Input:从接收缓冲区中读取数据并清空该缓冲区,该属性设计时无效,运行时只读。

●OutBufferSize:设置或返回发送缓冲区的大小,缺省值为512字节。

●OutBufferCount:设置或返回发送缓冲区中等待计算机发送的字符数。

●Output:向发送缓冲区发送数据,该属性设计时无效,运行时只读。

●Rthreshold:该属性为一阀值。

当接收缓冲区中字符数达到该值时,MSComm控件设置Commevent属性为ComEvReceive,并产生OnComm事件。

用户可在OnComm事件处理程序中进行相应处理。

若Rthreshold属性设置为0,则不产生OnComm事件。

例如用户希望接收缓冲区中达到一个字符就接收一个字符,可将Rthreshold设置为1。

这样接收缓冲区中接收到一个字符,就产生一次OnComm事件。

●Sthreshold:该属性亦为一阀值。

当发送缓冲区中字符数小于该值时,MSComm控件设置Commevent属性为ComEvSend,并产生OnComm事件。

mscom控件详解(龚建伟)

mscom控件详解(龚建伟)

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 属性的值来查询事件和错误。

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

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

MSComm控件

MSComm控件

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

MSComm控件提供下列两种处理通信的方式:事件驱动通信是处理串行端口交互作用的一种非常有效的方法。

在许多情况下,在事件发生时需要得到通知,例如,在CarrierDetect(CD)或Request To Send(RTS)线上一个字符到达或一个变化发生时。

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

MSComm事件还可以检查和处理通信错误。

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

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

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

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

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

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

可以在Windows“控制面板”中改变端口地址和中断地址。

MSComm控件的属性1、CommPort属性设置或返回连接的串口编号。

必须指定该属性,Windows将会利用该串口和外界通信。

CommPort属性值用1,2,…表示串口COM1,COM2…,其取值范围为1~16,缺省为1。

MSComm控件支持的组大串口号是16个,CommPort属性值超过16,系统会通知出错,并返回前一次设定的值。

2、Settings属性设置或返回通信参数,值为字符串型表示,主要设定数据传输率、奇偶校验、数据位数,停止位等4个参数。

组成格式为:“BBBB,P,D,S”其中BBBB为数据传输率,P为奇偶校验,D为数据位数,S为停止位数。

默认的为“19200,N,8,1”表示传输速率19200bit/s,无奇偶校验位,8位数据位,1位停止位。

MSComm控件

MSComm控件

MSComm控件MSComm控件提供了两种处理通信的方法:1.事件驱动通信,是一种功能很强的处理串口活动的方法。

在大多数情况下,用户需要获知事件发生的时间,例如,在CD(Carrier Detect)线或RTS(Request To Send)线上有字符到达或发生了改变等。

在这种情况下,使用MSComm控件的OnComm事件捕获和处理这些通信事件。

OnComm也可以捕获和处理通信中的错误。

要获取所有事件和通信错误的完整清单,请参阅CommEvent属性。

2.用户也可以在每个重要的程序功能之后检查CommEvent属性的值来检测事件和通信错误。

这对小的自含程序可能比较常用。

例如,如果编写一个简单的电话拨号程序,那么在接收了每个字符后都产生一个事件并没有意义,因为你只打算从调制解调器中接收OK响应信息。

使用的每个MSComm控件都与一个串口对应。

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

可以在Windows 控制面板中修改串口地址的中断地址。

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

属性描述CommPort 设置并返回通讯端口号。

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

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

也可以打开和关闭端口。

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

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

如何使用://以VC++为例:首先,在对话框中创建通信控件,若Control工具栏中缺少该控件,可通过菜单Project --> Add to Project --> Components and Control插入即可,再将该控件从工具箱中拉到对话框中。

此时,你只需要关心控件提供的对Windows 通讯驱动程序的API 函数的接口。

换句话说,只需要设置和监视MSComm控件的属性和事件。

打开所需串口后,需要考虑串口通信的时机。

MSComm控件之属性

MSComm控件之属性

事件或错误返回下列值
常量
ComEventBreak ComEventCTSTO ComEventDSRTO ComEventFrame ComEventOverrun ComEventCDTO

1001 1002 1003 1004 1006 1007
描述
收到了断开信号 Clear To Send Timeout。在发送字符时,在系统指定的事 1 件内, CTS(Clear To Send)线是低电平 Data Set Ready Timeout。在发送字符时,在系统指定的事件内, DSR(Data Set Ready)线是低电平 数据帧错误。硬件检测到一个数据帧错误 端口溢出。硬件中的字符尚未读,下一个字符又到达,并且丢失 Carrier Detect Time。在发送字符时,在系统指定的事件内,CD (Carrier Detect) 线是低电平。 也称为 RLSD CD (Receive Line Singal Detect,接收线信号检测) 接收缓冲区溢出。在接收缓冲区中没有空间 奇偶校验错。硬件检测到奇偶校验错误 7 发送缓冲区满。在对发送字符排队时,发送缓冲区满 检取端口 DCB (Device Control Blick) 时发生了没有预料到的错误
ComEvEOF

MSComm 控件可捕获的错误消息
常量 ComInvalidPropertyvalue ComSetNotSupported ComGetNotSupported ComPortOpen ComPortInvalid 值 380 383 394 8000 8001 8002 8003 8004 ComPortAleadyOpen 8005 8006 8007 8008 8009 8010 8011 ComNoOpen 8012 8013 8014 ComSetCommStateFailed ComPortNotOpen ComReadError ComDCBError 8015 8016 8018 8019 8020 8021 描述 无效的属性值 属性只读 属性只读 端口打开时该存在无效 超时设置必须比 0 值大 无效的端口号 属性只在运行时有效 属性在运行时是只读的 端口已经打开 设备标识符无效或不支持 不支持设备的波特率 指定的字节大小无效 缺省参数错误 硬件不可用(被其他设备锁住) 函数不能分配队列 设备没有打开 设备已经打开 不能使用通信通知 不能设置通信状态 不能设置通信事件屏蔽 该存在只在端口打开是有效 设备忙 通信设备读错误 检取端口设备控制块时出现内部错误
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Input 从接收缓冲区返回和删除字符。
Output 向传输缓冲区写一个字符串。
下面分别描述:
CommPort属性 设置并返回通讯端口号。
语法 mPort[value ] (value 一整型值,说明端口号。)
语法:object.DSRHolding
object 所在处表示对象表达式,其值是“应用于”列表中的对象。
DSRHolding 属性返回以下值:
值 描述
True Data Set Ready 线高
False Data Set Ready 线低
Handshake 常数
常数 值 描述
comNone 0 无握手。
comXonXoff 1 XOn/Xoff 握手。
comRTS 2 Request-to-send/clear-to-send 握手。
comRTSXOnXOff 3 Request-to-send 和 clear-to-send 握手皆可。
说明:若设置 Sthreshold 属性为 0(缺省值),数据传输事件不会产生 OnComm 事件。若设置 Sthreshold 属性为 1,当传输缓冲区完全空时,MSComm 控件产生 OnComm 事件。如果在传输缓冲区中的字符数小于 value,CommEvent 属性设置为 comEvSend,并产生 OnComm 事件。comEvSend 事件仅当字符数与 Sthreshold 交叉时被激活一次。例如,如果 Sthreshold 等于 5,仅当在输出队列中字符数从 5 降到 4 时,comEvSend 才发生。如果在输出队列中从没有比 Sthreshold 多的字符,comEvSend 事件将绝不会发生。
DSRHolding 属性
Settings 属性
InputLen 属性
EOFEnable 属性
Handshake 常数
OnComm 常数
InputMode 常数
错误消息
MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。MSComm控件在串口编程时非常方便,程序员不必去花时间去了解较为复杂的API函数,而且在VC、VB、Delphi等语言中均可使用。 Microsoft Communications Control(以下简称MSComm)是Microsoft公司提供的简化Windows下串行通信编程的ActiveX控件,它为应用程序提供了通过串行接口收发数据的简便方法。具体的来说,它提供了两种处理通信问题的方法:一是事件驱动(Event-driven)方法,一是查询法。
SThreshold 属性: MSComm 控件设置 CommEvent 属性为 comEvSend 并产生 OnComm 事件之前,设置并返回传输缓冲区中允许的最小字符数。
语法 object.SThreshold [ = value ]
value 整形表达式,代表在 OnComm 事件产生之前在传输缓冲区中的最小字符数。
摘要:本文详细介绍了MSComm控件在串口编程中使用。
目 次
MSComm控件两种处理通讯的方式
CommPort属性
RThreshold 属性
CTSHolding 属性
SThreshold 属性
CDHolding 属性
comEventRxOver 1008 接收缓冲区溢出
comEventRxParity 1009 Parity 错误
comEventTxFull 1010 传输缓冲区满
comEventDCB 1011 检索端口 设备控制块 (DCB) 时的意于 RTS/CTS (Request To Send/Clear To Send) 硬件握手。如果需要确定 Clear To Send 线的状态,CTSHolding 属性给出一种手工查询的方法。
详细信息 有关握手协议,请参阅 Handshaking 属性。
语法 object.CDHolding
设置值:CDHolding 属性的设置值为:
设置 描述
True Carrier Detect 线为高电平
False Carrier Detect 线为低电平
说明:注意当 Carrier Detect 线为高电平 (CDHolding = True) 且超时时,MSComm 控件设置CommEvent 属性为 comEventCDTO(Carrier Detect 超时错误),并产生 OnComm 事件。
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 超时
说明:当 Data Set Ready 线为高电平 (DSRHolding = True) 且超时时,MSComm 控件设置 CommEvent 属性为 comEventDSRTO(数据准备超时)并产生 OnComm 事件。
1.2 查询方式
查询方式实质上还是事件驱动,但在有些情况下,这种方式显得更为便捷。在程序的每个关键功能之后,可以通过检查 CommEvent 属性的值来查询事件和错误。如果应用程序较小,并且是自保持的,这种方法可能是更可取的。例如,如果写一个简单的电话拨号程序,则没有必要对每接收一个字符都产生事件,因为唯一等待接收的字符是调制解调器的“确定”响应。
注意 在主机应用程序中捕获一个丢失的传输是特别重要的,例如一个公告板,因为呼叫者可以随时挂起(放弃传输)。
Carrier Detect 也被称为 Receive Line Signal Detect (RLSD)。
数据类型 Boolean
DSRHolding 属性:确定 Data Set Ready (DSR) 线的状态。Data Set Ready 信号由调制解调器发送到相连计算机,指示作好操作准备。该属性在设计时无效,在运行时为只读。
语法 object.Rthreshold [ = value ](value 整型表达式,说明在产生 OnComm 事件之前要接收的字符数。 )
说明 当接收字符后,若 Rthreshold 属性设置为 0(缺省值)则不产生 OnComm 事件。例如,设置 Rthreshold 为 1,接收缓冲区收到每一个字符都会使 MSComm 控件产生 OnComm 事件。
Mscomm 控件的 CTSHolding 属性设置值:
True Clear To Send 线为高电平。
False Clear To Send 线为低电平。
说明:如果 Clear To Send 线为低电平 (CTSHolding = False) 并且超时时,MSComm 控件设置 CommEvent 属性为 comEventCTSTO (Clear To Send Timeout) 并产生 OnComm 事件。
说明 在设计时,value 可以设置成从 1 到 16 的任何数(缺省值为 1)。但是如果用 PortOpen 属性打开一个并不存在的端口时,MSComm 控件会产生错误 68(设备无效)。
注意:必须在打开端口之前设置 CommPort 属性。
RThreshold 属性:在 MSComm 控件设置 CommEvent 属性为 comEvReceive 并产生 OnComm 之前,设置并返回的要接收的字符数。
InputMode 常数
常数 值 描述
comInputModeText 0 (缺省)通过 Input 属性以文本方式取回数据。
comInputModeBinary 1 通过 Input 属性以二进制方式检取回数据。
CDHolding 属性:通过查询 Carrier Detect (CD) 线的状态确定当前是否有传输。Carrier Detect 是从调制解调器发送到相联计算机的一个信号,指示调制解调器正在联机。该属性在设计时无效,在运行时为只读。
2.MSComm 控件的常用属性
MSComm控件有很多重要的属性,但首先必须熟悉几个属性。
CommPort 设置并返回通讯端口号。
Settings 以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
PortOpen 设置并返回通讯端口的状态。也可以打开和关闭端口。
CTSHolding 属性:确定是否可通过查询 Clear To Send (CTS) 线的状态发送数据。Clear To Send 是调制解调器发送到相联计算机的信号,指示传输可以进行。该属性在设计时无效,在运行时为只读。
语法: object.CTSHolding(Boolean)
1.MSComm控件两种处理通讯的方式
MSComm控件提供下列两种处理通讯的方式:事件驱动方式和查询方式。
1.1 事件驱动方式
事件驱动通讯是处理串行端口交互作用的一种非常有效的方法。在许多情况下,在事件发生时需要得到通知,例如,在串口接收缓冲区中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 线上一个字符到达或一个变化发生时。在这些情况下,可以利用 MSComm 控件的 OnComm 事件捕获并处理这些通讯事件。OnComm 事件还可以检查和处理通讯错误。所有通讯事件和通讯错误的列表,参阅 CommEvent 属性。在编程过程中,就可以在OnComm事件处理函数中加入自己的处理代码。这种方法的优点是程序响应及时,可靠性高。每个MSComm 控件对应着一个串行端口。如果应用程序需要访问多个串行端口,必须使用多个 MSComm 控件。
相关文档
最新文档