From 5e0732fd06cd223d77f4c19274b2cfb9083daf46 Mon Sep 17 00:00:00 2001 From: zhangsheng Date: Fri, 13 Mar 2026 10:33:51 +0800 Subject: [PATCH] fix bugs --- jsonparse/web_cmd_parse4.cpp | 2 ++ uart/uart.cpp | 15 ++++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/jsonparse/web_cmd_parse4.cpp b/jsonparse/web_cmd_parse4.cpp index 3c352f8..a48e904 100644 --- a/jsonparse/web_cmd_parse4.cpp +++ b/jsonparse/web_cmd_parse4.cpp @@ -212,6 +212,7 @@ std::string JsonData::JsonCmd_Cgi_110(Param_110 ¶m){ jsonVal["message"] = "设置报警灯失败"; return show_value_.write(jsonVal); } + mssleep(10000); unsigned char command[11] = {0x00}; int data = (param.flashTime << 16) | (param.alarmMode & 0xFFFF); command[0] = 0xA5; @@ -240,5 +241,6 @@ std::string JsonData::JsonCmd_Cgi_110(Param_110 ¶m){ jsonVal["message"] = "设置报警灯失败"; } uart_inst::instance().alarmFlag = false; + printf("alarmFlag = %d\n",uart_inst::instance().alarmFlag); return show_value_.write(jsonVal); } \ No newline at end of file diff --git a/uart/uart.cpp b/uart/uart.cpp index 49a4536..f69b155 100644 --- a/uart/uart.cpp +++ b/uart/uart.cpp @@ -38,7 +38,13 @@ int Uart::UartRecv(int fd, char srcshow, char *buffer) { int timeoutflag = 0; char head[] = {0xAA, 0x55, 0xAA}; char szbuffer[BUF_LENGTH] = {0x00}; - while (1 && !bUpdate && !alarmFlag) { + while (1) { + if (bUpdate || alarmFlag) + { + mssleep(10000); + continue; + } + if (now_task == WAVE_CMD) { memset(buff, 0, sizeof(buff)); ret = read_data(fd, buff, BUF_LENGTH, 10); @@ -288,6 +294,11 @@ int Uart::ReadFromAlarm(){ char head[] = {0xA5, 0x5A, 0xA5}; if (len > 0) { + if(alarmFlag){ + printf( "\nRead From Alarm Start: %s\n",GetCurrentTime().c_str()); + for (int i = 0; i < len; i++) printf( "%02X ", buffer[i] & 0xFF); + printf( "\nRead From Alarm End.\n"); + } for (int i = 0; i < len; i++) { if (buffer[i] == head[0]) { char buf[12] = {0x00}; @@ -299,6 +310,8 @@ int Uart::ReadFromAlarm(){ return 0 ; }else if(buffer[i + 5] == 0x03 && buffer[i + 6] == 0xFF){ return 2 ; + }else if(buffer[i + 5] == 0x03 && buffer[i + 6] != 0xFF){ + return 1 ; }else if(buffer[i + 5] == 0x02 && buffer[i + 6] == 0x00){ return 1 ; }