簡體   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