MSComm控件利用详解
副标题#e#
摘要:本文具体先容了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控件。
#p#副标题#e#
1.2 查询方法
查询方法实质上照往事件驱动,但在有些环境下,这种方法显得更为便捷。在措施的每个要害成果之后,可以通过查抄CommEvent属性的值来查询事件和错误。假如应用措施较小,而且是自保持的,这种要领大概是更可取的。譬喻,假如写一个简朴的电话拨号措施,则没有须要对每吸收一个字符都发闹事件,因为独一期待吸收的字符是调制解调器的“确定”响应。
2.MSComm控件的常用属性
MSComm控件有许多重要的属性,但首先必需熟悉几个属性。
CommPort 配置并返回通讯端标语。
Settings 以字符串的形式配置并返回波特率、奇偶校验、数据位、遏制位。
PortOpen 配置并返回通讯端口的状态。也可以打开和封锁端口。
Input 从吸收缓冲区返回和删除字符。
Output 向传输缓冲区写一个字符串。
下面别离描写:
CommPort属性 配置并返回通讯端标语。
语法 object.CommPort[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 事件发生之前在传输缓冲区中的最小字符数。
#p#分页标题#e#
说明:若配置 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)。
数据范例 Boolean
DSRHolding属性:确定 Data Set Ready (DSR) 线的状态。Data Set Ready 信号由调制解调器发送到相连计较机,指示作好操纵筹备。该属性在设计时无效,在运行时为只读。
语法:object.DSRHolding
object 地址处暗示工具表达式,其值是“应用于”列表中的工具。
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 握手例程时该属性是十分有用的。
数据范例:Boolean
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属性从吸收缓冲区中读取的字符数。
说明:InputLen 属性的缺省值是 0。配置 InputLen 为 0 时,利用 Input 将使MSComm控件读取吸收缓冲区中全部.