⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 怎样用vb实现rs232接口通信.txt

📁 用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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -