2015-12-09 82 views
0

我想破譯在幾個HVAC控制器之間用於RS485通信的協議。正如您在下面的列表中看到的,我能夠識別單個消息。使用哪種算法計算校驗和?

00020003400012A9 
00030103400012A7 

00010303400012A7 
2001030A400012010104FFFFFFFF7E 

00010303400016A3 
200103094000160C0C010400441C 

000103074100000024A003ED 
2001030A4100000024A0030895BA73 

0001032A90020030000200310700013000020131070002300002023107060330000203310700043000FF053000FF1F 
2001030290004A 

00020003400012A9 
00030103400012A7 

00010302D10227 
20010312D140200100002101000022010000230100002F 

00020003400012A9 
00030103400012A7 

00010302D20226 
20010302D240C8 

00020003400012A9 
00030103400012A7 

00010302D10227 
20010312D140200100002101000022010000230100002F 

00020003400012A9 
00030103400012A7 

00010302D20226 
20010302D240C8 

00020003400012A9 
00030103400012A7 

00010302D20226 
20010302D240C8 

00020003400012A9 
00030103400012A7 

00010302D20226 
20010302D240C8 

00020003400012A9 
00030103400012A7 

00010302D20226 
20010302D240C8 

每行包含一個十六進制格式的完整消息。我認爲最後一個字節(最後兩個十六進制字符)是以前數據的校驗和,但這只是我的猜測。

使用哪種算法來計算校驗和?

回答

0

我現在發現了這個算法。它只是總結數據和建立某種2s補充。這裏是一個例子:

data: 0x20010312D14020010000210100002201000023010000 

binary sum: 1 1101 0001 (0x1D1) 
last byte: 1101 1110 (0xD1) 
invert:  0010 1110 (0x2E) 
add 1:  0010 1111 (0x2F) 
use only last byte of calculated CS 

CS: 0x2F