fix: 同步协议文档 V1.03 — 0x8A 响应格式 + LEN 计算修正

协议变更(V1.02→V1.03):
- 0x8A 响应: Ret(0x10/0x11) + Amount + Amount*(SensIn+SensOut)
- 新增灵敏度响应例程 (7F 80 13 8A 10 04 ...)
- 波特率确认 192000

代码修正:
- lup_build_sensitivity_read:  LEN=3 (was 4)
- lup_build_sensitivity_write: LEN=3+Amount*4 (was 2+Amount*2)
- lup_parse_sensitivity_resp: 解析 Ret 字节 + SensIn/SensOut 双值
- lup_build_set_param:        LEN=3+5*Amount (was 2+5*Amount)
- tcp_json_srv:               JSON 输出含 sens_in/sens_out 字段
This commit is contained in:
wangfq
2026-07-02 11:55:29 +08:00
parent eb7419b3e8
commit 615b369690
3 changed files with 66 additions and 42 deletions

View File

@@ -992,16 +992,20 @@ static void json_check_pending(void) {
memset(&sens, 0, sizeof(sens));
int ret = lup_parse_sensitivity_resp(g_lup_cmd.resp_buf, g_lup_cmd.resp_len, &sens);
if (ret == 0) {
char data_json[512];
char data_json[1024];
char *p = data_json;
int rem = sizeof(data_json);
int w = snprintf(p, rem, "{\"amount\":%d,\"channels\":[", sens.amount);
int w = snprintf(p, rem,
"{\"ret\":\"%s\",\"amount\":%d,\"channels\":[",
(sens.rw == 0x10) ? "read" : (sens.rw == 0x11) ? "write" : "?",
sens.amount);
p += w; rem -= w;
uint8_t i;
for (i = 0; i < sens.amount; i++) {
w = snprintf(p, rem,
"%s{\"ch\":%d,\"sens_value\":%d}",
(i > 0) ? "," : "", i + 1, sens.sens_in[i]);
"%s{\"ch\":%d,\"sens_in\":%d,\"sens_out\":%d}",
(i > 0) ? "," : "", i + 1,
sens.sens_in[i], sens.sens_out[i]);
p += w; rem -= w;
}
snprintf(p, rem, "]}");
@@ -1013,21 +1017,24 @@ static void json_check_pending(void) {
"Failed to parse sensitivity");
}
} else if (strcmp(g_json_pending.cmd, "loop_sens_write") == 0) {
// 0x8A Write response returns sensitivity list
LUP_Sensitivity sens;
memset(&sens, 0, sizeof(sens));
int ret = lup_parse_sensitivity_resp(g_lup_cmd.resp_buf, g_lup_cmd.resp_len, &sens);
if (ret == 0) {
char data_json[512];
char data_json[1024];
char *p = data_json;
int rem = sizeof(data_json);
int w = snprintf(p, rem, "{\"amount\":%d,\"channels\":[", sens.amount);
int w = snprintf(p, rem,
"{\"ret\":\"%s\",\"amount\":%d,\"channels\":[",
(sens.rw == 0x10) ? "read" : (sens.rw == 0x11) ? "write" : "?",
sens.amount);
p += w; rem -= w;
uint8_t i;
for (i = 0; i < sens.amount; i++) {
w = snprintf(p, rem,
"%s{\"ch\":%d,\"sens_value\":%d}",
(i > 0) ? "," : "", i + 1, sens.sens_in[i]);
"%s{\"ch\":%d,\"sens_in\":%d,\"sens_out\":%d}",
(i > 0) ? "," : "", i + 1,
sens.sens_in[i], sens.sens_out[i]);
p += w; rem -= w;
}
snprintf(p, rem, "]}");