From ae32d60119b92d4414cfb5208faf94824e7b68e9 Mon Sep 17 00:00:00 2001 From: zzh <838331105@qq.com> Date: Fri, 5 Dec 2025 09:38:11 +0800 Subject: [PATCH] =?UTF-8?q?=20=E4=BF=AE=E5=A4=8D=E4=B8=B2=E5=8F=A3?= =?UTF-8?q?=E7=BC=93=E5=86=B2=E5=8C=BA=E6=95=B0=E6=8D=AE=E9=94=99=E4=B9=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/main.c b/main.c index a8c4c82..78b7428 100644 --- a/main.c +++ b/main.c @@ -175,7 +175,7 @@ void report_lightbar_login(uint32_t tagCode) { LOG_I("Lightbar login report - payload: %s\n", payload); // 发送MQTT消息 - //mqtt_utils_publish(&mqtt_config, topic, 0, payload, strlen(payload)); + mqtt_utils_publish(&mqtt_config, topic, 0, payload, strlen(payload)); } /*================================================================================*/ @@ -217,7 +217,7 @@ void report_lightbar_logout(uint32_t tagCode) { LOG_I("Lightbar logout report - payload: %s\n", payload); // 发送MQTT消息 - //mqtt_utils_publish(&mqtt_config, topic, 0, payload, strlen(payload)); + mqtt_utils_publish(&mqtt_config, topic, 0, payload, strlen(payload)); } /*================================================================================*/ @@ -1344,6 +1344,11 @@ void *thread_uart_recv_ack(void *arg){ uint16_t parm_ack; int ret=0; while(1){ + // 只有在发送命令后才等待ACK,避免读取残留数据 + if(isSendComEnd){ + usleep(100*1000); + continue; + } ret=uart_data_receive_ack(&uartSend,&parm_ack); if(ret>0){ LOG_I("ack:%x\n",parm_ack); @@ -1947,7 +1952,10 @@ void *thread_mqtt_recv(void *arg){ get_int_from_json_string_by_key(msg_colors,"B",&b_enable); // 根据RGB组合设置颜色 - if(r_enable && !g_enable && !b_enable){ + if(!r_enable && !g_enable && !b_enable){ + changecolor = 0; // 不亮 + break; + }else if(r_enable && !g_enable && !b_enable){ changecolor = 4; // 红色 break; }else if(!r_enable && g_enable && !b_enable){ @@ -2008,6 +2016,9 @@ void *thread_mqtt_recv(void *arg){ // 正常处理 } + // 清空串口缓冲区,避免残留数据干扰 + tcflush(uartSend.uart_fd, TCIOFLUSH); + isSendComEnd = false; isLightOnByGroup = false; isLightOnById = false;