回 帖 发 新 帖 刷新版面

主题:紧急求教,帮忙补写

由于刚学VB串口通信,又要急用,烦请高手将下面的程序补完,再补写一些数据发送后确认的部分(显示方式就是标签显示已发送吧),程序要实现的目的可参见最后的附录

Dim linshi As Long
Dim gaowei As Integer
Dim diwei As Integer
Private Sub Command1_Click()
'打开端口
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
'Text1.Text输入要发送的数据,下面将该数据分成高字节和低字节部分
linshi = Val(Text1.Text)
linshi = linshi \ 2
linshi = linshi \ 2
linshi = linshi \ 2
linshi = linshi \ 2
linshi = linshi \ 2
linshi = linshi \ 2
linshi = linshi \ 2
linshi = linshi \ 2
gaowei = linshi
linshi = linshi * 2
linshi = linshi * 2
linshi = linshi * 2
linshi = linshi * 2
linshi = linshi * 2
linshi = linshi * 2
linshi = linshi * 2
linshi = linshi * 2
diwei = Val(Text1.Text) - linshi
'qufan的结果是高字节和低字节的和的补码(第九位丢掉)
src = gaowei + diwei
qufan = 256 - src
'MSComm1.Output要发送的是依次连续的 固定值OX5A,高字节,低字节,补码,望达人相助,将下面的写完,不甚感激
MSComm1.Output =
End Sub


Private Sub Form_Load()
MSComm1.CommPort = 1
MSComm1.Settings = "9600,n,8,1"
End Sub

附录:10-12GHz频率合成器控制方法

1.    通信协议
串口属性:RS232串口,波特率9600bps,1个起始位,8个数据位,1个停止位,无校验。

2.    数据帧格式定义
一个数据帧由高到低排列依次为:帧标识(1个字节)+数据(2个字节)+校验(1个字节)。字节的发送顺序为:先发高字节,再发低字节。

帧标识      数据高8位    数据低8位      校验和



    高字节    低字节    

帧标识:
    固定数值0X5A.

数据:  
范围是 (0-10,10000~12000) 衰减控制的数据是0-10,频率控制的范围是10000-12000   (详见码表)
             10000(DEC)=0x2710(HEX) 高8位是0X27,低8位是0X10.
校验和:  
是两个数据位的和再取其补码(反码加一)

例:上面表格的数据是0X27 和0X10取和为0Xc9
0X27+0X10=0X37(十六进制) 
0X37的反码为0Xc8,加1为0Xc9 所以校验和为0Xc9.
3.    返回值
        如果频率合成器收到的数据正确,那么返回一个字节(0XFF),否则返回一个字节(0X00)
引脚    电特性    引脚    电特性
1    空    6    空
2    RXD    7    空
3    TXD    8    空
4    空    9    空
5    地        
 
4.     RS232  (9芯接口定义)




望达人相助,不甚感激,我的邮箱是jzz514@163.com

回复列表 (共2个回复)

沙发

linshi = linshi \ 2
linshi = linshi \ 2
linshi = linshi \ 2
linshi = linshi \ 2
linshi = linshi \ 2
linshi = linshi \ 2
linshi = linshi \ 2
linshi = linshi \ 2
gaowei = linshi
linshi = linshi * 2
linshi = linshi * 2
linshi = linshi * 2
linshi = linshi * 2
linshi = linshi * 2
linshi = linshi * 2
linshi = linshi * 2
linshi = linshi * 2

这些是什么呀?

板凳

高字节和低字节不用这样麻烦。
text1里如果不能保证时整形数据的话,首先转换,然后求,你要发送的几个数值。

dim 数值 as intege
dim 低字节 as byte
dim 高字节 as byte
dim 补码 as byte
数值=text1
低字节=数值 mod 256
高字节=数值 \ 256
补码=(低字节+高字节) mod 256
补码=256-补码

MSComm1.Output =&h5A         '我估计你这里应该是16进制数
MSComm1.Output =高字节
MSComm1.Output =低字节
MSComm1.Output =补码

至于你其它的设置,好像都不是变成的问题了。

我来回复

您尚未登录,请登录后再回复。点此登录或注册