From b8fac32aed712a3e0e87cea99b9c6d5ef5e12d2b Mon Sep 17 00:00:00 2001 From: zhangbo <zhangbo@qq.com> Date: 星期五, 07 三月 2025 18:02:15 +0800 Subject: [PATCH] 现在单个测距完成,然后3s测一次距功能实现 --- keil/include/src/Radio/lora_1268.c | 66 ++++++++++++++++++--------------- 1 files changed, 36 insertions(+), 30 deletions(-) diff --git a/keil/include/src/Radio/lora_1268.c b/keil/include/src/Radio/lora_1268.c index 31f6c71..044c97f 100644 --- a/keil/include/src/Radio/lora_1268.c +++ b/keil/include/src/Radio/lora_1268.c @@ -165,6 +165,7 @@ uint16_t heatbeat_count = HEATBEAT_UPDATE_TIME-1 ; uint16_t flag_getwgresp = 0; int16_t intheight; //气压 +uint16_t FACHU_FLAG=0; extern uint32_t dangqian_frqe; uint16_t recnum[3]; extern uint32_t freq_list[4]; @@ -175,6 +176,8 @@ uint8_t BT_NUM=0; extern uint16_t report_ancdist[ANC_MAX_NUM],report_ancid[ANC_MAX_NUM]; extern uint8_t bat_percent; +extern int32_t tagdist_list[TAG_NUM_IN_SYS]; +extern uint16_t tagid_list[TAG_NUM_IN_SYS]; void LoraReportPoll(void) { // delay_ms(100); @@ -191,14 +194,9 @@ LoraReportFreqPoll(); flag_getwgresp = 0; - // wg_report_freq = REPORT_MANGE_CHANNEL_FRQ; - //Lora_init(); - uint32_t para; - - para=freq_list[2] * 100000; - +// wg_report_freq = REPORT_MANGE_CHANNEL_FRQ; // rf_set_sf(REPORT_CHANNEL_SF); - SwitchLoraSettings(para,REPORT_CHANNEL_SF,0); + SwitchLoraSettings(wg_report_freq,REPORT_CHANNEL_SF,g_com_map[LORA_POWER]); //rf_set_default_para(wg_report_freq,REPORT_CHANNEL_SF); // SwitchLoraSettings(wg_report_freq,REPORT_CHANNEL_SF,g_com_map[LORA_POWER]); // dangqian_frqe=rf_read_freq(); @@ -261,8 +259,12 @@ // memcpy(&report_ancdist,test_temp2,10); lora_sendbuffer[ANCNUM_IDX] = report_ancnum; - memcpy(&lora_sendbuffer[ANCID_IDX],report_ancid,report_ancnum*2); - memcpy(&lora_sendbuffer[ANCID_IDX+report_ancnum*2],report_ancdist,report_ancnum*2); +// memcpy(&lora_sendbuffer[ANCID_IDX],report_ancid,report_ancnum*2); +// memcpy(&lora_sendbuffer[ANCID_IDX+report_ancnum*2],report_ancdist,report_ancnum*2); + memcpy(&lora_sendbuffer[ANCID_IDX],tagid_list,report_ancnum*2); + memcpy(&lora_sendbuffer[ANCID_IDX+report_ancnum*2],tagdist_list,report_ancnum*2); +// tagdist_list[taglist_pos]tagid_list + uint8_t LORA_RETRANSNUSSION_BT=0; BT_NUM=DMA_RXBuf_BT[0]; if(0<BT_NUM&&BT_NUM<11) @@ -290,7 +292,7 @@ Radio.Send(lora_sendbuffer,ANCID_IDX+report_ancnum*4+BT_NUM*4+2); } - + FACHU_FLAG++; // LORA_3029_SINGLE_SEND(lora_sendbuffer,ANCID_IDX+report_ancnum*4+BT_NUM*4+4,0); memset(DMA_RXBuf_BT, 0,200); memset(&lora_sendbuffer[ANCID_IDX],0,200); @@ -387,6 +389,7 @@ if(lora_send_count++%10==0||lora_jianting_flag) { lora_tx_flag=0; +// Anchor_RecNearPoll(); #ifdef GROUPID_SWITCH if(rec_secdelay>0) { @@ -505,6 +508,7 @@ uint16_t BufferSize = BUFFER_SIZE; uint16_t CRC16=0; uint16_t DEST_ID=0; +uint16_t JIESHOU_FLAG=0; uint8_t shengji_flag; int8_t RssiValue = 0; int8_t SnrValue = 0; @@ -524,8 +528,8 @@ void OnRxDone( uint8_t *payload, uint16_t size, int16_t rssi, int8_t snr ) { - - uint16_t checksum1; +// LORA_LED_ON; + uint16_t checksum1; BufferSize = size; memcpy( RX_Buffer, payload, BufferSize ); RssiValue = rssi; @@ -536,7 +540,7 @@ if(RX_Buffer[MSG_TYPE_IDX]==LORA_MSGTYPE_WGRESPTAG) { checksum1=Checksum_u16(RX_Buffer,BufferSize-2); - + JIESHOU_FLAG++; memcpy(&DEST_ID,&RX_Buffer[DEST_ID_IDX],2); memcpy(&CRC16,&RX_Buffer[BufferSize-2],2); if(!memcmp(&checksum1,&RX_Buffer[BufferSize-2],2)) @@ -554,23 +558,24 @@ switch(RX_Buffer[PWTAG_RW_FLAG_IDX]) { case WGRSP_RWTAG_NONE: - wg_report_freq = RX_Buffer[POLL_FREQ_IDX]+400; - memcpy(&rec_delaytime,&RX_Buffer[NEXTPOLL_TIME_IDX],2); - if(report_ancnum<2) - { - datalen_offset = report_ancnum*85; - }else{ - datalen_offset = (report_ancnum-1)*46+85; - } - rec_secdelay = RX_Buffer[PWTAG_SECDELAY_IDX]; - if(BufferSize!=13||rec_secdelay>20) - { - rec_secdelay = 0; - } - sleep_time_count = rec_delaytime - delaytime-datalen_offset; - while(sleep_time_count>=1000) - sleep_time_count-=1000; - sleep_timer_start(sleep_time_count); +// LORA_LED_OFF; +// wg_report_freq = RX_Buffer[POLL_FREQ_IDX]+400; +// memcpy(&rec_delaytime,&RX_Buffer[NEXTPOLL_TIME_IDX],2); +// if(report_ancnum<2) +// { +// datalen_offset = report_ancnum*85; +// }else{ +// datalen_offset = (report_ancnum-1)*46+85; +// } +// rec_secdelay = RX_Buffer[PWTAG_SECDELAY_IDX]; +// if(BufferSize!=13||rec_secdelay>20) +// { +// rec_secdelay = 0; +// } +// sleep_time_count = rec_delaytime - delaytime-datalen_offset; +// while(sleep_time_count>=1000) +// sleep_time_count-=1000; +// sleep_timer_start(sleep_time_count); break; case WGRSP_RWTAG_READ: @@ -629,6 +634,7 @@ Radio.Rx(0); } } + } void OnTxTimeout( void ) -- Gitblit v1.9.3