| | |
| | | #include "dw_app.h" |
| | | #include "ADC.h" |
| | | #include "modbus.h" |
| | | #define TDFILTER |
| | | enum enumtagstate |
| | | { |
| | |
| | | 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) |
| | |
| | | dwt_setrxaftertxdelay(RESP_TX_TO_FINAL_RX_DLY_UUS+(rec_nearbase_num+1-ancrec_nearbasepos)*DELAY_BETWEEN_TWO_FRAME_UUS);//设置åé宿åå¼å¯æ¥æ¶å»¶è¿æ¶é´ |
| | | dwt_setrxtimeout(FINAL_RX_TIMEOUT_UUS);//æ¥æ¶è¶
æ¶æ¶é´ |
| | | |
| | | if(tagdist_list[taglist_pos]<g_com_map[ALARM_DISTANCE1]) |
| | | |
| | | if(new_tagid) |
| | | { |
| | | tagdist_list[taglist_pos]=0x1ffff; |
| | | memcpy(&tx_nearresp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4); |
| | | }else{ |
| | | memcpy(&tx_nearresp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4); |
| | | } |
| | | |
| | | if(tagdist_list[taglist_pos]<g_com_map[ALARM_DISTANCE1]) |
| | | { |
| | | motorstate =0; |
| | | }else if(tagdist_list[taglist_pos]<g_com_map[ALARM_DISTANCE2]) |
| | |
| | | }else{ |
| | | motorstate =0; |
| | | } |
| | | |
| | | if(new_tagid) |
| | | { |
| | | tagdist_list[taglist_pos]=0x1ffff; |
| | | memcpy(&tx_nearresp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4); |
| | | }else{ |
| | | memcpy(&tx_nearresp_msg[DIST_IDX], &tagdist_list[taglist_pos], 4); |
| | | } |
| | | |
| | | tx_nearresp_msg[GROUP_ID_IDX] = group_id; |
| | | tx_nearresp_msg[MAINBASE_INDEX]=flag_syncbase; |
| | | tx_nearresp_msg[MESSAGE_TYPE_IDX]=NEAR_RESPONSE; |
| | | tx_nearresp_msg[MOTORSTATE_INDEX]=(remotesend_state<<4)|motorstate; |
| | | tx_nearresp_msg[MOTORSTATE_INDEX]=(remotesend_state<<4)|(motorstate&0xf); |
| | | if(remotesend_state) |
| | | { |
| | | memcpy(&tx_nearresp_msg[REMOTEPARA_INDEX],remotetag_para,REMOTEPARA_LEN); |
| | |
| | | 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(); |
| | |
| | | { |
| | | g_Tagdist[taglist_pos]=hex_dist/10; |
| | | }else{ |
| | | g_Tagdist[taglist_pos]= 1; |
| | | // g_Tagdist[taglist_pos]= 1; |
| | | } |
| | | #ifdef USART_SINGLE_OUTPUT |
| | | usart_send[2] = 1;//æ£å¸¸æ¨¡å¼ |
| | |
| | | usart_send[4] = frame_seq_nb2;//æ°æ®æ®µé¿åº¦ |
| | | memcpy(&usart_send[5],&tag_id_recv,2); |
| | | memcpy(&usart_send[7],&dev_id,2); |
| | | if(tagdist_list[taglist_pos]<=0) |
| | | tagdist_list[taglist_pos]=10; |
| | | if(tagdist_list[taglist_pos]<=0) |
| | | tagdist_list[taglist_pos]=0x2ffff; |
| | | memcpy(&usart_send[9],&tagdist_list[taglist_pos],4); |
| | | usart_send[13] = battary; |
| | | usart_send[14] = button; |
| | |
| | | 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 |
| | | 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]++; |