基于VB6的PC机与多台单片机通信的应用 (2)
VB6 PC机 单片机通信
本系统VB6通信初始化程序如下:
MSComm1.CommPort = 1 ;选择COM1为通信端口
MSComm1.Setting ="9600,n,8,1" ;设置波特率为9600,无奇偶校验,8个数据位,一个停止位
MSComm1.OutBuffersize =256 ;设置输出缓冲大小为256个字节
MSComm1.RThreshold = 3 ;输入缓冲区里有3个字符时,触发OnComm事件
If Not MSComm1.PortOpen = True
Then MSComm1.PortOpen = True ;打开串行口,并防止运行时发生打开同一串口的错误
End If
以上MSComm1是系统默认的MSComm控件的名字(Name)。在初始化完成后通过
MSComm1.Output=OutputString 发送数据,OutputString 是定义的字符型变量(Dim OutputString As String)。一般用定时器的Timer事件来定时发送数据,接到回应字符后则关闭定时器。MSComm控件可以直接把字符串转化成二进制数据形式发送,不需要我们在程序中用算法来转换。每次发送完毕最好关闭串口。用MSComm1.PortOpen=False来实现。MSComm_OnComm事件可以捕捉通信时发生的错误,也可以接收数据。由于RThreshold的属性值为3,所以当输入缓冲区满三个字符时,就触发MSComm_OnComm事件,通过对接收字符的判断,可以决定主程序分支的去向。
3.4 下位机程序设计
本系统单片机MCS-51通信时用定时器T1工作于定时方式2作为周波发生器,选择11.0592的晶振。由于波特率为9600,所以定时器T1初值取0FDH。初始化还需设置用于控制和监视串行口状态的控制状态寄存器SCON。初始化程序如下:
MOV SCON,#0C0H ;通信方式3
MOV PCON,#00H ;SMOD=0
MOV TMOD,#20H ;定时器T1,工作于方式2
MOV TL1,#0FDH ;设置波特率为9600
MOV TH1,#0FDH
单片机始终处于被动状态,只在接收到通信的命令后才进入中断服务子程序发送数据,进入通信状态。PC机与单片机通信时,先发出呼叫信号,单片机接到约定的呼叫信号后,向PC机发出应答信号,表示准备接受,PC机在接到应答信号后则发出通信代码,单片机接到通信代码与本身代码相减,若为0则开始接受命令,设置新的参数;若不为0则继续执行采集数据和发送数据的程序。
3.5 库机的设计
库机设计以单片机为核心,配有EPROM、A/D转换、数码显示、光电隔离和控制电路等。传感器把温度、湿度等非电量转化为电量,通过A/D转换后变为数字量,然后通过单片机的串行通信将数据送往PC机数据库保存。同时,单片机将采集的结果与设定参数进行比较,如若不在规定的参数范围之内或者单片机采集的状态量发生异常,则驱动光电隔离放大器,经过一级放大后就可驱动继电器动作打开降温、去湿设备和报警系统。在这里光电隔离可以有效地避免继电器的误动作,提高了系统的抗干扰能力。
4 结束语
本文所介绍的管理和监控系统是基于VB6的主从式通信结构,可靠性好,可行性强。其硬件结构简单,软件(VB6)编程环境友好,界面灵活,易学易用。本系统可以方便地控制通信对象的选择,实时显示所采集数据,人机对话灵多机动,易于操作。这种单片机与数据库的串行通信技术的应用,为库房管理的发展提供了新的方向。
联系客服