From aac57c50c24aed1776566048819ad6945834be00 Mon Sep 17 00:00:00 2001 From: chen <15335560115@163.com> Date: 星期四, 14 十一月 2024 16:12:27 +0800 Subject: [PATCH] MK_GPS_4G定位手环V1.0版本,增加多数据读取功能,修改部分4G回复逻辑,修改部分充电保护4G重连逻辑 --- keil/include/src/TCPClient.c | 28 ++++++++++++++++++++++++---- 1 files changed, 24 insertions(+), 4 deletions(-) diff --git a/keil/include/src/TCPClient.c b/keil/include/src/TCPClient.c index 7c1ab71..6b46dfb 100644 --- a/keil/include/src/TCPClient.c +++ b/keil/include/src/TCPClient.c @@ -73,12 +73,17 @@ char applyid[10]; uint16_t receive_id; uint16_t g_com_position; +uint16_t g_com_num; static HIDO_INT32 TCPClient_DataProc(HIDO_UINT8 *_u8Data, HIDO_UINT32 _u32Len) { HIDO_CHAR *apcSplitStr[12]; HIDO_UINT32 u32SplitCnt = 0; HIDO_CHAR acResponse[200]; + HIDO_CHAR temp_acResponse[200]; + HIDO_CHAR acReadponse[200]; + HIDO_UINT32 datalenth; HIDO_UINT32 u32ResponseLen; + HIDO_UINT32 u32ReadResponseLen; LOG_INFO(TRACE_MODULE_APP, "收到数据\r\n"); @@ -87,15 +92,20 @@ { u32ResponseLen = snprintf(acResponse, sizeof(acResponse), "$setparaok,%s\r\n", \ _u8Data); - Socket_Send(l_i32TCPClientID, (HIDO_UINT8 *)acResponse, u32ResponseLen); + memcpy(temp_acResponse,acResponse,sizeof(acResponse)); + u32SplitCnt = HIDO_UtilStrSplit((HIDO_CHAR *)_u8Data, ',', apcSplitStr, HIDO_ARRARY_COUNT(apcSplitStr)); receive_id = HIDO_UtilHexStrToInt(apcSplitStr[1]); if(g_com_map[DEV_ID]==receive_id) { - g_com_position=HIDO_UtilStrToInt(apcSplitStr[2]); - g_com_map[g_com_position]=HIDO_UtilStrToInt(apcSplitStr[3]); - if(g_com_map[SEND_4G_SECOND]<30) + g_com_position=HIDO_UtilStrToInt(apcSplitStr[2]); + if(g_com_position!=CNT_RESTART&&g_com_position!=0&&g_com_position!=CNT_UPDATE) + { + Socket_Send(l_i32TCPClientID, (HIDO_UINT8 *)temp_acResponse, u32ResponseLen); + g_com_map[g_com_position]=HIDO_UtilStrToInt(apcSplitStr[3]); + } + if(g_com_map[SEND_4G_SECOND]<30) { gps_open_flag=0; gps_wait_count=0; @@ -170,6 +180,16 @@ receive_id = HIDO_UtilHexStrToInt(apcSplitStr[1]); if(g_com_map[DEV_ID]==receive_id) { + g_com_position=HIDO_UtilStrToInt(apcSplitStr[2]); + g_com_num= HIDO_UtilStrToInt(apcSplitStr[3]); + u32ReadResponseLen = snprintf(acReadponse, sizeof(acReadponse), "$replypara,%04x,%d", \ + receive_id,g_com_position); + for(uint16_t i=0;i<g_com_num;i++) + { + datalenth = sprintf((HIDO_CHAR *)&acReadponse[u32ReadResponseLen],",%d",g_com_map[g_com_position+i]); + u32ReadResponseLen += datalenth; + } + Socket_Send(l_i32TCPClientID, (HIDO_UINT8 *)acReadponse, u32ReadResponseLen); } } return HIDO_OK; -- Gitblit v1.9.3