update crc16

This commit is contained in:
CSSC-WORK\murmur 2024-12-11 16:01:45 +08:00
parent d391743361
commit b67eee24e7

View File

@ -131,6 +131,12 @@ void InitDeviceStatus() {
void writeCMD(uint8_t *txBuf, uint16_t *txLen) { void writeCMD(uint8_t *txBuf, uint16_t *txLen) {
} }
uint8_t SendToHost(uint8_t *txBuf, uint16_t txLen) {
// 发送数据到主机
// 具体实现
return 0;
}
@ -177,8 +183,9 @@ uint16_t ReadPump1Reg(uint8_t index, uint16_t reg) {
FillBigEndian16(&data[4], 2); FillBigEndian16(&data[4], 2);
uint16_t crc = CalculateCRC16(data, 6); uint16_t crc = CalculateCRC16(data, 6);
// 大端序填充 // 小端序填充
FillBigEndian16(&data[6], crc); memcpy(&data[6], &crc, 2);
writeCMD(data, 8); writeCMD(data, 8);
} }
@ -191,8 +198,8 @@ uint8_t WritePump1Reg(uint8_t index, uint16_t reg, uint16_t value) {
FillBigEndian16(&data[2], reg); FillBigEndian16(&data[2], reg);
FillBigEndian16(&data[4], value); FillBigEndian16(&data[4], value);
uint16_t crc = CalculateCRC16(data, 6); uint16_t crc = CalculateCRC16(data, 6);
// 端序填充 // 端序填充
FillBigEndian16(&data[6], crc); memcpy(&data[6], &crc, 2);
writeCMD(data, 8); writeCMD(data, 8);
} }
@ -207,8 +214,8 @@ uint8_t WritePump2Reg(uint8_t index, uint16_t reg, uint32_t value) {
data[6] = 8; data[6] = 8;
FillBigEndian32(&data[7], value); FillBigEndian32(&data[7], value);
uint16_t crc = CalculateCRC16(data, 11); uint16_t crc = CalculateCRC16(data, 11);
// 端序填充 // 端序填充
FillBigEndian16(&data[11], crc); memcpy(&data[11], &crc, 2);
writeCMD(data, 13); writeCMD(data, 13);
} }
@ -384,10 +391,12 @@ static uint8_t HandleInit(uint8_t *rxBuf, uint8_t *txBuf, uint16_t *txLen) {
// 状态查询处理 // 状态查询处理
static uint8_t HandleStatusQuery(uint8_t *txBuf) { static uint8_t HandleStatusQuery(void) {
// 填充并返回数据 // 填充并返回数据
uint8_t txBuf[sizeof(DeviceStatus)] = {0};
memcpy(txBuf, &deviceStatus, sizeof(DeviceStatus)); memcpy(txBuf, &deviceStatus, sizeof(DeviceStatus));
return sizeof(DeviceStatus); SendToHost(txBuf, sizeof(txBuf));
return 0;
} }
// 三通阀控制处理 // 三通阀控制处理
@ -524,7 +533,7 @@ CmdFrameError_t ProcessHostCommand(uint8_t *rxBuf, uint16_t rxLen) {
switch(cmdCode) { switch(cmdCode) {
case CMD_STATUS_QUERY: case CMD_STATUS_QUERY:
error = HandleStatusQuery(data, dataLen); error = HandleStatusQuery();
break; break;
case CMD_VALVE_CTRL: case CMD_VALVE_CTRL:
error = HandleValveControl(data, dataLen); error = HandleValveControl(data, dataLen);