diff --git a/V1.5/STM32F103_App1/HardWare/FEED_SCALE/feed_scale.c b/V1.5/STM32F103_App1/HardWare/FEED_SCALE/feed_scale.c index 8fd2725..eea3346 100644 --- a/V1.5/STM32F103_App1/HardWare/FEED_SCALE/feed_scale.c +++ b/V1.5/STM32F103_App1/HardWare/FEED_SCALE/feed_scale.c @@ -78,6 +78,12 @@ static void feed_scale_dump_frame(const uint8_t *buf, uint16_t len) /* 从 485 应答中解析重量,应答 9 字节: 01 03 04 41 97 30 33 0B F6 */ static int feed_scale_parse_weight(const uint8_t *buf, uint16_t len, uint16_t *weight_100g) { + /* 485 回声(自己发出去的查询被 RX 听到):静默丢弃,不打日志不报错 */ + if (len == sizeof(RS485_WEIGHT_CMD) && + memcmp(buf, RS485_WEIGHT_CMD, sizeof(RS485_WEIGHT_CMD)) == 0) { + return -7; + } + feed_scale_dump_frame(buf, len); /* 定位应答帧头(站号+03+字节数04):485 回声或前导垃圾可能混在帧头前面 */ @@ -143,8 +149,7 @@ static void feed_scale_send_query(void) { USART2_ForceRxReset(); /* 清缓冲+重挂接收,防止前次残留状态吞掉本次应答 */ HAL_UART_Transmit(&huart2, (uint8_t *)RS485_WEIGHT_CMD, sizeof(RS485_WEIGHT_CMD), 100); - HAL_Delay(5); /* 等 485 回声(自己 TX 被 RX 听到)收尾 */ - USART2_ForceRxReset(); /* 清掉回声,应答帧从干净状态开始 */ + /* 不再清回声:回声与应答的合并帧由解析处的帧头搜索处理 */ } /* 读取 485 返回帧 */ @@ -386,7 +391,9 @@ void feedScaleProcess(void) len = feed_scale_read_frame(rx_buf, sizeof(rx_buf)); if (len > 0) { int prc = feed_scale_parse_weight(rx_buf, len, &cur_weight); - s_last_err = (prc == 0) ? 0 : (prc == -1 ? 2 : (prc == -2 ? 3 : (prc == -4 ? 4 : 5))); + if (prc != -7) { /* -7=回声帧:不影响状态显示 */ + s_last_err = (prc == 0) ? 0 : (prc == -1 ? 2 : (prc == -2 ? 3 : (prc == -4 ? 4 : (prc == -6 ? 6 : 5)))); + } if (prc == 0) s_last_ok_tick = HAL_GetTick(); if (prc == 0) { last_raw_weight = cur_weight; /* 保存原始毛重 */ diff --git a/V1.5/鐗堟湰璇存槑.md b/V1.5/鐗堟湰璇存槑.md index 57eded1..de95070 100644 --- a/V1.5/鐗堟湰璇存槑.md +++ b/V1.5/鐗堟湰璇存槑.md @@ -184,3 +184,5 @@ 鐜版瘡娆℃煡璇㈠墠 USART2_ForceRxReset() 寮哄埗澶嶄綅鎺ユ敹锛堟竻閿欒/缂撳啿+閲嶆寕涓柇锛夛紝棣栧寘涓嶅啀涓 - 淇 485 鍥炲0鍚冨簲绛斿抚澶达細鏌ヨ TX 鍚庣瓑 5ms 娓呭洖澹扮紦鍐诧紱瑙f瀽鏃舵敼涓哄湪甯у唴瀹氫綅 01 03 04 甯уご锛 鎶楀洖澹/鍓嶅鍨冨溇锛堝揩閫熷簲绛斾笉鍐嶈鍚炲墠鍑犱釜瀛楄妭锛 +- 淇 485 淇鏂规锛氬幓鎺 TX 鍚庢竻缂撳啿锛堜細鍚冩帀蹇熷洖澶嶇殑鍓嶅嚑涓瓧鑺傦級锛 + 鏀逛负鍥炲0甯ф寜鍐呭璇嗗埆闈欓粯涓㈠純锛堜笌鏌ヨ鍛戒护瀹屽叏涓鑷寸殑甯э級锛屽悎骞跺抚闈 01 03 04 甯уご鎼滅储瑙f瀽