From 5526b60c69c0c2dd0df985ced5824e9aa673c846 Mon Sep 17 00:00:00 2001 From: zhangbo <zhangbo@qq.com> Date: 星期一, 14 四月 2025 09:45:31 +0800 Subject: [PATCH] 测试基本通过,现在开机30秒到90秒会确定在室内室外,然后现在室外的阈值提高信号强度高于400大于10个卫星 --- keil/include/main/main.c | 200 ++++++++++++++++++++++++++++++++++++++----------- 1 files changed, 155 insertions(+), 45 deletions(-) diff --git a/keil/include/main/main.c b/keil/include/main/main.c index 0cc768d..64fa1b5 100644 --- a/keil/include/main/main.c +++ b/keil/include/main/main.c @@ -24,12 +24,6 @@ #include "PCA9555.h" #include "WS2812.h" #include "DBG.h" -typedef enum -{ - RTCMMODE_NONE, - RTCMMODE_TCP, - RTCMMODE_NTRIP, -}RTCMMode; //#define DEBUG_MODE extern int simple_main(void); @@ -126,14 +120,14 @@ uint32_t lock; trace_flush(); lock = int_lock(); - LOG_INFO(TRACE_MODULE_APP, "进入深度休眠\r\n"); +// LOG_INFO(TRACE_MODULE_APP, "进入深度休眠\r\n"); // gps_air780_power_change(0,0);//关闭gps,4G PCA9555_Set_One_Value_Output(GPS_POWER,0);//关闭gps,4G PCA9555_Set_One_Value_Output(AIR780E_ENBALE,0);//关闭gps,4G sleep_timer_stop(); //adc_close(); power_enter_power_down_mode(1); - LOG_INFO(TRACE_MODULE_APP, "从休眠出来\r\n"); +// LOG_INFO(TRACE_MODULE_APP, "从休眠出来\r\n"); sys_reset(0); int_unlock(lock); } @@ -163,11 +157,11 @@ { //power_low_flag=1; //gps_air780_power_change(gps_power_state,0);//gps原样,关闭4G - LOG_INFO(TRACE_MODULE_APP, "电池电压低于3.3V,4G,GPS停止工作\r\n"); +// LOG_INFO(TRACE_MODULE_APP, "电池电压低于3.3V,4G,GPS停止工作\r\n"); }else{ //power_low_flag=0; //gps_air780_power_change(gps_power_state,1);//gps原样,开启4G - LOG_INFO(TRACE_MODULE_APP, "电池电压正常,4G,GPS,正常工作\r\n"); +// LOG_INFO(TRACE_MODULE_APP, "电池电压正常,4G,GPS,正常工作\r\n"); } PCA9555_Set_One_Value_Output(ADC_MINIUS,1);//拉高 } @@ -182,7 +176,7 @@ uint32_t ledontime; void IMUTask(void) { - if(nomove_count>g_com_map[NOMOVESLEEP_TIME]&&g_com_map[IMU_ENABLE]==1) + if(nomove_count>g_com_map[NOMOVESLEEP_TIME]&&g_com_map[IMU_ENABLE]==2) {//power_wakeup_enable((enum POWER_WAKEUP_SOURCE_T)ACCLERATE_DETECT_Pin, POWER_WAKEUP_LEVEL_HIGH); mcu_deep_sleep(); } @@ -281,11 +275,24 @@ uint8_t flag_sleeptimer,flag_secondtask,secondtask_count,log_4g_enable_flag; uint8_t uwb_enable_flag=0; uint8_t input5v_time; +uint8_t heart_upload_time=0; extern uint8_t taglist_num; +//extern uint8_t ceshidata[500]; +extern uint8_t ceshichangdu; +uint8_t gps_ntripsend; +extern uint8_t in_the_room_flag; +extern uint8_t lounei_flag; +extern uint16_t g_spsum_GSV,g_snum_GSV; +extern uint16_t g_spsum_GSV_sum; +extern uint16_t g_snum_GSV_sum; +extern uint8_t ceju_leave_flag; +extern uint8_t fixed_solution_count_minute; +uint8_t open_gps_time=0; static void sleep_timer_callback(void *dev, uint32_t time) { if(secondtask_count++%2==0) - { + { + open_gps_time++; input5v_time=1; flag_secondtask = 1; if(!read_5v_input_pca()) @@ -299,16 +306,78 @@ ledonflag=1; // ledontime=HIDO_TimerGetTick(); Set4LEDColor(uwbled,rtkled,led4g,powerled); +// uart_send(UART_ID1, ceshidata, 50,NULL); } input5v_time=1; if(taglist_num==0) { CloseUWB(); Uwb_init(); - OpenUWB(); +// OpenUWB(); } +// in_the_room_flag=1; + if(30<open_gps_time<90) + { + Receive_g_spsum_Data(g_spsum_GSV); + Receive_g_snum_Data(g_snum_GSV); + } + if(ceju_leave_flag==1) + { + Receive_g_spsum_Data(g_spsum_GSV); + Receive_g_snum_Data(g_snum_GSV); + if(open_gps_time>90) + { + open_gps_time=90; + +// if((g_spsum_GSV_sum<200&&g_snum_GSV_sum<3)&&(fixed_solution_count_minute<30||fixed_solution_count_minute==0)) + if((g_spsum_GSV_sum<300||g_snum_GSV_sum<20)&&(fixed_solution_count_minute<30)) + { + lounei_flag=1; + +// Switch_low_power_mode(lounei_flag); + } + if((400<g_spsum_GSV_sum&&10<g_snum_GSV_sum)&&(fixed_solution_count_minute>30)) +// if((200<g_spsum_GSV_sum&&3<g_snum_GSV_sum)&&(ceju_leave_flag==1)) + { + lounei_flag=0; +// Switch_low_power_mode(lounei_flag); + } + } + + if(heart_upload_time==60) + { + ceju_leave_flag=0; + fixed_solution_count_minute=0; + if(lounei_flag==1) + { + PCA9555_Set_One_Value_Output(GPS_POWER,0); + } + } + if(heart_upload_time==0||heart_upload_time==60) + { + TCPHeartBeatUpload(); + heart_upload_time=0; + + } + heart_upload_time++; + } + + + + + + + + + + + }else{ flag_secondtask = 0; + } + if(gps_ntripsend==1) + { + gps_ntripsend=2; } if(delaysleep_count>0) delaysleep_count--; @@ -362,18 +431,37 @@ memcpy(&send_struct.gunLableId,&g_com_map[BIND_DEV_ID],2);//更新绑定ID send_struct.tagId=dev_id;//更新设备ID - g_com_map[IP_0]=111; - g_com_map[IP_1]=198; - g_com_map[IP_2]=60; - g_com_map[IP_3]=6; - g_com_map[PORT]=6666; - g_com_map[RTCMMODE_INDEX] = RTCMMODE_NTRIP; - snprintf((char *)&g_com_map[NTRIP_HOST_INDEX], 32, "140.143.212.42"); - g_com_map[NTRIP_PORT_INDEX] = HIDO_UtilStrToInt("8005"); -// snprintf((char *)&g_com_map[NTRIP_PORT_INDEX], 32, "8005"); - snprintf((char *)&g_com_map[NTRIP_USERNANME_INDEX], 32, "test005"); - snprintf((char *)&g_com_map[NTRIP_PASSWORD_INDEX], 32, "Hxzk0228"); - snprintf((char *)&g_com_map[NTRIP_SOURCENAME_INDEX], 32, "RTCM32_GNSS2"); +// g_com_map[IP_0]=111; +// g_com_map[IP_1]=198; +// g_com_map[IP_2]=60; +// g_com_map[IP_3]=6; +// g_com_map[PORT]=1102; + +// g_com_map[IP_0]=117; +// g_com_map[IP_1]=72; +// g_com_map[IP_2]=111; +// g_com_map[IP_3]=237; +// g_com_map[PORT]=7000; +// +// g_com_map[TCP_IP_0]=111; +// g_com_map[TCP_IP_1]=198; +// g_com_map[TCP_IP_2]=60; +// g_com_map[TCP_IP_3]=6; +// g_com_map[TCP_PORT]=1234; + /* + RTCMMODE_NONE, + RTCMMODE_TCP, + RTCMMODE_NTRIP, + */ +// g_com_map[RTCMMODE_INDEX] = RTCMMODE_NTRIP; + + +// snprintf((char *)&g_com_map[NTRIP_HOST_INDEX], 32, "140.143.212.42"); +// g_com_map[NTRIP_PORT_INDEX] = HIDO_UtilStrToInt("8005"); +//// snprintf((char *)&g_com_map[NTRIP_PORT_INDEX], 32, "8005"); +// snprintf((char *)&g_com_map[NTRIP_USERNANME_INDEX], 32, "test005"); +// snprintf((char *)&g_com_map[NTRIP_PASSWORD_INDEX], 32, "Hxzk0228"); +// snprintf((char *)&g_com_map[NTRIP_SOURCENAME_INDEX], 32, "RTCM32_GNSS2"); if(g_com_map[BIND_DEV_ID]==0) @@ -395,7 +483,7 @@ LOG_INFO(TRACE_MODULE_APP,"设备ID: %x .\r\n",dev_id); - LOG_INFO(TRACE_MODULE_APP,"固件版本:4G-GPS定位手环 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff); + LOG_INFO(TRACE_MODULE_APP,"固件版本:MK-大工卡 V%d.%d. \r\n",g_com_map[VERSION]>>8,g_com_map[VERSION]&0xff); LOG_INFO(TRACE_MODULE_APP,"服务器地址: %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]); if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP) { @@ -413,13 +501,13 @@ { LOG_INFO(TRACE_MODULE_APP,"单点定位模式模式. \r\n"); } + delay_ms(500); } uint32_t adctick = 0; uint8_t only_one_flag; uint16_t chongman_time; uint8_t bat_percent_old=100; uint8_t input5vflag; -uint8_t kai_4g_flag; void IdleTask(void) { if(read_5v_input_pca()) @@ -462,13 +550,10 @@ } if(DBG_GetMode() == DBG_MODE_SHELL) { - if(kai_4g_flag==0) - { - kai_4g_flag=1; -// PCA9555_Set_One_Value_Output(AIR780E_ENBALE,1); - Shell_Init(); - } - HIDO_InputPoll(); + if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP) + {TCPClient_Poll_1();} + //HIDO_InputPoll(); + DBG_Poll(); Internet_Poll(); HIDO_TimerPoll(); HIDO_ATLitePoll(); @@ -480,7 +565,20 @@ flag_secondtask = 0; SecondTask(); } + if(DBG_GetMode() == DBG_MODE_SHELL) + { + Set4LEDColor(uwbled,rtkled,led4g,powerled); + if(g_com_map[CNT_RESTART]==1) + { + g_com_map[CNT_RESTART]=0; + save_com_map_to_flash(); + NVIC_SystemReset(); + } + } + else + { Set4LEDColor(0,0,0,powerled); + } if(input5v_time) { if(!read_5v_input_pca()) @@ -501,7 +599,7 @@ state5V_prase_flag=state5v; gps_prase_flag=1;//恢复gps解析 uart1_change_from_debug_to_gps();//测试 - PCA9555_Set_One_Value_Output(MCU_A,0);//输出低电平切换为GPS + PCA9555_Set_One_Value_Output(MCU_A,1);//输出低电平切换为GPS } } UART_CheckReceive(); @@ -538,6 +636,7 @@ uart_close(UART_ID1);//解绑原来串口1 uart_close(UART_ID0);//解绑原来串口0 } + uint8_t flag_4guart_needinit=0; uint8_t index1,index2,index3; int16_t Voltage_input; @@ -545,12 +644,14 @@ int test1,test3; uint32_t test4; extern uint8_t receive_flag; +extern uint8_t YUANGPS_ParseGGA_data[256]; +extern uint8_t YUANGPS_ParseGGA_changdu; int main(void) { board_clock_run(); boot_deinit(); board_pins_config(); - board_debug_console_open_baud(TRACE_PORT_UART1,BAUD_115200); + board_debug_console_open_baud(TRACE_PORT_UART1,BAUD_115200); // Reset reason reset_cause_get(); reset_cause_clear(); @@ -569,7 +670,9 @@ calib_chip(); wdt_close(WDT_ID0); Uart_Register(UART_ID_4G, UART_ID0); -// Uart_Register(UART_ID_DBG, UART_ID1); + Uart_Register(UART_ID_DBG_GPS, UART_ID1); + DBG_Init(); + Program_Init(); Internet_Init(); TCPClient_Init(); @@ -577,6 +680,10 @@ { NTRIPClient_Init(); NTRIPApp_Init(); + } + if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP) + { + TCPClient_Init_1(); } gpio_open(); LED_output_init();//配置彩色灯引脚 @@ -592,8 +699,8 @@ adc_get(&sample[0], NUM_SAMPLES, adc_callback);//adc采样 pca_input_detection_init(pca_handler);//pca检测输入 Uwb_init(); - OpenUWB(); - DBG_Init(); +// OpenUWB(); +// DBG_SetMode(DBG_MODE_SHELL); // Shell_Init(); if(!read_5v_input_pca()) @@ -604,18 +711,21 @@ delay_ms(500); Set4LEDColor(LEDOFF,LEDOFF,LEDOFF,LEDOFF); } -// state5v=1; -// state5V_prase_flag=state5v; -// gps_prase_flag=0;//解除gps解析 -// uart1_change_from_gps_to_debug();//测试 -// PCA9555_Set_One_Value_Output(MCU_A,1);//输出高电平切换为5V输入 + g_com_map[MODBUS_MODE] = 0; + state5v=0; + state5V_prase_flag=state5v; + gps_prase_flag=1;//恢复gps解析 + uart1_change_from_debug_to_gps();//测试 + PCA9555_Set_One_Value_Output(MCU_A,0);//输出低电平切换为GPS while (1) { - uwb_app_poll(); + uwb_app_poll(); Internet_Poll(); HIDO_TimerPoll(); HIDO_ATLitePoll(); TCPClient_Poll(); + if(g_com_map[RTCMMODE_INDEX] == RTCMMODE_TCP) + {TCPClient_Poll_1();} if(flag_secondtask) { flag_secondtask = 0; -- Gitblit v1.9.3