VB中关于MSComm控件使用详解

合集下载

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 属性。

串口通信-MSComm控件使用详解

串口通信-MSComm控件使用详解

串口通信-MSComm控件使用详解2012-11-13 09:35 6988人阅读评论(0) 收藏举报控件编程 Delphi编程(13)MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

vb串口通讯usb通讯,很有用哦

vb串口通讯usb通讯,很有用哦
(1)事件
OnComm:通信控件只提供了一个事件,该事件的触发可以对串口的通信事件及错误进行处理。通过对CommEvent 属性的判断可知当前的通信错误和事件,分别对每个CommEvent 值进行编程就完成了对各个错误和事件的处理。如:CommEvent = MSCOMM—EV—SEND 表示发送事件。这些信息可从VB 提供的常量文件CONSTANT. TXT中查出。
完成发送数据后的一系列操作。如:对刚发送的数据进行处理,当串口是和MODEM通信时,发送完数据后可进行拆除线路联接、挂机等操作。
RThreshold :设置并返回不触发OnComm事件时接收缓冲区被允许的最多字符数。当缓冲区的字符多于设置的值时,则触发OnComm 事件,并把CommEvent 设为MSCOMM—EV—RECEIVE,当RThreshold = 0 则禁止接收触发OnComm 事件,当RThreshold = 1 则接收缓冲区有一个或更多字符时就触发OnComm事件。利用这一属性,就可完成对串口接收数据的处理。
comm1. OutBufferSize = 512 ′设置发送缓冲区为512 字节 comm1. InBufferSize = 512 ′设置接收缓冲区为512 字节
comm1. SThreshold = 0 ′禁止发送事件
comm1. RThreshold = 1 ′每一个字符到接收缓冲区都触发接收事件 ′设置COM2
(2)属性
CommPort :设置通信控件与哪个串口相连接,设置并返回通信口号。 Setting :设置通信的信息格式,为字符型。顺序为:波特率、校验、数据位、停止位。
PortOpen :布尔型、开关通信口。
InputLen :从接收缓冲区读取字符个数。

控件使用

控件使用

、控件mscomm32.ocx 的几个重要属性CommPort:设置并返回通讯端口号。

Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位PortOpen:设置并返回通讯端口的状态。

也可以打开和关闭端口。

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

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

InBufferCount:返回接收缓冲区中等待的字符数,该属性在设计时无效,可以把InBufferCount 属性设置为0 来清除接收缓冲区。

InBufferSize:设置并返回接收缓冲区的字节数,接收缓冲区的大小。

Rthreshold:产生OnComm 事件之前要接收的字符数。

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

设置为0(缺省值)则不产生OnComm 事件。

CommEvent:返回最近的通讯事件或错误。

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

只要有通讯错误或事件发生时都会产生OnComm 事件,CommEvent 属性存有该错误或事件的数值代码。

CommEvent 属性返回2 表示收到Rthreshold 个字符。

该事件将持续产生直到用Input 属性从接收缓冲区中删除数据。

2、实例:该事例演示如何控制COM口发送命令及如何接收数据。

本事例采用轮讯方式。

适用于通讯数据不是很巨大的和要求不是很高速的情况下。

(1)在VFP中,建立一个新的表单(2)插入文本(命名为TEXT1,用来显示读取的数据)(3)建立Microsoft Communication Control1 控件在工具栏中点插入ole容器控件,选择Microsoft Communication Control 控件(NAMe为mscomm1)(4)建立一个按纽命名为command1(5)在CHICK属性里下如下代码:**存储变量名字buffer=""** 使用COM1。

串口控件

串口控件

MSComm控件vb中mscomm 控件的应用属性描述 CommPort 设置并返回通讯端口号。

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

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

也可以打开和关闭端口。

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

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

.目录在开始使用MSComm控件之前。

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

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

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

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

在发送字符时,在系统指定的事1件内,CTS(Clear To Send)线是低电平ComEventDSRTO 1003 Data Set Ready Timeout。

在发送字符时,在系统指定的事件内,DSR(Data Set Ready)线是低电平ComEventFrame 1004 数据帧错误。

硬件检测到一个数据帧错误ComEventOverrun 1006 端口溢出。

硬件中的字符尚未读,下一个字符又到达,并且丢失ComEventCDTO 1007 Carrier Detect Time。

在发送字符时,在系统指定的事件内,CD(Carrier Detect)线是低电平。

CD 也称为RLSD(Receive Line Singal Detect,接收线信号检测)ComEventRxOver 1008 接收缓冲区溢出。

在接收缓冲区中没有空间ComEventRxParity 1009 奇偶校验错。

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 控件通过串行端口传输和接收数据,为应用程式提供串行通讯功能。

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控件使用详解2012-11-13 09:35 6988人阅读评论(0) 收藏举报控件编程 Delphi编程(13)MSComm 控件通过串行端口传输和接收数据,为应用程序提供串行通讯功能。

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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 ]CommPort 属性语法包括下列部分:部分描述object 对象表达式,其值是“应用于”列表中的对象。

value 一整型值,说明端口号。

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

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

警告必须在打开端口之前设置 CommPort 属性。

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

语法object.Settings[ = value]Settings 属性语法包括下列部分:部分描述object 对象表达式,其值是“应用于”列表中的对象。

value 字符串表达式,说明通讯端口的设置值,如下所述。

说明当端口打开时,如果 value 非法,则 MSComm 控件产生错误 380(非法属性值)。

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

