打印

求证:PELCO-P校验码是怎样算出来的?凝问

[复制链接]
1785|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gmgmgm|  楼主 | 2013-2-28 15:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 gmgmgm 于 2013-2-28 15:54 编辑

PELCO-P协议一般采用RS-485传输,波特率为4800,1位起始位和停止位,8位数据位,无校验。其格式如下:
Byte        Value        Function
1        $A0        起始码
2        $00 to $1F        地址码
3        Data byte 1        数据位1
4        Data byte 2         数据位2
5        Data byte 3         数据位3
6        Data byte 4         数据位4
7        $AF         停止码
8        $00-$FF        校验码
地址码是设备的逻辑地址,可由接收设备上的DIP开关来设定。
    数据位1到4的意义如下:
  
  
  
Bit number
  
  
7
  
  
6
  
  
5
  
  
4
  
  
3
  
  
2
  
  
1
  
  
0
  
  
数据位1
  
  
0
  
  
摄像机打开
  
  
自动扫描
  
  
摄像机打开/关闭
  
  
光圈关闭
  
  
光圈打开
  
  
焦距拉近
  
  
焦距拉远
  
  
数据位2
  
  
0
  
  
视角变宽
  
  
视角变窄
  
  
  
  
  
  
  
  
  
  
0
  
  
数据位3
  
  
  
  
平移速度 $00(停止)到 $3F(高速)以及$40(最高速)
  
  
数据位4
  
  
  
  
上下移动速度$00(停止)到 $3F(最高速)
  
   停止码是固定值 $AF 。
    校验码是 Byte2 到 Byte6 这 5 个数的异或值(XOR)。
    地址码是从 0编起的,所以地址码$00表示第一台设备。
   PELCO-D和PELCO-P协议另有一些特殊命令,可对设备进行一些高级控制,


在百度上看了很多相关此协议的文档,按上面的协议计算校验码,结果让我失望,不知道是不是我的算法有问题
A0 01 02 00 00 00 AF 0C   

我的程序无法算出结果为0C,算的结果是03
01^02^00^00^00=0X03


我终于发现了,别人的键盘0C值是这样计算出来的,A0^01^02^00^00^00^AF=0C这样不是跟协议不一致吗?



相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

135

主题

766

帖子

2

粉丝