一.引用
串行通讯组件(MSComm 控件)包含在专业版及企业版中.
MSComm 组件并不是主动出现在工具箱的,当我们需要用到它时,做如下步骤:
1.在工具箱上右键单击,在弹出的对话框中选择 "部件"选项
2.在"控件"标签中,找到"Microsoft Comm Control 6.0"选项,并勾选它,然后按"确定"
3.这时,工具箱中会出现一个"电话机"的图标.已经OK啦.
(我用的是简体中文版的.)
二.属性
常用属性 : 说明
CommPort: 设置通讯端口号 (1-16).例:MSComm1.CommPort=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事件。RTHreshold=10----表示10个字节到达时才响应OnComm事件。
SThreshold: 传输中所能允许的最小字符数. 设置 Sthreshold 属性为 0(缺省值),数据传输事件不会产生 OnComm 事件。若设置 Sthreshold 属性为 1,当传输缓冲区完全空时,MSComm 控件产生 OnComm 事件。如果在传输缓冲区中的字符数小于 value,CommEvent 属性设置为 comEvSend,并产生 OnComm 事件。comEvSend 事件仅当字符数与 Sthreshold 交叉时被激活一次。例如,如果 Sthreshold 等于 5,仅当在输出队列中字符数从 5 降到 4 时,comEvSend 才发生。如果在输出队列中从没有比 Sthreshold 多的字符,comEvSend 事件将绝不会发生。
DTREnable:决定是否使Request To Send(RTS)行有效.
PortOpen:设置通讯端口的状态.True(打开)/False(关闭).
三.错误消息
下面列出了 MSComm 控件可以捕获的错误:
错误号: 描述
380 无效属性值 comInvalidPropertyValue
383 属性为只读 comSetNotSupported
394 属性为只读 comGetNotSupported
8000 端口打开时操作不合法 comPortOpen
8001 超时值必须大于 0
8002 无效端口号 comPortInvalid
8003 属性只在运行时有效
8004 属性在运行时为只读
8005 端口已经打开 comPortAlreadyOpen
8006 设备标识符无效或不支持该标识符
8007 不支持设备的波特率
8008 指定的字节大小无效
8009 缺省参数错误
8010 硬件不可用(被其它设备锁定)
8011 函数不能分配队列
8012 设备没有打开 comNoOpen
8013 设备已经打开
8014 不能使用 comm 通知
8015 不能设置 comm 状态 comSetCommStateFailed
8016 不能设置 comm 事件屏蔽
8018 仅当端口打开时操作才有效 comPortNotOpen
8019 设备忙
8020 读 comm 设备错误 comReadError
8021 为该端口检索设备控制块时的内部错误 comDCBError