MSCOMM控件发送16进制数字的有关问题
MSCOMM控件发送16进制数字的问题
各位好:
我公司现在需要对现有门禁系统做二次开发.我从门禁系统开发商得到了通信协议.
1.1 波特率:19200,8,1 无校验
1.2 数据结构:
HEAD+LEN+DID+CTL+DT0+...+DTn+XOR+SUM
HEAD:头码=0x80 PC发往MCU
=0x89 MCU发往PC
LEN: 码长=从DID到SUM的长度
BYTE的个数,看下面的内容
DID:Destination Node Address 目标地址码,MCU=00—FF
多机通信用,为分机号,最多接255个下位机
CTR: 控制/命令码
DT0—DTn:数据
XOR= HEAD^LEN^ DID^CTL^DT0^...^DTn 除SUM外,所有数据异或为0
SUM=00-(HEAD+LEN+DID+CTL+DT0+...+DTn+XOR) 使一组数据和为0
二、设置日期时间:
2.1 设置时间:
80+0A+DID+11+Hour(2)+Min(2)+Sec(2)+XOR+SUM
例:DID=00,时间=15点26分48秒
80+0A+00+11+31+35+32+36+34+38+97+94
回复:89+04+DID+11+SUM+XOR
然后我试着用VB的 MSCOMM 控件写 mscomm1.output= 写例子中的这一长串 16进制的数,但没有返回值.
有没有能指点一二,究竟 mscomm1.output 发送16进制的数应该怎么写?
------解决方案--------------------
Dim intSum As Integer, i As Integer
For i = 1 To n - 2
bData(n - 1) = bData(n - 1) Xor bData(i)
intSum = intSum + bData(i)
Next i
intSum = intSum + bData(n - 1)
bData(n) = CByte(intSum)
bData(n) = 256 - bData(n)
各位好:
我公司现在需要对现有门禁系统做二次开发.我从门禁系统开发商得到了通信协议.
1.1 波特率:19200,8,1 无校验
1.2 数据结构:
HEAD+LEN+DID+CTL+DT0+...+DTn+XOR+SUM
HEAD:头码=0x80 PC发往MCU
=0x89 MCU发往PC
LEN: 码长=从DID到SUM的长度
BYTE的个数,看下面的内容
DID:Destination Node Address 目标地址码,MCU=00—FF
多机通信用,为分机号,最多接255个下位机
CTR: 控制/命令码
DT0—DTn:数据
XOR= HEAD^LEN^ DID^CTL^DT0^...^DTn 除SUM外,所有数据异或为0
SUM=00-(HEAD+LEN+DID+CTL+DT0+...+DTn+XOR) 使一组数据和为0
二、设置日期时间:
2.1 设置时间:
80+0A+DID+11+Hour(2)+Min(2)+Sec(2)+XOR+SUM
例:DID=00,时间=15点26分48秒
80+0A+00+11+31+35+32+36+34+38+97+94
回复:89+04+DID+11+SUM+XOR
然后我试着用VB的 MSCOMM 控件写 mscomm1.output= 写例子中的这一长串 16进制的数,但没有返回值.
有没有能指点一二,究竟 mscomm1.output 发送16进制的数应该怎么写?
------解决方案--------------------
Dim intSum As Integer, i As Integer
For i = 1 To n - 2
bData(n - 1) = bData(n - 1) Xor bData(i)
intSum = intSum + bData(i)
Next i
intSum = intSum + bData(n - 1)
bData(n) = CByte(intSum)
bData(n) = 256 - bData(n)