237 lines
10 KiB
C
237 lines
10 KiB
C
![]() |
#include "ec20gnss.h"
|
|||
|
#include <stdlib.h>
|
|||
|
#include "syslib.h"
|
|||
|
|
|||
|
/********************************************************************************
|
|||
|
* @file ec20gnss.c
|
|||
|
* @author <EFBFBD>̳ϿƼ<EFBFBD> Mr.Wang
|
|||
|
* @version V1.0.0
|
|||
|
* @date 9-Jan-2021
|
|||
|
* @brief Quectelģ<EFBFBD><EFBFBD>EC20<EFBFBD><EFBFBD> GNSSȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>λϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
******************************************************************************
|
|||
|
* @attention
|
|||
|
* EC20ģ<EFBFBD><EFBFBD>֧<EFBFBD>ֶඨλϵͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><EFBFBD>ʹ<EFBFBD><EFBFBD>GPS<EFBFBD><EFBFBD><EFBFBD>ǽ<EFBFBD><EFBFBD>ж<EFBFBD>λ
|
|||
|
*******************************************************************************/
|
|||
|
|
|||
|
/*****************************************
|
|||
|
*ec20 GNSS <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD>ʹ<EFBFBD>ó<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
****************************************/
|
|||
|
#define GNSS_CMDPACK_LEN 128 //EC20 GNSS<53><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
NMEARMC_s sRMCData ; //NMEARMC_s<5F>ṹ<EFBFBD><E1B9B9>ȫ<EFBFBD><C8AB> <20><><EFBFBD>ڴ<EFBFBD><DAB4><EFBFBD>NMEA<45><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD>RMC<4D><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
/********************************************************
|
|||
|
ec20ģ<EFBFBD><EFBFBD> GNSS <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ATָ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
*********************************************************/
|
|||
|
enum eGnssCmdNum
|
|||
|
{
|
|||
|
OPENNMEA =0, SELFOPENGNSS = 1, OPENGNSS =2, QUERYRMC =3 , CLOSEGNSS =4
|
|||
|
} ; //ö<><C3B6>ec20ģ<30><C4A3>GNSS<53><53><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>
|
|||
|
|
|||
|
volatile EC20_CMD_DATA_s sGnssCmd[11]=
|
|||
|
{
|
|||
|
// cmdNum cmdStr, timeout(100ms), trueStr, trueOffset falseStr revResult rtyNum
|
|||
|
{OPENNMEA, "AT+QGPSCFG=\"nmeasrc\",1\r\n", 3, "OK" , -1, "ERROR", TIMEOUT, 2 }, //<2F><><EFBFBD><EFBFBD>ͨ<EFBFBD><CDA8> AT+QGPSGNMEA <20><>ȡ NMEA <20><><EFBFBD><EFBFBD>
|
|||
|
{SELFOPENGNSS, "AT+QGPSCFG=\"autogps\",1\r\n", 3, "OK" , -1, "ERROR", TIMEOUT, 2 }, //<2F><><EFBFBD><EFBFBD>GNSS<53><53><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
{OPENGNSS, "AT+QGPS=1\r\n", 3, "OK" , -1, "ERROR", TIMEOUT, 2 }, //<2F><><EFBFBD><EFBFBD>GNSS
|
|||
|
{QUERYRMC, "AT+QGPSGNMEA=\"RMC\"\r\n", 3, "+QGPSGNMEA: $GPRMC" , -1, "ERROR", TIMEOUT, 2 }, //<2F><>ȡ NMEA <20><><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>RMC
|
|||
|
{CLOSEGNSS, "AT+QGPSEND\r\n", 3, "OK" , -1, "ERROR", TIMEOUT, 2 } //<2F>ر<EFBFBD>GNSS
|
|||
|
} ; //EC20ģ<30><C4A3>NET<45><54><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD>EC20_CMD_DATA_s<5F>ṹ<EFBFBD><E1B9B9><EFBFBD><EFBFBD><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD>
|
|||
|
|
|||
|
/**************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> static inline const char *GnssCmdNumToString(enum eGnssCmdNum result)
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ö<EFBFBD>ٳ<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD>롣
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> eGnssCmdNum<EFBFBD><EFBFBD><EFBFBD>͵<EFBFBD>ö<EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Ϊö<EFBFBD>ٵij<EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
|||
|
**************************************************************************************************/
|
|||
|
static inline const char *GnssCmdNumToString(enum eGnssCmdNum result)
|
|||
|
{
|
|||
|
switch (result)
|
|||
|
{
|
|||
|
ENUM_CHIP_TYPE_CASE(OPENNMEA)
|
|||
|
ENUM_CHIP_TYPE_CASE(SELFOPENGNSS)
|
|||
|
ENUM_CHIP_TYPE_CASE(OPENGNSS)
|
|||
|
ENUM_CHIP_TYPE_CASE(QUERYRMC)
|
|||
|
ENUM_CHIP_TYPE_CASE(CLOSEGNSS)
|
|||
|
}
|
|||
|
ErrorLogPrintf("EC20 <20><>ЧeGnssCmdNum!") ;
|
|||
|
return "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
|
|||
|
}
|
|||
|
|
|||
|
/**************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> RunResult EC20_SendGnssCmd( uint8_t cmdNum, char *format,... )
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> MCU<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>EC20<EFBFBD><EFBFBD><EFBFBD><EFBFBD>GNSS<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param1 cmdNum EC20_CMD_DATA_s<EFBFBD><EFBFBD>cmdNum<EFBFBD><EFBFBD>Ա<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param2 char *format,... <EFBFBD>ɱ<EFBFBD><EFBFBD>α<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param1 status RunResultö<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
**************************************************************************************************/
|
|||
|
RunResult EC20_SendGnssCmd( uint8_t cmdNum, char *format,... )
|
|||
|
{
|
|||
|
uint8_t revTimes = 0 ;
|
|||
|
RunResult status = TIMEOUT ;
|
|||
|
uint8_t retryTimes = sGnssCmd[cmdNum].rtyNum ;
|
|||
|
char *cmdPack = NULL ;
|
|||
|
format = sGnssCmd[cmdNum].cmdStr ;
|
|||
|
cmdPack = portMalloc(GNSS_CMDPACK_LEN*sizeof(uint8_t)) ;
|
|||
|
va_list ap;
|
|||
|
va_start (ap, format);
|
|||
|
int outLen = vsnprintf(cmdPack, GNSS_CMDPACK_LEN, (const char*)format, ap); //vsprintf (temp, cmd, ap); //<2F><><EFBFBD><EFBFBD>Ϊֹ<CEAA><D6B9><EFBFBD><EFBFBD><EFBFBD>еIJ<D0B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ܵ<EFBFBD>temp<6D><70>
|
|||
|
if((outLen<=0)||( outLen > GNSS_CMDPACK_LEN)) //vsprintf (temp, cmd, ap); //<2F><><EFBFBD><EFBFBD>Ϊֹ<CEAA><D6B9><EFBFBD><EFBFBD><EFBFBD>еIJ<D0B5><C4B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD>ܵ<EFBFBD>temp<6D><70>
|
|||
|
{
|
|||
|
ErrorLogPrintf("%s,%d:cmdPack spillover<65><72>",__FILE__, __LINE__) ; //<2F><><EFBFBD><EFBFBD>NET_CMDPACK_LEN<45><4E>ֵ
|
|||
|
status = RUNERR ;
|
|||
|
goto netCmdOut ;
|
|||
|
}
|
|||
|
while(retryTimes--)
|
|||
|
{
|
|||
|
Ec20AtBufReset() ;
|
|||
|
revTimes = 0 ;
|
|||
|
//UARTx_Printf(EC20_UART, (uint8_t *)"%s", (uint8_t *)cmdPack);
|
|||
|
UARTx_SendData(EC20_UART, cmdPack, outLen) ; //DMA<4D><41><EFBFBD><EFBFBD>
|
|||
|
while( revTimes++ < sGnssCmd[cmdNum].timeout )
|
|||
|
{
|
|||
|
Wait_For_Nms(100);
|
|||
|
sGnssCmd[cmdNum].trueOffset = kmp(ec20AtBuf, sGnssCmd[cmdNum].trueStr) ;
|
|||
|
if( sGnssCmd[cmdNum].trueOffset >= 0)
|
|||
|
{
|
|||
|
status = RUNOK ;
|
|||
|
goto netCmdOut ;
|
|||
|
}
|
|||
|
else if( kmp(ec20AtBuf, sGnssCmd[cmdNum].falseStr) >= 0)
|
|||
|
{
|
|||
|
status = RUNERR ;
|
|||
|
goto netCmdOut ;
|
|||
|
}
|
|||
|
}
|
|||
|
Wait_For_Nms( 1000 ) ;
|
|||
|
}
|
|||
|
netCmdOut:portFree(cmdPack) ;
|
|||
|
va_end (ap);
|
|||
|
DebugLogPrintf("%s %s", GnssCmdNumToString((enum eGnssCmdNum)cmdNum), RunResultToString(status) ) ;
|
|||
|
return (status) ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
/**************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> RunResult EC20GnssConfig(void)
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> EC20 GNSS<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>Ҫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͨ<EFBFBD><EFBFBD> AT+QGPSGNMEA <EFBFBD><EFBFBD>ȡ NMEA <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param1 runResult RunResultö<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
**************************************************************************************************/
|
|||
|
RunResult EC20GnssConfig(void)
|
|||
|
{
|
|||
|
RunResult runResult = EC20_SendGnssCmd(OPENNMEA, NULL ) ;
|
|||
|
return (runResult) ;
|
|||
|
}
|
|||
|
|
|||
|
/**************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> RunResult EC20SelfOpenGnss(void)
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> EC20 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>GNSS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param1 runResult RunResultö<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
**************************************************************************************************/
|
|||
|
RunResult EC20SelfOpenGnss(void)
|
|||
|
{
|
|||
|
RunResult runResult = EC20_SendGnssCmd(SELFOPENGNSS, NULL ) ;
|
|||
|
return (runResult) ;
|
|||
|
}
|
|||
|
|
|||
|
/**************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> RunResult EC20OpenGnss(void)
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> EC20 <EFBFBD><EFBFBD><EFBFBD><EFBFBD>EC20 GNSS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param1 runResult RunResultö<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
**************************************************************************************************/
|
|||
|
RunResult EC20OpenGnss(void)
|
|||
|
{
|
|||
|
RunResult runResult = EC20_SendGnssCmd(OPENGNSS, NULL ) ;
|
|||
|
return (runResult) ;
|
|||
|
}
|
|||
|
|
|||
|
/**************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> RunResult EC20CloseGnss(void)
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> EC20 <EFBFBD>ر<EFBFBD>EC20 GNSS<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param1 runResult RunResultö<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
**************************************************************************************************/
|
|||
|
RunResult EC20CloseGnss(void)
|
|||
|
{
|
|||
|
RunResult runResult = EC20_SendGnssCmd(CLOSEGNSS, NULL ) ;
|
|||
|
return (runResult) ;
|
|||
|
}
|
|||
|
|
|||
|
/**************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> RunResult EC20GnssQueryRMC(void)
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>ȡ NMEA <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD>RMC
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param1 runResult RunResultö<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>غ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>н<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
**************************************************************************************************/
|
|||
|
RunResult EC20GnssQueryRMC(NMEARMC_s *psNmeaRMC )
|
|||
|
{
|
|||
|
RunResult runResult = EC20_SendGnssCmd(QUERYRMC, NULL ) ;
|
|||
|
memset(psNmeaRMC, 0, sizeof(NMEARMC_s)) ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NMEARMC_s<5F><73><EFBFBD>ͱ<EFBFBD><CDB1><EFBFBD>
|
|||
|
if( runResult == RUNOK )
|
|||
|
{
|
|||
|
strtok(&ec20AtBuf[sGnssCmd[QUERYRMC].trueOffset], ",") ;
|
|||
|
strncpy(psNmeaRMC->utcTime, strtok(NULL, ","), sizeof(psNmeaRMC->utcTime) ) ; //<2F><><EFBFBD><EFBFBD>UTCʱ<43><CAB1>
|
|||
|
strncpy((char*)&psNmeaRMC->eGnssStatus, strtok(NULL, ","), 1 ) ; //<2F><><EFBFBD><EFBFBD>GNSS<53><53>λ״̬
|
|||
|
if( psNmeaRMC->eGnssStatus == ALREADY ) //<2F>Ѿ<EFBFBD><D1BE><EFBFBD>λ<EFBFBD>ɹ<EFBFBD>
|
|||
|
{
|
|||
|
strncpy(psNmeaRMC->latitude, strtok(NULL, ","), sizeof(psNmeaRMC->latitude) ) ; //<2F><><EFBFBD><EFBFBD>GNSS<53><53>λγ<CEBB><CEB3>ֵ
|
|||
|
strncpy((char*)&psNmeaRMC->eLatitudeDirect, strtok(NULL, ","), 1 ) ; //<2F><><EFBFBD><EFBFBD>GNSS<53><53>λγ<CEBB>ȷ<EFBFBD><C8B7><EFBFBD>
|
|||
|
strncpy(psNmeaRMC->longitude, strtok(NULL, ","), sizeof(psNmeaRMC->longitude) ) ; //<2F><><EFBFBD><EFBFBD>GNSS<53><53>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>ֵ
|
|||
|
strncpy((char*)&psNmeaRMC->eLongitudeDirect, strtok(NULL, ","), 1 ) ; //<2F><><EFBFBD><EFBFBD>GNSS<53><53>λ<EFBFBD><CEBB><EFBFBD>ȷ<EFBFBD><C8B7><EFBFBD>
|
|||
|
strncpy(psNmeaRMC->speed, strtok(NULL, ","), sizeof(psNmeaRMC->speed) ) ; //<2F><><EFBFBD><EFBFBD>GNSS<53><53>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ٶ<EFBFBD> <20><>λ<EFBFBD><CEBB><EFBFBD><EFBFBD>
|
|||
|
strncpy(psNmeaRMC->angDirect, strtok(NULL, ","), sizeof(psNmeaRMC->angDirect) ) ; //<2F><><EFBFBD><EFBFBD>GNSS<53><53>λ<EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>
|
|||
|
strncpy(psNmeaRMC->utcDate, strtok(NULL, ","), sizeof(psNmeaRMC->utcDate) ) ; //<2F><><EFBFBD><EFBFBD>GNSS<53><53>λUTC<54><43><EFBFBD><EFBFBD>
|
|||
|
}
|
|||
|
else //<2F><><EFBFBD>ڶ<EFBFBD>λ<EFBFBD>У<EFBFBD><D0A3><EFBFBD>ʾGPS<50>ź<EFBFBD><C5BA><EFBFBD>
|
|||
|
{
|
|||
|
runResult = TIMEOUT ;
|
|||
|
}
|
|||
|
}
|
|||
|
return (runResult) ;
|
|||
|
}
|
|||
|
|
|||
|
/**************************************************************************************************
|
|||
|
* <EFBFBD><EFBFBD> <EFBFBD>ƣ<EFBFBD> void RMCUtcToBJT(Calendar_u *puSetRTC, NMEARMC_s *psRMCData )
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD>˵<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD>GNSS<EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD>RMC<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>е<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD>ʱ<EFBFBD><EFBFBD>ת<EFBFBD><EFBFBD>Ϊ Calendar_u<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݸ<EFBFBD>ʽ
|
|||
|
* <EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
* @param1 puSetRTC Calendar_u<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
|||
|
* @param2 psRMCData NMEARMC_s<EFBFBD>ṹ<EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
|
|||
|
**************************************************************************************************/
|
|||
|
void RMCUtcToBJT(Calendar_u *puSetRTC, NMEARMC_s *psRMCData )
|
|||
|
{
|
|||
|
strncpy((char*)&puSetRTC->sCalendar.w_year[0], "20", 2 ) ;
|
|||
|
strncpy((char*)&puSetRTC->sCalendar.w_year[2], &psRMCData->utcDate[4], 2 ) ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
strncpy((char*)puSetRTC->sCalendar.w_month , &psRMCData->utcDate[2], 2 ) ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
strncpy((char*)puSetRTC->sCalendar.w_date , &psRMCData->utcDate[0], 2 ) ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
strncpy((char*)&puSetRTC->sCalendar.hour , &psRMCData->utcTime[0], 2 ) ; //<2F><><EFBFBD><EFBFBD>ʱ
|
|||
|
int hour = atoi((const char*)puSetRTC->sCalendar.hour) +8 ;
|
|||
|
puSetRTC->sCalendar.hour[0] = hour/10 + 0x30 ;
|
|||
|
puSetRTC->sCalendar.hour[1] = hour%10 + 0x30 ;
|
|||
|
|
|||
|
strncpy((char*)&puSetRTC->sCalendar.min , &psRMCData->utcTime[2], 2 ) ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
strncpy((char*)&puSetRTC->sCalendar.sec , &psRMCData->utcTime[4], 2 ) ; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
|||
|
puSetRTC->sCalendar.colon1 = puSetRTC->sCalendar.colon2 = '.' ;
|
|||
|
puSetRTC->sCalendar.dash1 = puSetRTC->sCalendar.dash2 = '-' ;
|
|||
|
puSetRTC->sCalendar.spacing = ' ' ;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|