value 的缺省值是:"9600,N,8,1"下表列出合法的波特率:设置值110300600120024009600(缺省)1440019200288003840056000128000256000下表说明合法的奇偶校验值。

设置值描述E 偶数 (Even)M 标记 (Mark)N 缺省 (Default)NoneO 奇数 (Odd)S 空格 (Space)下表列出合法的数据位值。

设置值45678 (缺省)下表列出合法的停止位值。

设置值1 (缺省)1.52数据类型StringSettings 示例下面的例子设置控件端口通讯,波特率 9600,无奇偶校验检查,8 个数据位,1 个停止位:MSComm1.Settings = "9600,N,8,1"PortOpen 属性设置并返回通讯端口的状态(开或关)。

在设计时无效。

语法object.PortOpen[ = value]PortOpen 属性语法包括下列部分:部分描述object 对象表达式,其值是“应用于”列表中的对象。

value 布尔表达式,说明通讯端口的状态。

设置值value 设置值是:设置值描述True 端口开False 端口关说明设置 PortOpen 属性为 True 打开端口。

设置为 False 关闭端口并清除接收和传输缓冲区。

当应用程序终止时,MSComm 控件自动关闭串行端口。

在打开端口之前,确定 CommPort 属性设置为一个合法的端口号。

如果 CommPort 属性设置为一个非法的端口号,则当打开该端口时,MSComm 控件产生错误 68(设备无效)。

另外,串行端口设备必须支持 Settings 属性当前的设置值。

如果 Settings 属性包含硬件不支持的通讯设置值,那么硬件可能不会正常工作。

如果在端口打开之前,DTREnable 或 RTSEnable 属性设置为 True,当关闭端口时,该属性设置为 False。

否则,DTR 和 RTS 线保持其先前的状态。

数据类型BooleanPortOpen 属性示例下例以波特率 9600 打开 1 号通讯端口,没有奇偶检查,8 个数据位,1 个停止位。

MSComm1.Settings = "9600,n,8,1"mPort = 1MSComm1.PortOpen = TrueInput 属性返回并删除接收缓冲区中的数据流。

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

语法object.InputInput 属性语法包括下列部分:部分描述object 对象表达式,其值是“应用于”列表中的对象。

说明InputLen 属性确定被 Input 属性读取的字符数。

设置 InputLen 为 0,则 Input 属性读取缓冲区中全部的内容。

InputMode 属性确定用 Input 属性读取的数据类型。

如果设置 InputMode 为 comInputModeText,Input 属性通过一个 Variant 返回文本数据。

如果设置 InputMode 为 comInputModeBinary,Input 属性通过一个 Variant .返回一二进制数据的数组。

数据类型VariantInput 属性示例该例子说明如何从接收缓冲区读取数据。

Private Sub Command1_Click()Dim InString as String' 读取所有可用数据。

MSComm1.InputLen = 0' 检查数据。

If MSComm1.InBufferCount Then' Read data.InString = MSComm1.InputEnd IfEnd SubOutput 属性往传输缓冲区写数据流。

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

语法object.Output [ = value ]Output 属性语法包括下列部分:部分描述object 对象表达式,其值是“应用于”列表中的对象。

value 要写到传输缓冲区中的一个字符串。

说明Output 属性可以传输文本数据或二进制数据。

用 Output 属性传输文本数据,必须定义一个包含一个字符串的 Variant。

发送二进制数据,必须传递一个包含字节数组的 Variant 到 Output 属性。

正常情况下,如果发送一个 ANSI 字符串到应用程序,可以以文本数据的形式发送。

如果发送包含嵌入控制字符、Null 字符等等的数据,要以二进制形式发送。

数据类型VariantOutput 属性示例下面的例子说明如何将用户键入的每一个字符送到串行端口:Private Sub Form_KeyPress (KeyAscii As Integer)Dim Buffer as Variant' 设置并打开窗口mPort = 1MSComm1.PortOpen = TrueBuffer = Chr$(KeyAscii)MSComm1.Output = BufferEnd SubOnComm 事件无论何时当 CommEvent 属性的值变化时,就产生 OnComm 事件,标志发生了一个通讯事件或一个错误。

语法Private Sub object_OnComm ()OnComm 事件语法包括下列部分:部分描述object 对象表达式,其值是“应用于”列表中的对象。

说明CommEvent 属性包含实际错误或产生 OnComm 事件的数码。

注意,设置 Rthreshold 或 Sthreshold 属性为 0,分别使捕获 comEvReceive 和 comEvSend 事件无效。

OnComm 事件示例下例说明如何处理通讯错误和事件。

可以在相关的 Case 语句之后插入代码来处理特定的错误或事件。

Private Sub MSComm_OnComm ()Select Case mEvent' Handle each event or error by placing' code below each case statement' 错误Case comEventBreak ' 收到 Break。

Case comEventCDTO ' CD (RLSD) 超时。

Case comEventCTSTO ' CTS Timeout。

Case comEventDSRTO ' DSR Timeout。

Case comEventFrame ' Framing ErrorCase comEventOverrun '数据丢失。

Case comEventRxOver '接收缓冲区溢出。

Case comEventRxParity ' Parity 错误。

Case comEventTxFull '传输缓冲区已满。

Case comEventDCB '获取 DCB 时意外错误' 事件Case comEvCD ' CD 线状态变化。

相关文档
最新文档