繁体   English   中英

逆向工程串行命令

[英]Reverse Engineering Serial Commands

tl; dr;

我需要做的是反向工程串行命令,以便我可以弄清楚如何将人类可读的值或二进制值序列化为原始的串行命令。

IE浏览器:

if
   66 = 'A1' or '0110 1'
   6e = 'A2' or '0110 2'
   e6 = 'B1' or '1110 1'
   ee = 'B2' or '1110 2'
then
   what is A3 or B3, etc.

我正在为一个开源自动化项目开发一个包装器。

有一种发送raw命令的方法,理论上可以将多个命令串在一起。
我已经嗅了一些串行命令,这就是它们的样子。

[init] [HouseCode | DeviceCode] [ready] [HouseCode | FunctionCode]   

04 66 06 62       // A1 ON
04 6e 06 62       // A2 ON 
04 62 06 62       // A3 ON
04 6a 06 62       // A4 ON
04 61 06 62       // A5 ON
04 69 06 62       // A6 ON
04 65 06 62       // A7 ON
04 6d 06 62       // A8 ON
04 67 06 62       // A9 ON
04 6f 06 62       // A10 ON
04 63 06 62       // A11 ON
04 6b 06 62       // A12 ON
04 60 06 62       // A13 ON
04 68 06 62       // A14 ON
04 64 06 62       // A15 ON
04 6c 06 62       // A16 ON

04 e6 06 e2       // B1 ON 
04 ee 06 e2       // B2 ON  
04 e2 06 e2       // B3 ON 
04 ea 06 e2       // B4 ON 
....
04 ec 06 e2       // B16 ON
04 66 06 63       // A1 Off
04 e6 06 e3       // B1 Off

04 66 06 61       // All A lights On (using A1 as the starting point)
04 e6 06 e1       // All B lights On (using B1 as the starting point)
04 66 06 66       // All A lights Off (using A1 as the starting point)
04 e6 06 66       // All B lights Off (using A1 as the starting point)

04 66 06 64 2a    // A1 Dim 20
04 66 06 64 2c    // A1 Dim 21
04 66 06 64 2e    // A1 Dim 22

04 66 06 65 2a    // A1 Bright 20
04 66 06 65 69    // A1 Bright 50

我需要做的是对此进行反向工程,以便我可以以编程方式进行串行调用,或者更好的方法是弄清楚如何将人类可读的值或二进制值序列化为原始串行命令。

是的,我可以嗅探所有命令并分别存储每个值,但是我想知道这是如何完成的。

这是我目前的观察。

  1. 通话分为两部分。
    • 04会启动,并告诉设备要寻找的内容
    • **告诉系统正在控制哪个设备[ HouseCodeDeviceCode ]
    • 返回十六进制55以告诉您已准备就绪
    • 启动06并告诉设备预期的结果
    • **告诉系统房屋代码和命令[ HouseCodeFunctionCode ]
      • **是可选发送的,并且它是介于0和100之间的值,以引用暗淡级别
    • 十六进制55再次发回,告诉您它已经准备好
  2. 第二对使用第一个字符作为字母代码( HouseCode = A,B,C等),第二个字符是地址( DeviceCode = 1、2、3等)
    • 有了这些信息,我个人的猜测是...
      • 6必须直接对应于A
      • e必须直接对应于B
  3. 第四对以与第二对相同的HouseCode
  4. 第四对以FunctionCode结尾
    • 1 =全部亮起
    • 2 =开
    • 3 =关
    • 4 =昏暗
    • 5 =亮
    • 6 =全部关闭
    • 等等..
  5. 第五对仅在Bright / Dim命令上显示,代表0到100之间的数字

最后,在文档中,每个命令都与Binary数据相关,因此将A1转换为hex可能不是问题,而是将binaryhex

HouseCode       DeviceCode      Binary Value
    A               1               0110
    B               2               1110
    C               3               0010
    D               4               1010
    E               5               0001
    F               6               1001
    G               7               0101
    H               8               1101
    I               9               0111
    J               10              1111
    K               11              0011
    L               12              1011
    M               13              0000
    N               14              1000
    O               15              0100
    P               16              1100

FunctionCode                    Binary Value
All Units Off                   0000
All Lights On                   0001
On                              0010
Off                             0011
Dim                             0100
Bright                          0101
All Lights Off                  0110
Extended Code                   0111
Hail Request                    1000
Hail Acknowledge                1001
Pre-set Dim (1)                 1010
Pre-set Dim (2)                 1011
Extended Data Transfer          1100
Status On                       1101    
Status Off                      1110
Status Request                  1111

有谁知道我将如何实现这一目标?

Heyu是一个出色的开源应用程序,可用于X10设备。 他们已经基于X10的原始文档发布了非常全面的X10协议规范

这应该使您的猜测工作变得毫无用处。 重要的是房屋代码和单位代码是静态映射,无法计算。 协议规范准确规定了比特流的形成方式。 例如

PC      Interface   Description
0x04,0x66           Address A1
        0x6a        Checksum ((0x04 + 0x66)&0xff)
0x00                OK for transmission.
        0x55        Interface ready.

0x86,0x64           Function: A Dim 16/22*100%
        0xea        Checksum ((0x86 + 0x64)&0xff)
0x00                OK for transmission.
        0x55        Interface ready.

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM