优化了重连

This commit is contained in:
小马_666 2025-01-22 13:33:38 +08:00
parent 47d78d713f
commit a4200d2e9d
11 changed files with 113 additions and 112 deletions

View File

@ -5,7 +5,18 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-85070147670020151" id="ilg.gnumcueclipse.managedbuild.cross.riscv.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT RISC-V Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-522711856992418268" id="ilg.gnumcueclipse.managedbuild.cross.riscv.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT RISC-V Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
</extension>
</configuration>
<configuration id="ilg.gnumcueclipse.managedbuild.cross.riscv.config.elf.debug.2086971888" name="dbg">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-548012040577782093" id="ilg.gnumcueclipse.managedbuild.cross.riscv.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT RISC-V Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>

View File

@ -4,20 +4,15 @@ Series=CH32V307
RTOS=NoneOS
MCU=CH32V307RVT6
Link=WCH-Link
PeripheralVersion============1.4
Description============ROM(byte): 256K, SRAM(byte): 64K, CHIP PINS: 64, GPIO PORTS: 51.\nWCH CH32V3 series of mainstream MCUs covers the needs of a large variety of applications in the industrial,medical and consumer markets. High performance with first-class peripherals and low-power,low-voltage operation is paired with a high level of integration at accessible prices with a simple architecture and easy-to-use tools.
PeripheralVersion=============1.4
Description=============ROM(byte): 256K, SRAM(byte): 64K, CHIP PINS: 64, GPIO PORTS: 51.\nWCH CH32V3 series of mainstream MCUs covers the needs of a large variety of applications in the industrial,medical and consumer markets. High performance with first-class peripherals and low-power,low-voltage operation is paired with a high level of integration at accessible prices with a simple architecture and easy-to-use tools.
Mcu Type=CH32V30x
Address=0x08000000
Target Path=obj\JT-DT-YD4N02A_RTT_MRS-4G.hex
Exe Path=
Exe Arguments=
CLKSpeed=1
DebugInterfaceMode=0
DebugInterfaceMode=-1
Erase All=true
Program=true
Verify=true
Reset=true
SDIPrintf=false
Disable Power Output=false
Clear CodeFlash=false
Disable Code-Protect=false

View File

@ -40,7 +40,7 @@
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.stopAt" value="handle_reset" />
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.pcRegister" value="" />
<stringAttribute key="com.mounriver.debug.gdbjtag.svdPath" value="${eclipse_home}template/wizard/WCH/RISC-V/CH32V307/NoneOS/CH32V307xx.svd" />
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="obj/JT-DT-YD4N02A_RTT_MRS-4G.elf"/>
<stringAttribute key="org.eclipse.cdt.launch.PROGRAM_NAME" value="obj\JT-DT-YD4N02A_RTT_MRS-4G.elf" />
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_ATTR" value="JT-DT-YD4N02A_RTT_MRS-4G" />
<stringAttribute key="org.eclipse.cdt.launch.PROJECT_BUILD_CONFIG_ID_ATTR" value="" />
<stringAttribute key="org.eclipse.cdt.debug.gdbjtag.core.jtagDevice" value="GNU MCU OpenOCD" />
@ -48,13 +48,13 @@
<stringAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerLog" value="" />
<stringAttribute key="org.eclipse.cdt.launch.COREFILE_PATH" value="" />
<stringAttribute key="process_factory_id" value="org.eclipse.cdt.dsf.gdb.GdbProcessFactory" />
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?>\r\n&lt;memoryBlockExpressionList context=&quot;Context string&quot;/>\r\n"/>
<stringAttribute key="org.eclipse.dsf.launch.MEMORY_BLOCKS" value="&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot; standalone=&quot;no&quot;?&gt;\r\n&lt;memoryBlockExpressionList context=&quot;Context string&quot;/&gt;\r\n" />
<intAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerGdbPortNumber" value="3333" />
<intAttribute key="com.mounriver.debug.gdbjtag.openocd.gdbServerTelnetPortNumber" value="4444" />
<intAttribute key="org.eclipse.cdt.debug.gdbjtag.core.portNumber" value="3333" />
<intAttribute key="org.eclipse.cdt.launch.ATTR_BUILD_BEFORE_LAUNCH_ATTR" value="2" />
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="JT-DT-YD4N02A_RTT_MRS-4G"/>
<listEntry value="/JT-DT-YD4N02A_RTT_MRS-4G" />
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="4" />

View File

@ -461,8 +461,8 @@ int main(void)
{
Flash_Write_Record(kRecordSensoEndOfLife);
}
// LED_Y_END_OF_LIFE;
Send_Laser_Alarm_Event(kNormalDetectionEvents);
LED_Y_END_OF_LIFE;
// Send_Laser_Alarm_Event(kNormalDetectionEvents);
}
}
}

View File

@ -202,7 +202,7 @@ struct Nt26k_Ops
extern struct Nt26k_Ops nt26k_ops;
extern rt_sem_t nt26k_recv_sem;
extern rt_sem_t nt26k_recv_heart_sem;
extern rt_sem_t nt26k_recv_msg_sem;
extern rt_sem_t nt26k_disconnect_sem;
extern rt_uint8_t nt26k_conncet_tcp_flag;
extern rt_uint8_t nt26k_connect_sever_flag;

View File

@ -231,11 +231,12 @@ static void urc_tcp_recv(struct at_client *client, const char *data, rt_size_t s
(nt26k_ops.recv->recv_data.event_type == EVENT_TYPE_POWER_ON))
// 加这个的原因就是如果有指令下发,会出现两个信号量,指令会执行两次,所以排除心跳包才释放信号量
{
rt_sem_release(nt26k_recv_heart_sem);// 接收到的是心跳包
rt_sem_release(nt26k_recv_msg_sem);// 接收到的是心跳包
}
else
{
rt_sem_release(nt26k_recv_sem);
rt_sem_release(nt26k_recv_msg_sem);// 接收到的是心跳包
}
}
else

View File

@ -34,18 +34,17 @@ static rt_uint8_t uart4_rx_rb_data[UART4_RX_RB_LENGTH];
static rt_sem_t uart4_rx_ok_sem;
// static rt_timer_t uart4_rx_timer;
static struct rt_timer uart4_rx_timer1;
static struct rt_timer uart4_rx_timer;
uint8_t sensor_rx_count = 0; // 接收缓冲区中,已经收到的数据包数量
uint8_t sensor_rx_flag = 0; // 接收缓冲区中,已经收到的数据包数量
TsH308 H308 = {0};
void _UART4_RxTimeout(void *parameter)
{
sensor_rx_flag = 0;
rt_sem_release(uart4_rx_ok_sem);
// rt_timer_stop(uart4_rx_timer);
rt_timer_stop(&uart4_rx_timer1);
rt_timer_stop(&uart4_rx_timer);
}
static uint8_t H308_XorChecksum(char *str, int len)
@ -232,10 +231,10 @@ uint8_t IS_H308_EndOfLife(void)
H308.end_of_life = 1;
}
}
// else
// {
// H308.end_of_life = 0;
// }
else
{
H308.end_of_life = 0;
}
return H308.end_of_life;
}
@ -367,13 +366,8 @@ int BSP_H308_Init(void)
}
// TODO:这里改的静态
rt_timer_init(&uart4_rx_timer1, "_UART4_RxTimeout", _UART4_RxTimeout, RT_NULL, 200, RT_TIMER_FLAG_PERIODIC);
// rt_timer_start(&uart4_rx_timer1);
// uart4_rx_timer = rt_timer_create("_UART4_RxTimeout", _UART4_RxTimeout, RT_NULL, 200, RT_TIMER_FLAG_PERIODIC);
// if (uart4_rx_timer == RT_NULL)
// {
// LOG_E("uart4_rx_timer create failed");
// }
rt_timer_init(&uart4_rx_timer, "_UART4_RxTimeout", _UART4_RxTimeout, RT_NULL, 100, RT_TIMER_FLAG_PERIODIC);
UART4_Init();
rt_err_t ret = rt_thread_init(&h308_thread,
"h308_thread",
@ -407,9 +401,11 @@ void UART4_IRQHandler(void)
{
uint8_t temp = USART_ReceiveData(UART4);
lwrb_write(&uart4_rx_rb, &temp, 1);
// sensor_rx_count++;
// rt_timer_start(uart4_rx_timer);
rt_timer_start(&uart4_rx_timer1);
if (sensor_rx_flag == 0)
{
sensor_rx_flag = 1;
rt_timer_start(&uart4_rx_timer);
}
}
rt_interrupt_leave();

View File

@ -61,7 +61,7 @@ static struct rt_thread nt26k_life_thread;
struct rt_event at_device_event;
rt_sem_t nt26k_recv_sem;
rt_sem_t nt26k_recv_heart_sem; // 用于接收心跳信号
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; // 更新本地时间定时器
@ -767,6 +767,7 @@ const Nt26kEventInfo nt26k_event_info[] = {
int Nt26k_Process_Events(Nt26kEvent nt26k_recv_event, struct at_device *device, void *param)
{
rt_uint8_t max_retry_count = (rt_uint8_t)Flash_Get_SysCfg(kIotRetryId);
LOG_D("max_retry_count:%d\n", max_retry_count);
struct Nt26k_Ops *nt26k_ops = (struct Nt26k_Ops *)param;
const Nt26kEventInfo *event = RT_NULL;
@ -804,11 +805,9 @@ int Nt26k_Process_Events(Nt26kEvent nt26k_recv_event, struct at_device *device,
}
else
{
if ((rt_strcmp(event->event_name, "定时心跳事件") == RT_EOK) || (rt_strcmp(event->event_name, "上电心跳事件") == RT_EOK)) // 定时心跳是有回应的
if (rt_sem_take(nt26k_recv_msg_sem, 5000) == RT_EOK)
{
if (rt_sem_take(nt26k_recv_heart_sem, 5000) == RT_EOK)
{
LOG_D("收到心跳回复\n");
LOG_D("收到回复\n");
nt26k_connect_sever_flag = 1;
return RT_EOK; // 函数执行完毕返回0
}
@ -816,8 +815,7 @@ 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;
continue;
}
return RT_EOK;
}
}
if (rt_strcmp(event->event_name, "掉电事件") == RT_EOK)
@ -1574,10 +1572,10 @@ int BSP_Nt26k_Thread_Init(void)
{
LOG_E("nt26k_recv_sem create failed");
}
nt26k_recv_heart_sem = rt_sem_create("nt26k_recv_heart", 0, RT_IPC_FLAG_PRIO);
if (nt26k_recv_heart_sem == RT_NULL)
nt26k_recv_msg_sem = rt_sem_create("nt26k_recv_heart", 0, RT_IPC_FLAG_PRIO);
if (nt26k_recv_msg_sem == RT_NULL)
{
LOG_E("nt26k_recv_heart_sem create failed");
LOG_E("nt26k_recv_msg_sem create failed");
}
nt26k_disconnect_sem = rt_sem_create("nt26k_life", 0, RT_IPC_FLAG_PRIO);
if (nt26k_disconnect_sem == RT_NULL)

View File

@ -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 //打开所有的终端测试程序
@ -156,10 +156,10 @@
#define AT_USING_CLIENT
#define AT_CLIENT_NUM_MAX 1
#ifdef FINSH_USING_AUTH
// #ifdef FINSH_USING_AUTH
#define AT_USING_CLI
#define AT_PRINT_RAW_CMD
#endif
// #endif
#define AT_CMD_MAX_LEN 256
#define AT_SW_VERSION_NUM 0x10301