VB6.0的工控机与智能流量积算仪的串口通信


  (15):流量单位;00表示SCCM和SCC,01表示SCCM和SL,11表示SLM和SL;
    (16):阀状态;00表示关闭,80表示阀控,FF表示清洗;
    CRCL:CRC的低八位;CRCH:CRC的高8位。

    3、用VB实现串行通讯

    3.1 MSComm控件

    VB的通信控件MSComm能够提供串行通信的全部功能,程序编写、调试简单方便,开发速度快,该控件封装了通信过程中的底层操作程序,用户只需设置和监控控件的属性和事件,就可以方便地实现异步串行通信。

    采用MSComm控件接收数据,按照接收方式分两种形式:事件驱动方式,定时查询方式。本例为适应流量的实时控制采用定时驱动方式,若定时器计时到,通过串行通信口向指定地址流量积算仪发出读写等操作命令,等待时间到则检查InBufferCount属性值来判断输入缓冲区中是否接受到了相应数目的字符,从而进行读取、判断数据合法性和数据存储、处理等操作。

    3.2 通信功能的编程实现

    程序框图如下:


图2 串口通信程序框图

    串口初始化:MSComm1.CommPort = 1
    MSComm1.SThreshold = 1
    MSComm1.Settings = 9600,N,8,1
    MSComm1.InBufferSize = 1024
    MSComm1.OutBufferSize = 1024
    MSComm1.InputMode = comInputModeBinary

    打开串口并定时发送数据命令:Private Sub Timer1_Timer()
    Dim bytearray(0 To 7) As Byte
    bytearray(0) = &H1
    bytearray(1) = &H3
    bytearray(2) = &H0
    bytearray(3) = &H2
    bytearray(4) = &H0
    bytearray(5) = &H8
    bytearray(6) = &HE5
    bytearray(7) = &HCC
    MSComm1.InputLen = 21
    MSComm1.InBufferCount = 0
    MSComm1.OutBufferCount = 0
    MSComm1.RThreshold = 1
    MSComm1.PortOpen = True
    If MSComm1.PortOpen = True Then
    MSComm1.Output = bytearray
    End If
    End Sub
    接受数据:Private Sub MSComm1_OnComm()
    Do
    DoEvents
    Loop Until MSComm1.InBufferCount = 21
    Dim dataread() As Byte
    Dim tempdata As Variant
    Dim str As String
    If MSComm1.CommEvent = comEvReceive Then
 

COPYRIGHT(C) 2011 厦门永宏亚得机电科技有限公司版权所有(闽ICP备05025945号) ALL RIGHTS RESERVED?

电话: 0592-5190891 传真: 0592-5190720 E-Mail: E-mail:yade8895@163.com
地址: 厦门市海沧区兴港六里17号2607室 邮编:361009 联系人:翟先生