尝试找出串行通信校验和

问题描述 投票:0回答:1

我希望能够使用 ESP32 与我的一台设备(Franke Pura 咖啡机)进行通信并进行设置。通过 RS232 通讯工作正常。当计算机与原始软件连接时,我能够嗅探协议。但要设置它,我必须生成一个校验和。一些关于沟通的例子:

0x00 0x02 0x01 0x03 0x5F 0x14 0x00 
0x00 0x02 0x07 0x03 0xE8 0x34 0x00 
0x00 0x02 0x03 0x03 0xA4 0x6F 0x00 
0x00 0x02 0x05 0x03 0x13 0x4F 0x00 
0x00 0x02 0x2F 0x03 0xDD 0xAD 0x00 
0x00 0x02 0x2B 0x03 0x91 0xF6 0x00 
0x00 0x02 0x3D 0x03 0xAD 0x17 0x00 
0x00 0x02 0x39 0x03 0xE1 0x4C 0x00 
0x00 0x02 0x41 0x03 0xBF 0xE7 0x00 
0x00 0x02 0x55 0x03 0x78 0x7D 0x00 
0x00 0x02 0x51 0x03 0x34 0x26 0x00 

我猜第一个和最后一个字节是开始和结束信号并跳过那些(?)这里有一个 3 字节命令和一个 2 字节校验和。

我尝试了一些常见的校验和/crc,但没有成功。

有任何校验和专家可以提供一些帮助吗?

checksum crc
1个回答
0
投票

帧零之前的最后两个字节是 16 位 CRC(不是校验和)。有效的定义是:

width=16  poly=0xbaad  init=0xa130  refin=false  refout=false  xorout=0x0000  check=0x03bd  residue=0x0000  name=(none)

我说“a”定义是因为

init
xorout
的多种组合都会给出相同的CRC值,因为所有消息的长度都相同。如果您只有一条不同长度的消息,则可以分别解决
init
xorout

© www.soinside.com 2019 - 2024. All rights reserved.