协议要求
发送数据格式
数据头 有效数据长度  厂家ID  类别ID  数据1  数据2  数据3 数据4  数据5  错误代码    校验    数据尾OX0206    1byte     01     02    2byte  2byte 2byte 2byte 2byte  1byte      2byte   OX03数据均为16进制整数。
以下是我的程序
Option Explicit
Dim a(5)     As Byte
Dim varbuffer As String
Dim i     As IntegerPrivate Sub Command1_Click() varbuffer = "0206100102"
 MSComm1.Output = varbuffer请问如何将数组a的数据输出?
End SubPrivate Sub Command2_Click()
MSComm1.PortOpen = False
 Unload Me
End SubPrivate Sub Form_Load()
 MSComm1.Settings = "9600,n,8,1"
 MSComm1.CommPort = 1
 MSComm1.InputLen = 0 ' 设置或返回一次从接收缓冲区中读取字节数,0表示一次读取所有数据
 MSComm1.InBufferSize = 512
 MSComm1.InBufferCount = 0
 MSComm1.OutBufferSize = 512
 MSComm1.OutBufferCount = 0
 MSComm1.RThreshold = 1 ' 每个字符到接收缓冲区都触发接收事件
 MSComm1.SThreshold = 1
 MSComm1.PortOpen = True
 
  a(0) = gettagbyte("so2") 'gettagbyte为wincc中内部函数,用来读取数值
  a(1) = gettagbyte("flow")
  a(2) = gettagbyte("nox")
  a(3) = gettagbyte("dust")
  a(4) = gettagbyet("t")
  
  For i = 0 To 4
  a(5) = a(4) Xor a(i)
  Next i
  
  
End Sub

解决方案 »

  1.   

    用 Byte 数组发送:Dim a(18) As Bytea(0) = 2
    a(1) = 6
    a(3) = 1
    a(4) = 2
    a(18) = 3'在 a(2) 中填充长度, a(5) 至 a(14) 中填充数据,a(15)中放错误代码,a(16) a(17) 中放校验码。
    MSComm1.Output = a
      

  2.   

    请问楼上的大哥,我如何把一个数据放在2个字节里呢?
    我的数据是一个变量,我要将这个数据放在a(5),a(6)里占用2个字节,或者放在a(5),a(6),a(7)里占用3个字节,该怎么实现?
      

  3.   


    Dim intData As Integer, lngData As Longa(5) = intData \256
    a(6) = intData And &HFFora(5) = (lngData \ 65536) And &HFF
    a(6) = (lngData \ 256) And &HFF
    a(7) = intData And &HFF
      

  4.   

    呵呵, 高手就是高手,多谢大哥,
    因需要,数据类型我全定义成了Integer
    然后mscomm1.output 就无法发送了