发布于 2007-04-13 10:03:27
0楼
MSComm1.SThreshold = 0'以二进制方式传输
下面是个简单的例子:
写多个字的命令(本例是写2号站%MW20起始的3个字):
Dim WriteStr() As Byte
k = 6 ,写6个字节
ReDim WriteStr(8 + k)
WriteStr(0) = 2 ,从站号是2
WriteStr(1) = &H10 ,写多个字的命令代码
WriteStr(2) = 0 ,起始地址高字节
WriteStr(3) = 20 ,起始地址低字节
WriteStr(4) = &H0 ,数据长度高字节<字的个数>
WriteStr(5) = k / 2 ,数据长度低字节<字的个数>
WriteStr(6) = k ,数据长度<字节的个数>
WriteStr(7) = &H12,写的第1个字的高字节
WriteStr(8) = &H34,写的第1个字的低字节
WriteStr(9) = &H56,写的第2个字的高字节
WriteStr(10) = &H78,写的第2个字的低字节
WriteStr(11) = &H9A,写的第3个字的高字节
WriteStr(12) = &HBC,写的第3个字的低字节
Call crc16(WriteStr(), 6 + k)'crc计算
WriteStr(9 + (k / 2 - 1) * 2) = HiByte
WriteStr(10 + (k / 2 - 1) * 2) = LoByte
MSComm1.InBufferCount = 0
MSComm1.Output = WriteStr
只要你把实数转换成二进制,通过数组的形式,将几个字节发送出去就可以了。
既然你可以发送整数了,相信改成实数也很容易,至于发送到哪个地址,你应该很清楚的。