From 039f65a917fab431b629125b428fb1ede145ebbe Mon Sep 17 00:00:00 2001 From: WXK <287788329@qq.com> Date: 星期二, 20 五月 2025 11:52:59 +0800 Subject: [PATCH] 3.7,加入放开加速度阈值可以修改 --- APL/App.c | 516 ++++++++++++++++----------------------------------------- 1 files changed, 145 insertions(+), 371 deletions(-) diff --git a/APL/App.c b/APL/App.c index 4c881e1..1eeb70e 100644 --- a/APL/App.c +++ b/APL/App.c @@ -57,7 +57,9 @@ static HIDO_UINT32 l_u32LocationTick = 0; extern ST_GPS l_stGPS; extern uint32_t uwbled,gpsled,loraled,powerled; -uint8_t uwb_send[100]={0x55,0xaa}; +uint8_t uwb_send[200]={0x55,0xaa}; +void Uwb_Zubao_Poll(); +extern IWDG_HandleTypeDef hiwdg; /******************************************************************************* * Local Function Declaration * *******************************************************************************/ @@ -102,96 +104,43 @@ // UDPClient_UploadGPS((char*)LBS_data); } -/******************************************************************************* - * Function Name : App_Poll - * Description : - * Input : - * Output : None - * Return : None - * Author : www.hido-studio.com - * Modified Date: : 2021年5月07日 - *******************************************************************************/ -//HIDO_VOID App_Poll(HIDO_VOID) -//{ -// // 充电状态 -// if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_8) == GPIO_PIN_SET) -// { -// if(HIDO_FALSE == l_bCharge) -// { -// l_bCharge = HIDO_TRUE; -// l_u32ChargeTick = 0; -// l_u32CancelChargeReport = HIDO_FALSE; -// } -// if(l_bCharge == HIDO_TRUE && l_u32CancelChargeReport == HIDO_FALSE) -// { -// if((HIDO_TimerGetTick() - l_u32ChargeTick) >= HIDO_TIMER_TICK_S(10)) -// { -// l_u32ChargeTick = HIDO_TimerGetTick(); - -// // 发送状态 -// } -// } - -// return; -// } -// else -// { -// l_bCharge = HIDO_FALSE; -// } - -// // 设备被拆卸 -// if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_11) == GPIO_PIN_RESET) -// { -// if(HIDO_FALSE == l_bDismantle) -// { -// l_bCancelAlarm = HIDO_FALSE; -// l_bDismantle = HIDO_TRUE; -// l_u32DismantleAlarmTick = 0; -// } -// } -// else -// { -// l_bDismantle = HIDO_TRUE; -// } - -// // 启动蜂鸣器 -// if(l_bDismantle == HIDO_TRUE && l_bCancelAlarm == HIDO_FALSE) -// { -// // 蜂鸣器动作 - -// // 每隔10秒发送一次告警 -// if((HIDO_TimerGetTick() - l_u32DismantleAlarmTick) >= HIDO_TIMER_TICK_S(10)) -// { -// l_u32DismantleAlarmTick = HIDO_TimerGetTick(); - -// // 发送告警 -// } -// } - -// // 10分钟上报一次位置 -// if((HIDO_TimerGetTick() - l_u32LocationTick) >= HIDO_TIMER_TICK_S(1/*0 * 60*/)) -// { -// l_u32LocationTick = HIDO_TimerGetTick(); - -// // GPS定位有效 -// if(l_stGPS.m_eState) -// { -// // 发送GNSS位置 -// } -// // GPS定位无效 -// else -// { -// // 获取LBS位置 -// Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL); -// } -// } -//} extern uint16_t nomove_count; extern uint8_t bat_percent; extern uint8_t chargedbg_flag; u8 power_state = 0,chargeon = 0; uint8_t chongman_flag; +extern uint16_t chongdian_yundong_time; +extern uint8_t bat_percent; +extern uint16_t heart_time; +extern uint8_t nomove_flag; +uint16_t qidong_time; +#define QIDONG_TIME 60 //1分钟 +#define DENGDAI_TIME 30//90s +//#define STOP_TIME 600-DENGDAI_TIME-QIDONG_TIME//600s 10分钟 +#define YUNDONG_UWB_TIME 1 +#define YUNDONG_GPS4G_TIME 100 +extern UART_HandleTypeDef huart2; +uint8_t GPS_data[200]; +uint8_t GPS_successful_flag; +uint8_t fangchai_flag; +uint8_t fangchai_state; +uint8_t only_one_flag; +uint8_t only_one_flag1; +extern uint16_t fangchai_time; +extern uint8_t taglist_num; +uint16_t tagseq; +extern uint16_t tagid_list[ANC_MAX_NUM],tagdist_list[ANC_MAX_NUM]; +extern uint8_t yundong_state; +extern uint16_t yundong_time; +extern uint8_t tagbat_list[ANC_MAX_NUM]; +extern TIM_HandleTypeDef htim3; +extern uint8_t beep_state; +extern uint8_t air780_state; +extern uint16_t sleep_time; +uint8_t zuihoufasong_falg; +uint8_t UDPClient_UploadGPS_flag; +extern uint16_t chongdianmeiyouuwb_time; void PowerLedTask(void) { static u8 powerled_state=0; @@ -204,6 +153,8 @@ } while(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)&&DBG_GetMode() == DBG_MODE_CHARGE) { + nomove_count = 0; + HAL_IWDG_Refresh(&hiwdg); DBG_Poll(); IdleTask(); uwbled=LEDOFF; @@ -211,18 +162,54 @@ HIDO_TimerPoll(); HIDO_ATLitePoll(); UDPClient_Poll(); + GPS_Poll(); if(bat_percent>90) { powerled = RED; - gpsled = LEDOFF; - uwbled = LEDOFF; - loraled = LEDOFF; chongman_flag=1; } else { powerled = RED; } + if(chongdianmeiyouuwb_time>30) + { + HAL_NVIC_SystemReset(); + } + if(taglist_num>0) + { + if(air780_state>=2) + { + HAL_NVIC_SystemReset(); + } + if(chongdian_yundong_time>=YUNDONG_UWB_TIME) + { + air780_state=0; + chongdian_yundong_time=0; + Uwb_Zubao_Poll(); + UDPClient_UploadGPS((char*)GPS_data); +// UDPClient_UploadGPS_flag=1; + HexToAsciiSendUDP(uwb_send,19+5*taglist_num); + taglist_num=0; + chongdianmeiyouuwb_time=0; + } + } + else + { + if(chongdian_yundong_time>=g_com_map[GPS_HZ]) + { + chongdian_yundong_time=0; + if(GPS_successful_flag) + { + UDPClient_UploadGPS((char*)GPS_data); +// UDPClient_UploadGPS_flag=1; + } + else + { + Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL); + } + } + } } } @@ -253,8 +240,8 @@ // hardware_type = STMFLASH_ReadHalfWord(FLASH_HARDWARE_VERSION_MAP + 4); //deca_sleep(1000); - g_com_map[GROUP_ID]=0; - g_com_map[VERSION] = (1<<8)|7; + g_com_map[GROUP_ID]=3; + g_com_map[VERSION] = (2<<8)|11; if (g_com_map[COM_INTERVAL] <50) { @@ -291,10 +278,12 @@ else {g_com_map[GPS_HZ]=600;} } + g_com_map[GPS_HZ]=1; if(g_com_map[CHAICHUGPS_HZ]<180||g_com_map[CHAICHUGPS_HZ]>3600) { {g_com_map[CHAICHUGPS_HZ]=600;} } + g_com_map[CHAICHUGPS_HZ]=1800; if(g_com_map[NOMOVESLEEP_TIME]>120) { g_com_map[NOMOVESLEEP_TIME]=120; @@ -313,24 +302,24 @@ printf("服务器地址: %d.%d.%d.%d:%d.\r\n",g_com_map[IP_0],g_com_map[IP_1],g_com_map[IP_2],g_com_map[IP_3],g_com_map[PORT]); printf("当前运动时GPS工作间隔: %d .\r\n",g_com_map[GPS_HZ]); printf("当前被拆时GPS工作间隔: %d .\r\n",g_com_map[CHAICHUGPS_HZ]); - if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP) - { printf("TCP_RTCM模式,服务器地址: %d.%d.%d.%d:%d.\r\n",g_com_map[TCP_IP_0],g_com_map[TCP_IP_1],g_com_map[TCP_IP_2],g_com_map[TCP_IP_3],g_com_map[TCP_PORT]); - }else if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_NTRIP) - { -// sprintf((char *)&g_com_map[NTRIP_HOST_INDEX],"140.143.212.42"); -// g_com_map[NTRIP_PORT_INDEX] = 8005; -// sprintf((char *)&g_com_map[NTRIP_USERNANME_INDEX],"test006"); -// sprintf((char *)&g_com_map[NTRIP_PASSWORD_INDEX],"hxzk20151102"); -// sprintf((char *)&g_com_map[NTRIP_SOURCENAME_INDEX],"RTCM32_GNSS2"); - printf("NtripHost:%s.\r\n",(char *)&g_com_map[NTRIP_HOST_INDEX]); - printf("NtripPort:%d.\r\n",g_com_map[NTRIP_PORT_INDEX]); - printf("NtripUsername:%s.\r\n",(char *)&g_com_map[NTRIP_USERNANME_INDEX]); - printf("NtripPassword:%s.\r\n",(char *)&g_com_map[NTRIP_PASSWORD_INDEX]); - printf("NtripSourcename:%s.\r\n",(char *)&g_com_map[NTRIP_SOURCENAME_INDEX]); - }else if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_NONE) - { - printf("单点定位模式模式. \r\n"); - } +// if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP) +// { printf("TCP_RTCM模式,服务器地址: %d.%d.%d.%d:%d.\r\n",g_com_map[TCP_IP_0],g_com_map[TCP_IP_1],g_com_map[TCP_IP_2],g_com_map[TCP_IP_3],g_com_map[TCP_PORT]); +// }else if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_NTRIP) +// { +//// sprintf((char *)&g_com_map[NTRIP_HOST_INDEX],"140.143.212.42"); +//// g_com_map[NTRIP_PORT_INDEX] = 8005; +//// sprintf((char *)&g_com_map[NTRIP_USERNANME_INDEX],"test006"); +//// sprintf((char *)&g_com_map[NTRIP_PASSWORD_INDEX],"hxzk20151102"); +//// sprintf((char *)&g_com_map[NTRIP_SOURCENAME_INDEX],"RTCM32_GNSS2"); +// printf("NtripHost:%s.\r\n",(char *)&g_com_map[NTRIP_HOST_INDEX]); +// printf("NtripPort:%d.\r\n",g_com_map[NTRIP_PORT_INDEX]); +// printf("NtripUsername:%s.\r\n",(char *)&g_com_map[NTRIP_USERNANME_INDEX]); +// printf("NtripPassword:%s.\r\n",(char *)&g_com_map[NTRIP_PASSWORD_INDEX]); +// printf("NtripSourcename:%s.\r\n",(char *)&g_com_map[NTRIP_SOURCENAME_INDEX]); +// }else if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_NONE) +// { +// printf("单点定位模式模式. \r\n"); +// } } void IdleTask(void) @@ -352,32 +341,6 @@ } } -extern uint8_t bat_percent; -extern uint16_t heart_time; -extern uint8_t nomove_flag; -uint16_t qidong_time; -#define QIDONG_TIME 60 //1分钟 -#define DENGDAI_TIME 30//90s -//#define STOP_TIME 600-DENGDAI_TIME-QIDONG_TIME//600s 10分钟 -#define YUNDONG_UWB_TIME 1 -#define YUNDONG_GPS4G_TIME 100 -extern UART_HandleTypeDef huart2; -uint8_t GPS_data[100]; -uint8_t GPS_successful_flag; -uint8_t fangchai_flag; -uint8_t fangchai_state; -uint8_t only_one_flag; -uint8_t only_one_flag1; -extern uint16_t fangchai_time; -extern uint8_t taglist_num; -uint16_t tagseq; -extern uint16_t tagid_list[ANC_MAX_NUM],tagdist_list[ANC_MAX_NUM]; -extern uint8_t yundong_state; -extern uint16_t yundong_time; -extern uint8_t tagbat_list[ANC_MAX_NUM]; -extern TIM_HandleTypeDef htim3; -extern uint8_t beep_state; -extern uint8_t air780_state; void Stop_Mode_Poll() { if(only_one_flag==0) @@ -394,9 +357,11 @@ HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET); Radio.Sleep(); + dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN); + dwt_entersleep(); } } -void Stop_Mode_chulelora_Poll()//关掉除了lora外的 +void Stop_Mode_chulelora_Poll()//关掉除了uwb外的 { if(only_one_flag1==0) { @@ -410,15 +375,19 @@ GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); - HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET); + HAL_GPIO_WritePin(GPIOB, GPIO_PIN_10, GPIO_PIN_RESET); + dwt_configuresleep(DWT_PRESRV_SLEEP | DWT_CONFIG, DWT_WAKE_CS | DWT_WAKE_WK| DWT_SLP_EN); + dwt_entersleep(); } } +extern uint16_t testlorarecve; void Uwb_Zubao_Poll() { uint16_t state_flag; u16 uwbchecksum; state_flag=fangchai_flag<<4; - + if(taglist_num>8) + {taglist_num=8;} uwb_send[2] = 0x12;//正常模式 uwb_send[3] = 15+5*(taglist_num);//数据段长度 memcpy(&uwb_send[4],&dev_id,2); @@ -426,7 +395,8 @@ uwb_send[7] = (tagseq++)>>8; uwb_send[8] = bat_percent; uwb_send[9] = state_flag; - //memcpy(&usart_send[10],&rec_tagheight,2); + memcpy(&uwb_send[10],&testlorarecve,2); + testlorarecve=0; uwb_send[12] = 0; uwb_send[13] = 0; uwb_send[14] = 0; @@ -439,171 +409,25 @@ uwbchecksum = Checksum_u16(&uwb_send[2],15+5*taglist_num); memcpy(&uwb_send[17+5*taglist_num],&uwbchecksum,2); } +extern uint16_t testlorarecve; void Main_Poll() { u16 uwbchecksum; IdleTask(); - if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1)) // 设备被拆卸 - { - if(air780_state>=2) - { - HAL_NVIC_SystemReset(); - } - fangchai_flag=1; - yundong_state=0; - if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)) - { - if(bat_percent>90) - { - powerled = RED; - gpsled = LEDOFF; - uwbled = LEDOFF; - loraled = LEDOFF; - chongman_flag=1; - } - else - { - powerled = RED; - } - } - else - {chongman_flag=0;} - - GPS_Poll(); + HAL_IWDG_Refresh(&hiwdg); + if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))//5V输入检测 + { yundong_state=0; + PowerLedTask(); + DBG_Poll(); + IdleTask(); Internet_Poll(); HIDO_TimerPoll(); HIDO_ATLitePoll(); UDPClient_Poll(); - - if(fangchai_time>g_com_map[CHAICHUGPS_HZ]) - { - fangchai_time=0; - if(GPS_successful_flag) - { - UDPClient_UploadGPS((char*)GPS_data); - } - else - { - Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL); - } - } } - else//设备没被拆卸 - { - fangchai_flag=0; - if(fangchai_state>=2) - { - HAL_NVIC_SystemReset(); - } - if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))//5V输入检测 - { yundong_state=0; - PowerLedTask(); - DBG_Poll(); - IdleTask(); - Internet_Poll(); - HIDO_TimerPoll(); - HIDO_ATLitePoll(); - UDPClient_Poll(); - uwbled=LEDOFF; - } - else//没有5V输入 - { - if(nomove_flag)//静止状态 - { - yundong_state=0; - Stop_Mode_Poll(); - HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); - } - else//运动状态 - { - if(yundong_state==0) - {Radio.Rx(0);} - yundong_state=1; - GPS_Poll(); - Internet_Poll(); - HIDO_TimerPoll(); - HIDO_ATLitePoll(); - UDPClient_Poll(); -// taglist_num=5; - if(taglist_num>0) - { - if(air780_state>=2) - { - HAL_NVIC_SystemReset(); - } - if(yundong_time>=YUNDONG_UWB_TIME) - { - air780_state=0; - yundong_time=0; - Uwb_Zubao_Poll(); - HexToAsciiSendUDP(uwb_send,19+5*taglist_num); -// loraled=BLUE; - taglist_num=0; - } - } - else - { - if(g_com_map[GPS_HZ]==1) - { - if(yundong_time>=g_com_map[GPS_HZ]) - { - yundong_time=0; - if(GPS_successful_flag) - { - UDPClient_UploadGPS((char*)GPS_data); -// loraled=GREEN; - } - else - { - Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL); -// loraled=WHITE; - } - } - } - else - { - if(yundong_time>=60&&air780_state==0) - { - air780_state=1; - yundong_time=0; - if(GPS_successful_flag) - { - UDPClient_UploadGPS((char*)GPS_data); -// loraled=GREEN; - } - else - { - Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL); -// loraled=WHITE; - } - } - if(yundong_time>=30&&air780_state==1) - { - air780_state=2; - yundong_time=0; - Stop_Mode_chulelora_Poll(); - } - if(air780_state==2) - { - HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); - } - if(yundong_time>=g_com_map[GPS_HZ]-60&&air780_state==2) - { - HAL_NVIC_SystemReset(); - } - } - } - } - } - } -} - -/* -void Main_Poll() -{ - u16 uwbchecksum; - IdleTask(); - if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1)) // 设备被拆卸 + else + { + if(HAL_GPIO_ReadPin(GPIOB, GPIO_PIN_1)) // 设备被拆卸拆卸后每秒发1次XTB,连续发五次。 然后10分钟发送一次定位信息,和XTB,其他时候休眠。 { if(air780_state>=2) { @@ -611,23 +435,6 @@ } fangchai_flag=1; yundong_state=0; - if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin)) - { - if(bat_percent>90) - { - powerled = RED; - gpsled = LEDOFF; - uwbled = LEDOFF; - loraled = LEDOFF; - chongman_flag=1; - } - else - { - powerled = RED; - } - } - else - {chongman_flag=0;} if(fangchai_state==0||fangchai_state==1) { GPS_Poll(); @@ -643,6 +450,7 @@ if(GPS_successful_flag) { UDPClient_UploadGPS((char*)GPS_data); +// UDPClient_UploadGPS_flag=1; } else { @@ -671,29 +479,26 @@ { HAL_NVIC_SystemReset(); } - if(HAL_GPIO_ReadPin(INPUT_5V_GPIO_Port,INPUT_5V_Pin))//5V输入检测 - { yundong_state=0; - PowerLedTask(); - DBG_Poll(); - IdleTask(); - Internet_Poll(); - HIDO_TimerPoll(); - HIDO_ATLitePoll(); - UDPClient_Poll(); - uwbled=LEDOFF; - } - else//没有5V输入 - { - if(nomove_flag)//静止状态 + if(nomove_flag/*&&zuihoufasong_falg*/)//静止状态 { yundong_state=0; + if(sleep_time>12) + { Stop_Mode_Poll(); HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); + if(sleep_time>1800) + {HAL_NVIC_SystemReset();} + } + else + { + Internet_Poll(); + HIDO_TimerPoll(); + HIDO_ATLitePoll(); + UDPClient_Poll(); + } } - else//运动状态 - { - if(yundong_state==0) - {Radio.Rx(0);} + else + { yundong_state=1; GPS_Poll(); Internet_Poll(); @@ -712,66 +517,35 @@ air780_state=0; yundong_time=0; Uwb_Zubao_Poll(); + UDPClient_UploadGPS((char*)GPS_data); +// UDPClient_UploadGPS_flag=1; HexToAsciiSendUDP(uwb_send,19+5*taglist_num); -// loraled=BLUE; taglist_num=0; } } else { - if(g_com_map[GPS_HZ]==1) - { +// if(g_com_map[GPS_HZ]==1) +// { if(yundong_time>=g_com_map[GPS_HZ]) { yundong_time=0; if(GPS_successful_flag) { UDPClient_UploadGPS((char*)GPS_data); -// loraled=GREEN; +// UDPClient_UploadGPS_flag=1; } else { Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL); -// loraled=WHITE; } } - } - else - { - if(yundong_time>=60&&air780_state==0) - { - air780_state=1; - yundong_time=0; - if(GPS_successful_flag) - { - UDPClient_UploadGPS((char*)GPS_data); -// loraled=GREEN; - } - else - { - Module_GetLBSLocationAsync(LBSLocationCallback, HIDO_NULL); -// loraled=WHITE; - } - } - if(yundong_time>=30&&air780_state==1) - { - air780_state=2; - yundong_time=0; - Stop_Mode_chulelora_Poll(); - } - if(air780_state==2) - { - HAL_PWR_EnterSTOPMode(PWR_LOWPOWERREGULATOR_ON, PWR_STOPENTRY_WFI); - } - if(yundong_time>=g_com_map[GPS_HZ]-60&&air780_state==2) - { - HAL_NVIC_SystemReset(); - } - } } - } - } + } + } } -*/ -//以上是源代码,被拆除时间接性关闭4G \ No newline at end of file +} + +//*/ +////以上是源代码,被拆除时间接性关闭4G \ No newline at end of file -- Gitblit v1.9.3