From 2ebb8217f43b69f491620423ea4d5d5944d1f91d Mon Sep 17 00:00:00 2001 From: yincheng.zhong <634916154@qq.com> Date: 星期六, 05 七月 2025 22:43:58 +0800 Subject: [PATCH] 格式化部分代码 --- keil/include/src/GPS.c | 328 ++++++++++++++++++++++++++++++------------------------ 1 files changed, 182 insertions(+), 146 deletions(-) diff --git a/keil/include/src/GPS.c b/keil/include/src/GPS.c index 9362494..639c630 100644 --- a/keil/include/src/GPS.c +++ b/keil/include/src/GPS.c @@ -7,14 +7,14 @@ #include "HIDO_Util.h" #include "HIDO_Debug.h" #include "HIDO_Timer.h" - +#include "DBG.h" #include "GPS.h" //#include "GPIO.h" #include "Uart.h" #include "WS2812.h" #define GPS_DBG(level, fmt, ...) HIDO_Debug(fmt, __VA_ARGS__) - -#define GPS_UART_RX_BUF_SIZE 1024 +#include <global_param.h> +#define GPS_UART_RX_BUF_SIZE 1000 #define GPS_UART_TX_BUF_SIZE (4) typedef enum @@ -40,7 +40,7 @@ static ST_GPSRecv l_stGPSRecv; static FN_GPSEventCallback l_fnGPSEventCallback; ST_GPS l_stGPS; - +static HIDO_UINT8 l_u8PosState = 0; /******************************************************************************* * Function Name : GPS_AddHours * Description : @@ -59,54 +59,54 @@ _pstGPS->m_u8Day++; switch (_pstGPS->m_u8Mon) { - case 1: - case 3: - case 5: - case 7: - case 8: - case 10: - if (_pstGPS->m_u8Day > 31) + case 1: + case 3: + case 5: + case 7: + case 8: + case 10: + if (_pstGPS->m_u8Day > 31) + { + _pstGPS->m_u8Day = 1; + _pstGPS->m_u8Mon++; + } + break; + case 2: + if (0 == (_pstGPS->m_u16Year % 4)) + { + if (_pstGPS->m_u8Day > 29) { _pstGPS->m_u8Day = 1; _pstGPS->m_u8Mon++; } - break; - case 2: - if (0 == (_pstGPS->m_u16Year % 4)) - { - if (_pstGPS->m_u8Day > 29) - { - _pstGPS->m_u8Day = 1; - _pstGPS->m_u8Mon++; - } - } - else - { - if (_pstGPS->m_u8Day > 28) - { - _pstGPS->m_u8Day = 1; - _pstGPS->m_u8Mon++; - } - } - break; - case 4: - case 6: - case 9: - case 11: - if (_pstGPS->m_u8Day > 30) + } + else + { + if (_pstGPS->m_u8Day > 28) { _pstGPS->m_u8Day = 1; _pstGPS->m_u8Mon++; } - break; - case 12: - if (_pstGPS->m_u8Day > 31) - { - _pstGPS->m_u8Day = 1; - _pstGPS->m_u8Mon = 1; - _pstGPS->m_u16Year++; - } - break; + } + break; + case 4: + case 6: + case 9: + case 11: + if (_pstGPS->m_u8Day > 30) + { + _pstGPS->m_u8Day = 1; + _pstGPS->m_u8Mon++; + } + break; + case 12: + if (_pstGPS->m_u8Day > 31) + { + _pstGPS->m_u8Day = 1; + _pstGPS->m_u8Mon = 1; + _pstGPS->m_u16Year++; + } + break; } } } @@ -478,64 +478,39 @@ uint8_t fangchai_flag; uint8_t GPS_ParseGGA_data[256]; uint8_t GPS_ParseGGA_changdu; -extern uint16_t g_com_map[256]; +uint8_t YUANGPS_ParseGGA_data[256]; +uint8_t YUANGPS_ParseGGA_changdu; +//extern uint16_t g_com_map[256]; extern uint8_t bat_percent; uint8_t gpsbaoxu; +extern uint8_t gps_ntripsend; +//static HIDO_UINT8 l_u8GPSBuff[512]; +//static HIDO_UINT32 l_u8GPSLen = 0; +//static HIDO_UINT32 l_u8GPSRecvTick = 0; +uint8_t gps_error1,gps_error2; static HIDO_INT32 GPS_ParseGGA(HIDO_CHAR *_pcData, HIDO_UINT32 _u32Len) { - uint16_t state_flag; ST_GPS stGPS; HIDO_DataStruct stPosState; - jinru_parsegga_flag=1; + memset(&stGPS, 0, sizeof(ST_GPS)); if (GPS_DataCheck(_pcData, _u32Len) != HIDO_OK) { + gps_error1++; return HIDO_ERR; } if (HIDO_UtilParseFormat((HIDO_UINT8 *) _pcData, _u32Len, "$%*,%*,%*,%*,%*,%*,%p,%*,%*,%*,%*,%*,%*,%*,%**", &stPosState) != 15) { + gps_error2++; return HIDO_ERR; } - if(*(HIDO_CHAR *)stPosState.m_pData != '0') - { -// HIDO_DebugString(_pcData, _u32Len); - if(l_fnGPSEventCallback != NULL) - { - l_fnGPSEventCallback(GPS_TYPE_GGA, _pcData, _u32Len); - } - rtkled=BLUE; - GPS_successful_flag=1; - _pcData[_u32Len-1]=0; - _pcData[_u32Len-2]=0; -// memcpy(GPS_data,_pcData, _u32Len-2);//去掉回车换行 - state_flag = 0; - state_flag = fangchai_flag; - - HIDO_UINT32 u32Len = HIDO_UtilSnprintf((HIDO_CHAR *)GPS_ParseGGA_data, sizeof(GPS_ParseGGA_data), "%s,%X,%02x,%x,%d,%d,%d,%d\r\n", - _pcData, g_com_map[2], bat_percent,0,0,0,state_flag,gpsbaoxu); - gpsbaoxu++; - GPS_ParseGGA_changdu=u32Len; - } - else - { - rtkled=RED; - GPS_successful_flag=0; - _pcData[_u32Len-1]=0; - _pcData[_u32Len-2]=0; -// memcpy(GPS_data,_pcData, _u32Len-2); - state_flag = 0; - state_flag = fangchai_flag; - - HIDO_UINT32 u32Len = HIDO_UtilSnprintf((HIDO_CHAR *)GPS_ParseGGA_data, sizeof(GPS_ParseGGA_data), "%s,%X,%02x,%x,%d,%d,%d,%d\r\n", - _pcData, g_com_map[2], bat_percent,0,0,0,state_flag,gpsbaoxu); - gpsbaoxu++; - GPS_ParseGGA_changdu=u32Len; - } - UDPClient_UploadGPS(); + l_u8PosState = atoi((HIDO_CHAR *)stPosState.m_pData); + return HIDO_OK; } + /******************************************************************************* * Function Name : GPS_ParseRMC @@ -570,7 +545,7 @@ } if (HIDO_UtilParseFormat((HIDO_UINT8 *) _pcData, _u32Len, "$%*,%p,%p,%p,%p,%p,%p,%p,%p,%p,%*,%*,%**", &stTimeData, &stStateData, - &stLatData, &stLatSignData, &stLonData, &stLonSignData, &stSpeedData, &stDirData, &stDateData) != 13) + &stLatData, &stLatSignData, &stLonData, &stLonSignData, &stSpeedData, &stDirData, &stDateData) != 13) { return HIDO_ERR; } @@ -581,7 +556,7 @@ } if (_pstGPS->m_eState != GPS_STATE_VALID) - { + { return HIDO_OK; } @@ -639,62 +614,127 @@ * Author : hido.ltd * Modified Date: : 2021年5月07日 *******************************************************************************/ +extern uint8_t GPS_UPLOAD_FLAG; +uint16_t GPS_UPload_sleep_flag=0; +uint8_t gpserror; HIDO_VOID GPS_RecvFsm(HIDO_UINT8 _u8RecvChar) { switch (l_stGPSRecv.m_eState) { - case GPS_RECV_STATE_IDLE: + case GPS_RECV_STATE_IDLE: + { + if ('$' == _u8RecvChar) { - if ('$' == _u8RecvChar) - { - l_stGPSRecv.m_eState = GPS_RECV_STATE_CR; - l_stGPSRecv.m_u32RecvLen = 0; - l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen++] = _u8RecvChar; - } - break; - } - case GPS_RECV_STATE_CR: - { + l_stGPSRecv.m_eState = GPS_RECV_STATE_CR; + l_stGPSRecv.m_u32RecvLen = 0; l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen++] = _u8RecvChar; - - if (l_stGPSRecv.m_u32RecvLen >= (sizeof(l_stGPSRecv.m_acRecvBuf) - 2)) - { - l_stGPSRecv.m_eState = GPS_RECV_STATE_IDLE; - break; - } - - if ('\r' == _u8RecvChar) - { - l_stGPSRecv.m_eState = GPS_RECV_STATE_LF; - } - - break; } - case GPS_RECV_STATE_LF: + break; + } + case GPS_RECV_STATE_CR: + { + l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen++] = _u8RecvChar; + + if (l_stGPSRecv.m_u32RecvLen >= (sizeof(l_stGPSRecv.m_acRecvBuf) - 2)) { - if ('\n' == _u8RecvChar) - { - l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen++] = _u8RecvChar; - l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen] = '\0'; - - if(strstr(l_stGPSRecv.m_acRecvBuf, "GGA,") != HIDO_NULL) - { - GPS_ParseGGA(l_stGPSRecv.m_acRecvBuf, l_stGPSRecv.m_u32RecvLen); - memset(l_stGPSRecv.m_acRecvBuf,0, l_stGPSRecv.m_u32RecvLen); - } - else if(strstr(l_stGPSRecv.m_acRecvBuf, "RMC,") != HIDO_NULL) - { - GPS_ParseRMC(l_stGPSRecv.m_acRecvBuf, l_stGPSRecv.m_u32RecvLen); - } - } - l_stGPSRecv.m_eState = GPS_RECV_STATE_IDLE; break; } - default: + + if ('\r' == _u8RecvChar) { - break; + l_stGPSRecv.m_eState = GPS_RECV_STATE_LF; } + + break; + } + case GPS_RECV_STATE_LF: + { + if ('\n' == _u8RecvChar) + { + l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen++] = _u8RecvChar; + l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen] = '\0'; +// l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen - 2] = '\0'; +// UDPClient_UploadGPS(l_stGPSRecv.m_acRecvBuf); + if(strstr(l_stGPSRecv.m_acRecvBuf, "GGA,") != HIDO_NULL) + { + GPS_ParseGGA(l_stGPSRecv.m_acRecvBuf, l_stGPSRecv.m_u32RecvLen); + l_stGPSRecv.m_acRecvBuf[l_stGPSRecv.m_u32RecvLen - 2] = '\0'; +// #ifdef UWB_CG + if(g_com_map[GPSENBLE]==0) + { +// UDPClient_UploadGPS(l_stGPSRecv.m_acRecvBuf); + } + else if(g_com_map[GPSENBLE]&&g_com_map[GPSFrequency]==1) + { + if (l_u8PosState >= 1) + { + UDPClient_UploadGPS(l_stGPSRecv.m_acRecvBuf); // + } + else if (l_u8PosState == 0) + { + if (++GPS_UPload_sleep_flag >= 60) + { + UDPClient_UploadGPS(l_stGPSRecv.m_acRecvBuf); + GPS_UPload_sleep_flag = 0; + } + } + } + else if(g_com_map[GPSENBLE]) + { + if (l_u8PosState >= 1) + { + if (++GPS_UPLOAD_FLAG >= g_com_map[GPSFrequency]) + { + UDPClient_UploadGPS(l_stGPSRecv.m_acRecvBuf); + GPS_UPLOAD_FLAG = 0; + } + } + else if (l_u8PosState == 0) + { + if (++GPS_UPload_sleep_flag >= 60) + { + UDPClient_UploadGPS(l_stGPSRecv.m_acRecvBuf); + GPS_UPload_sleep_flag = 0; + } + } + } + switch(l_u8PosState) + { + case 0: + rtkled = RED; + break; + case 1: + rtkled = BLUE; + break; + case 2: + rtkled = BLUE+GREEN; + break; + case 4: + rtkled = GREEN; + break; + case 5: + rtkled = YELLOW; + break; + default: + rtkled = WHITE; + break; + } + } + + else //if(strstr(l_stGPSRecv.m_acRecvBuf, "RMC,") != HIDO_NULL) + { + gpserror++; + } + } + + l_stGPSRecv.m_eState = GPS_RECV_STATE_IDLE; + break; + } + default: + { + break; + } } } @@ -781,9 +821,9 @@ { HIDO_UINT8 u8RecvChar = 0; - while (Uart_GetChar(UART_ID_GPS, &u8RecvChar) == HIDO_OK) + while (Uart_GetChar(UART_ID_DBG_GPS, &u8RecvChar) == HIDO_OK) { - GPS_RecvFsm(u8RecvChar); + GPS_RecvFsm(u8RecvChar); } } @@ -826,21 +866,17 @@ * Return : None * Author : hido.ltd *******************************************************************************/ -//HIDO_VOID GPS_Init(void) -//{ +HIDO_VOID GPS_Init(void) +{ + char str[19]= {"$POLCFGMSG,0,2,0\r\n"}; // GPS_PowerOn(); // GPS_Rest(); - -// ST_UartInit stInit; - -// stInit.m_eRxMode = UART_RX_MODE_INT; -// stInit.m_eTxMode = UART_TX_MODE_POLL; -// stInit.m_pu8RxBuf = l_au8GPSUartRxBuf; -// stInit.m_u32RxBufSize = GPS_UART_RX_BUF_SIZE; -// stInit.m_pu8TxBuf = l_au8GPSUartTxBuf; -// stInit.m_u32TxBufSize = GPS_UART_TX_BUF_SIZE; -// stInit.m_u32TxQueueMemberCnt = 2; -// Uart_Init(UART_ID_GPS, &stInit); - -// HIDO_UtilBzero(&l_stGPSRecv, sizeof(ST_GPSRecv)); -//} + uart_send(UART_ID1, str,19, NULL); + delay_ms(10); + sprintf(str,"$POLCFGMSG,0,1,0\r\n"); + uart_send(UART_ID1, str,19, NULL); + delay_ms(10); + sprintf(str,"$POLCFGSAVE\r\n"); + uart_send(UART_ID1, str,19, NULL); + delay_ms(10); +} -- Gitblit v1.9.3