当前位置:编程学习 > VB >>

vb与电子秤仪表的通讯问题

最近公司安装了两台电子秤,要实现与程控软件的通讯。程控软件用的是vb脚本,厂家只提供了通讯协议。我不是计算机专业的,不知道该如何实现。希望有高手帮帮忙指点下,以解燃眉之急。在此谢谢各位了。
通讯协议如下:
通讯协议


1.1 概述
仪表使用8051主从式多站通讯方式, 主机主动查询从站, 从站根据不同指令分别响应。

1.2 字节帧共 11 位, 根据地址位(第10位)不同分地址帧和数据帧。

1.2.1 地址帧
         0  X   X   X  X   X   X   X   X   1    1  
  起始位       数据位(8位)      地址位 停止位 

1.2.2 数据帧
      0  X   X   X  X   X   X   X   X   0    1  
   起始位            数据位(8位)      地址位 停止位 

1.3 命令帧格式
   地址 + 指令 + 代码 + 数据0 + 数据1 + 数据2 + 数据3 + 效验 

  其中首字节为地址, 使用地址帧格式(第10位置1)。 其余字节使用数据帧格式。
       
1.3.1    地址   0 - 250     与仪表通讯地址对应

1.3.2    指令   01H,     写指令, 向仪表写入数据
             02H,     读指令, 读仪表数据
03H,   键盘命令, 向仪表写入键盘命令, 等同键盘操作, 详细命令见 1.3.4

1.3.3  数据代码
      00H - 最大称容量      01H - 流量缓冲时间
        02H - 零点死区       03H - 零点跟踪范围
        04H - 高流量设定点     05H  - 低流量设定点
           06H - 计数分度        13H  - 控制比例 
14H - 积分系数 15H - 微分系数
16H - 控制点

   浮点数
       FEH - 累计量, 累计量,设定值,皮带速度
        FFH - 屏幕显示, 返回 64字节字符代码
1.3.4    数据0 - 数据3
  ·.发送读指令(01H)时, 所有字节为零
  ·发送写指令(02H)时, 表示 4 字节浮点数
·发送键盘命令指令(03H)时, 数据0 表示键盘命令, 其余字节置零
   键盘命令表
   00H - "0"    01H - "1"   02H - "2"   03H - "3"  
   04H - "4"    05H - "5"   06H - "6"    07H - "7"
   08H - "8"    09H - "9"   0AH - "."   0BH - "C"
   0CH - "累计"    0DH - "打印"   0EH - "开始" 0FH - "停止"
   10H - "运行"    11H - "菜单"    12H - "上卷"  13H - "下卷"
   14H - "右"       15H - "中"    16H - "左"

1.4    通讯示例
1.4.1  发送键盘命令, "RUN"
   主机-仪表#1          仪表 -- 主机
   01H    ;仪表地址            无
   03H    ;指令代码
   10H    ;按键代码
   00H    ;数据0
   00H
   00H
   00H    ;数据3
   14H    ;冗余效验码

1.4.2  读仪表#1数据
   主机 -- 仪表#1         仪表 -- 主机
01H    ;仪表地址     XXH    ;流量 4 字节
02H    ;读指令代码      ……………………
00H  ;数据0 XXH ;设定点   4 字节
00H   ……………………
00H                XXH    ;累计量 8 字节
00H             …………………. 
00H    ;数据3       XXH ;屏幕显示 64字节
03H   ;冗余效验码       XXH ;冗余效验码
共 81 字节

1.4.3  写仪表#1控制点
   主机 -- 仪表#1        仪表 -- 主机
   01H  ;仪表地址        无
   01H  ;写指令代码    
   16H  ;控制点代码    
   XXH  ;数据0    
   XXH          
   XXH          
   XXH  ;数据3    
   XXH  ;冗余效验码   我需要取出其中的流量和累积量用与显示。 参阅:http://topic.csdn.net/u/20070427/03/16415e91-4833-49f3-96ff-8ec17b5a5160.html 谢谢zdingyun的回复,下面是我根据通讯协议自己写,帮看下有什么问题?

    Dim arr1() As Byte '发送读命令
    
    ReDim arr1(0 To 7)
    
    
        arr1(0) = &H1
        arr1(1) = &H2
arr1(2) = 0
arr1(3) = 0
arr1(4) = 0
arr1(5) = 0
arr1(6) = 0
arr1(7) = &H3
        If (Not MSComm1.PortOpen) Then
            MSComm1.PortOpen = True
        End If
        MSComm1.OutBufferCount = 0
        MSComm1.Output = arr1



Private Sub MSComm1_OnComm()        ’接收数据
    
    Dim buffer As Variant
    Dim dzccur As Integer    ’用来保存流量
    Dim dzcsum As Integer    ’用来保存累积量
    
    Select Case MSComm1.CommEvent
    ' Handle each event or error by placing
    ' code below each case statement
    ' Errors
       Case comEventBreak   ' A Break was received.
       Case comEventFrame   ' Framing Error
       Case comEventOverrun   ' Data Lost.
       Case comEventRxOver   ' Receive buffer overflow.
       Case comEventRxParity   ' Parity Error.
       Case comEventTxFull   ' Transmit buffer full.
       Case comEventDCB   ' Unexpected error retrieving DCB]
    ' Events
       Case comEvCD   ' Change in the CD line.
       Case comEvCTS   ' Change in the CTS line.
       Case comEvDSR   ' Change in the DSR line.
       Case comEvRing   ' Change in the Ring Indicator.
       Case comEvReceive   ' Received RThreshold chars.
            If MSComm1.InBufferCount >= 81 Then
buffer = MSComm1.Input
           
       dzccur = buffer(0)*1000+buffer(1)*100+buffer(2)*10+buffer(3)
    dzcsum = buffer(8)*10000000+buffer(9)*1000000+buffer(10)*100000+buffer(11)*10000+buffer(12)*1000+buffer(13)

*100+buffer(14)*10+buffer(15)
              
                
MSComm1.InBufferCount = 0
                       
            
            End If
            
       Case comEvSend   ' There are SThreshold number of characters in the transmit buffer.
       Case comEvEOF   ' An EOF charater was found in the input stream
       Case Else
       MSComm1.PortOpen = False
    End Select
    
End Sub http://download.csdn.net/detail/veron_04/1262066
补充:VB ,  控件
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,