diff --git a/JT-DT-YD4N02A_RTT_MRS-4G.wvproj b/JT-DT-YD4N02A_RTT_MRS-4G.wvproj index 2166da0..c151bee 100644 --- a/JT-DT-YD4N02A_RTT_MRS-4G.wvproj +++ b/JT-DT-YD4N02A_RTT_MRS-4G.wvproj @@ -773,7 +773,7 @@ "address": "0x08000000", "target_path": "obj\\JT-DT-YD4N02A_RTT_MRS-4G.hex", "clkSpeed": "High", - "debug_interface_mode": "1-wire serial", + "debug_interface_mode": "", "erase": true, "program": true, "verify": true, diff --git a/bsp/src/bsp_nt26k.c b/bsp/src/bsp_nt26k.c index 066b11e..154461b 100644 --- a/bsp/src/bsp_nt26k.c +++ b/bsp/src/bsp_nt26k.c @@ -65,11 +65,12 @@ rt_sem_t nt26k_recv_msg_sem; // 用于接收信号 rt_sem_t nt26k_disconnect_sem; static rt_timer_t nt26k_timer; // 上报心跳 static rt_timer_t nt26k_upload_timer; // 更新本地时间定时器 -static rt_timer_t nt26k_power_error_timer; // 上电失败情况下启动定时器 +static rt_timer_t nt26k_error_timer; // 上电失败情况下启动定时器 rt_uint8_t device_power_down_flag; rt_uint8_t nt26k_power_down_flag; rt_uint8_t nt26k_connect_sever_flag; +rt_uint8_t nt26k_send_error_flag; rt_uint8_t nt26k_conncet_tcp_flag; rt_uint8_t nt26k_disconnect_pdp_flag; // PDP断开连接标志 rt_uint8_t nt26k_disconnect_retry_flag = 0; // 用于判断是否已经启动了重连,如果启动,不需要每次都进入 @@ -198,14 +199,20 @@ static void Nt26k_Ht_Timer_Cb(void *parameter) // 定时器回调函数,当1分钟内没有数据交互时,关闭tcp连接 static void Nt26k_Error_Timer_Cb(void *parameter) { + if((nt26k_send_error_flag == 1) && power_on_send_flag == 1) + { + nt26k_send_error_flag = 0; + Nt26k_Send_Event(nt26k_event_index.current_event); + } if (power_on_send_flag) // 上电成功时,停止定时器 { - rt_timer_stop(nt26k_power_error_timer); + rt_timer_stop(nt26k_error_timer); } else { Nt26k_Send_Event(kNt26kPowerOnEvent); } + } int _Pack_Send(struct Nt26k_Ops *ops, char *buf) @@ -811,7 +818,7 @@ int Nt26k_Process_Events(Nt26kEvent nt26k_recv_event, struct at_device *device, if (result != RT_EOK) { LOG_E("nt26k send failed\n"); - ret = RT_ERROR; + ret = RT_ERROR; continue; } else @@ -827,7 +834,12 @@ int Nt26k_Process_Events(Nt26kEvent nt26k_recv_event, struct at_device *device, { // 收不到说明在平台未注册,此时nt26k_connect_sever_flag 为0,但nt26k_conncet_tcp_flag = 1;此时不发起重连,等待事件触发就行 nt26k_connect_sever_flag = 0; - ret = RT_ERROR; + if(rt_strcmp(event->event_name, "上电心跳事件") != RT_EOK)//不是上电事件下的失败 + { + nt26k_send_error_flag = 1; + rt_timer_start(nt26k_error_timer); + } + ret = RT_ERROR; } } } @@ -840,7 +852,7 @@ int Nt26k_Process_Events(Nt26kEvent nt26k_recv_event, struct at_device *device, rt_sem_release(nt26k_disconnect_sem); } LOG_D("断网,等待连接中......\n"); - ret = RT_ERROR; + ret = RT_ERROR; } rt_thread_mdelay(3000); } @@ -1293,7 +1305,7 @@ static void Nt26k_Send_Thread_Entry(void *param) if (result) { power_on_send_flag = 0; - rt_timer_start(nt26k_power_error_timer); // 启动重连定时器, 3min一次,直到发送成功 + rt_timer_start(nt26k_error_timer); // 启动重连定时器, 3min一次,直到发送成功 LOG_E("nt26k send data failed result = [%d]\n", result); } else @@ -1560,7 +1572,7 @@ int BSP_Nt26k_Thread_Init(void) rt_err_t ret; Nt26k_Event_Init(); - rt_uint32_t iot_upload_time = (uint16_t)Flash_Get_SysCfg(kIotUploadCycleId); + rt_uint32_t iot_upload_time = (uint32_t)Flash_Get_SysCfg(kIotUploadCycleId); rt_uint32_t timeout = 0; if (iot_upload_time > 24 * 60 * 60 * RT_TICK_PER_SECOND) @@ -1606,7 +1618,7 @@ int BSP_Nt26k_Thread_Init(void) rt_kprintf("创建定时器失败\n"); return -1; } - nt26k_power_error_timer = rt_timer_create("nt26k_error_timer", + nt26k_error_timer = rt_timer_create("nt26k_error_timer", Nt26k_Error_Timer_Cb, RT_NULL, 3 * 60 * RT_TICK_PER_SECOND, // (3分钟) diff --git a/rt-thread/rtconfig.h b/rt-thread/rtconfig.h index c0740bd..d67b410 100644 --- a/rt-thread/rtconfig.h +++ b/rt-thread/rtconfig.h @@ -2,7 +2,7 @@ * @Author : stark1898y 1658608470@qq.com * @Date : 2024-07-19 13:49:43 * @LastEditors : stark1898y 1658608470@qq.com - * @LastEditTime : 2025-01-23 16:55:55 + * @LastEditTime : 2025-01-24 17:32:48 * @FilePath : \JT-DT-YD4N02A_4G_RTT_MRS\rt-thread\rtconfig.h * @Description : * @@ -15,8 +15,8 @@ /*使用动态日志及密码功能时,需开启宏 FINSH_USING_AUTH ULOG_USING_FILTER ENABLE_LOG_ALL ULOG_OUTPUT_LVL = 7 以及设置ulog.c 1522行 输出等级为0*/ /**/ -#define FINSH_USING_AUTH //开启终端密码登录功能 -#define ULOG_USING_FILTER //开启动态修改日志等级 默认修改在ulog.c 1522行 +// #define FINSH_USING_AUTH //开启终端密码登录功能 +// #define ULOG_USING_FILTER //开启动态修改日志等级 默认修改在ulog.c 1522行 #define ENABLE_LOG_ALL #define TEST_ENABLE //打开所有的终端测试程序 @@ -24,8 +24,8 @@ #define IOT_MODULE_SWITCH 1 //开启物联网功能 // #ifdef FINSH_USING_AUTH - // #define AT_USING_CLI - // #define AT_PRINT_RAW_CMD + #define AT_USING_CLI + #define AT_PRINT_RAW_CMD // #endif /* RT-Thread Kernel */