用VB实现RS232接口通信
源代码在线查看: 怎样用vb实现rs232接口通信.txt
怎样用VB实现RS232接口通信
发送的命令格式为
字节位置 含义 数据 说明
1,2 帧头 0xAA 0xAA
3 数据长度 0x04 除帧头外数据长度
4 传感器地址0X02 232输出方式地址为2
5 命令 0xxx 命令罗盘输出数据帧
6 效验字 前面全部数据的异或结果
求怎样用MSComm控件实现命令。
不甚感谢!
问题补充:我的程序是这样的:
Private Sub Command9_Click()
Dim b(4) As Byte
b(0) = &HAA
b(1) = &HAA
b(2) = &H4
b(3) = &H2
b(4) = &H1
MSComm1.Output = b()
buf = MSComm1.Input
Text1.Text = buf
End Sub
我用F8调试,运行到MSComm1.output=b()这一步,显示的是
MSComm1.output=,buf值是空的
是什么原因啊?
最佳答案
其实很简单,声明一个变量数组其类型为Byte。然后将你要的数据逐一赋值到这个数组,将MSComm控件串行模式属性:InputMode 设为 二进制模式,也就是值为1的那个,然后将这个变量数组输出到 OutPut 就行了。如:
dim DA(4) as Byte
DA(0)=&HAA
DA(1)=&HAA
DA(2)=&H04
DA(3)=&H02
DA(4)=.....
MSComm1.OutPut=DA()
*注意在VB中十六进制要用 &H 开头表示
发接为二进制发送,自然接收也是一样的,所以接收的也应该是一个Byte类型的不定变量数组,接收后可用 Ubound 语句来获取字节数,接收的数据以 变量(下标) 形式取得,不能将数组直接赋值于一个变量或控件的字符属性中。如:
Dim AD() As Byte
Dim Ik As Long
AD=MSComm.Input
For Ik=0 To Ubound(AD)
Text1.text=text1.text & Chr(AD(Ik))
Next