Python 的 Checksum 为什么结果是一长串数字而不是如下效果

2017-03-01 22:33:26 +08:00
 qile1

在写一个检验仪器的串口指令发送,需要对发送数据 Checksum ,仪器发给电脑的接收数据,仪器已经 Checksum 了。如下原始数据

5C|1|I|In Check Range|I                                       
FD (上一行的 Checksum 值)                                             
7C|1|I|In Check Range|I                                       
FF (上一行的 Checksum 值)                                             
0R|4|^^^HBs^^^1^RLU|8982|||H|N|R||||20161229094052|IRL55791525
E1 (上一行的 Checksum 值)                                             
1C|1|I|In Check Range|I                                       
F9 (上一行的 Checksum 值)                                             
2L|1|N                                                        
05 (上一行的 Checksum 值) 

使用

0x04+0x00+0x38+0x00+0x01=0x3d= - 0x3C;  // - 0x3d=3C; 

也无法算对,有明白的没法给指点下。 另外对于串口的应答方式有什么灵活办法处理吗? 我现在是 n=serial.inWaiting(),如果 n=1 ,判断是 ACK 还是 ENQ 等,并做相应的应答写死在程序里面。但是如果一段数据结尾有 ENQ 我该怎么处理,每次收到不为空数据 data[-1:]判断并进行应答?

2245 次点击
所在节点    Python
1 条回复
qile1
2017-03-02 08:12:03 +08:00
0x04+0x00+0x38+0x00+0x01
我算出结果是 61

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/344185

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX