From 4a13529748c983ff0d5627a28365ad7737141016 Mon Sep 17 00:00:00 2001 From: zhyinch <zhyinch@gmail.com> Date: 星期五, 18 二月 2022 09:31:49 +0800 Subject: [PATCH] V1.62 --- 源码/核心板/Src/application/dw_app.c | 33 ++++++++++++++++++++++++++++----- 1 files changed, 28 insertions(+), 5 deletions(-) diff --git "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" index bd9931b..741a0fe 100644 --- "a/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" +++ "b/\346\272\220\347\240\201/\346\240\270\345\277\203\346\235\277/Src/application/dw_app.c" @@ -739,7 +739,7 @@ int8_t correction_time,new_tagid=0; extern uint8_t sync_seq; u16 taglist_num=0,taglist_pos; -u16 tagid_list[TAG_NUM_IN_SYS]; +u16 tagid_list[TAG_NUM_IN_SYS],tagstate_list[TAG_NUM_IN_SYS];; u8 tagofflinetime[TAG_NUM_IN_SYS]; int32_t tagdist_list[TAG_NUM_IN_SYS]; void TagListUpdate(void) @@ -982,7 +982,7 @@ if(hex_dist>-100000&&hex_dist<2000000) { if(abs(hex_dist-his_dist[taglist_pos])<dist_threshold||misdist_num[taglist_pos]>3) - { + {u8 i=0; g_Resttimer=0; IWDG_Feed(); @@ -1018,15 +1018,38 @@ usart_send[16] = rx_power; checksum = Checksum_u16(&usart_send[2],17); memcpy(&usart_send[19],&checksum,2); + if(g_com_map[MODBUS_MODE]!=1) UART_PushFrame(usart_send,21); #else memcpy(&usart_send_anc[4+6*anc_report_num],&tag_id_recv,2); memcpy(&usart_send_anc[6+6*anc_report_num],&tagdist_list[taglist_pos],4); anc_report_num++; #endif - Modbus_HoldReg[taglist_pos*4] = tag_id_recv; - Modbus_HoldReg[taglist_pos*4+1] = button<<8|battary; - memcpy(&Modbus_HoldReg[taglist_pos*4+2],&tagdist_list[taglist_pos],4); + for(i=0;i<taglist_num-1;i++) + { + if( tagdist_list[i]>tagdist_list[i+1]&&tagdist_list[i+1]!=0) + { + int32_t tempdist; + u16 tempid,tempstate; + tempdist = tagdist_list[i]; + tempid = tagid_list[i]; + tempstate = tagstate_list[i]; + + tagdist_list[i] = tagdist_list[i+1]; + tagid_list[i] = tagid_list[i+1]; + tagstate_list[i] = tagstate_list[i+1]; + + tagdist_list[i+1] = tempdist; + tagid_list[i+1] = tempid; + tagstate_list[i+1] = tempstate; + } + } + for(i=0;i<taglist_num;i++) + { + Modbus_HoldReg[i*4] = tagid_list[i]; + Modbus_HoldReg[i*4+1] = tagstate_list[i]; + memcpy(&Modbus_HoldReg[i*4+2],&tagdist_list[i],4); + } }else{ // printf("%d",hex_dist); misdist_num[taglist_pos]++; -- Gitblit v1.9.3