大三的时候做的一个设计之MSComm控件(请指教呵呵)
0赞串行通讯的使用在现代愈来愈普遍,但是仍停留在使用者的角色上:身为一个系统设计者,面对愈来愈多样化的环境,要学会如何选择使用一个最简单的方式完成一个系统设计。在本次实验中我选择了Visual Basic平台。Visual Basic不但容易学习,而且可据以设计系统的内建及外挂控件更是众多,同时微软在VB中设计了一个相当好用的控件,可以让我们完成串行通讯的设汁,那就是MSComm通讯控件。
在使用VB所提供的串行通讯功能之前,必须对VB的MSComm通讯控件作一个了解,以便可以将串行通讯的观念套用上去。VB的串行通讯对象乃是将Rs-232的低阶动作予以封装,使用者以高阶的Basic语法即可利用RS-232与外界通讯,并不需要了解其它相关的低阶动作。
MSComm属性众多,其重要属性设明如下:
CommPort:设定或传回通讯连接端口代号。程序必须指定所要使用的串行端口的号码,Windows系统会使用所设定的通讯端口与外界作通讯。程序亦可经由此属性读回所使用的连接端口号码。在此所设定的通讯端口号由1开始往上通增,MSComm控件的最大值是16,当使用的通讯端口号码超过l 6时,此控件会通知错误讯息。
Settings:设定初始化参数。以字符串的型式设定或传回联机速度、同位检查、数据位、停止位等四个参数。其格式为“BBBB,P,D,s”,其中BBBB为联机速度,P为同位检查方式,D为数据位数,s为停止位数。默认值是“9600,N,8,1”,其意为“所使用的通讯端口是以每秒9600bit的速度作传输,不作同位的检查,每个数据单元是8个bit而停止位是1个Bit,而此四项必须是依照顺序,不可前后对调。
PortOpen:设定或传回通讯连接端口的状态。使用串行端口之前必须先将要使用的串行埠先行开启;而在使用完毕之后,也必须执行关闭的动作。串行通讯端口的各项功能的完成都是在Port0Pen的True与False之间。
InPut:从输入缓冲区传回并移除字符。程序靠着这个指令将从对方所传至输入缓冲区的字符读进程序中,并清除缓冲区小已被读取的字符。
OutPut:将一个字符串写入传输缓冲区。当程序需要向对方传输字符串时,可将字符串使用此指令写入输出缓冲区中。至于串行端口是否将此字符印送到对方的串行输入缓冲区中,则要视送出字符串这方是否设定传送门槛属性而定。
InPutLen:指定由串行端口读入的字符申长度。VB所写的程序可以使用InPut的指令将存放在输入暂存区的字符读入,但欲指定所读入的字符长度则要使用本届性的设定。
HandShakingl指定通讯两方的交握协议。所谓的“交握协议”也就是前面专题讨论到的流量控制。
交握协议只能在没有缓冲区超速的情况下,才能保证数据不会遗失。而缓冲区超速是指数据到达连接端口的速度对通讯装置来说太快,以至于来不及将数据转移到接收缓冲区[5]。
1 MSComm通讯步骤
通常我们以下面的步骤来使用VB的MSComm控件作通讯控制:
(1)加入通讯对象,也就是MSComm对象c
(2)设定通讯端口属性,即CommPort属性。
(3)设定通讯协议,即HandShaking属性。
(4)设定传输速度等参数,即Settings属性。
(5)设定其它参数,在必要时再加上其它的届性设定。
(6)开启通讯端口,即PortOpen属性。
(7)送出字符串或写入字符串,使用InPut及OutPut属性
(8)使用完MSComm通讯对象后,将通讯端口关闭。
根据以上的步骤,可以建构出需要的通讯传输系统。
为了检验Rs-232是否能够实现计算机之间的通讯,我们做一个简单的通讯测试。为了提高效率,这里我们只做接收方的VB程控,发送方由已知的串口控制程序(串口精灵)代替。

