ATGM332D-5N中科微型电子,和32单片机F103的开发板连接使用,使用串口输出位置信息,下载程序后只显示welcome to use,不能解析位置数据,哪位老师知道这是怎么回事,又改如何解决呢,多谢解答!
解析如下所示:
程序如下所示:
#include "stm32f10x.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
//éùÃ÷
void errorLog(int num);
void parseGpsBuffer(void);
void printGpsBuffer(void);
int main(void)
{
delay_init();
NVIC_Configuration();
uart_init(9600);
Init_LEDpin();
LED1 = 1;
clrStruct();
printf("Welcome to use!\r\n");
printf("ILoveMcu.taobao.com!\r\n");
while(1)
{
parseGpsBuffer();
printGpsBuffer();
}
}
void errorLog(int num)
{
while (1)
{
printf("ERROR%d\r\n",num);
}
}
void parseGpsBuffer()
{
char *subString;
char *subStringNext;
char i = 0;
if (Save_Data.isGetData)
{
Save_Data.isGetData = false;
printf("**************\r\n");
printf(Save_Data.GPS_Buffer);
for (i = 0 ; i <= 6 ; i++)
{
if (i == 0)
{
if ((subString = strstr(Save_Data.GPS_Buffer, ",")) == NULL)
errorLog(1); //½aÎö′íÎó
}
else
{
subString++;
if ((subStringNext = strstr(subString, ",")) != NULL)
{
char usefullBuffer[2];
switch(i)
{
case 1:memcpy(Save_Data.UTCTime, subString, subStringNext - subString);break; //»ñè¡UTCê±¼ä
case 2:memcpy(usefullBuffer, subString, subStringNext - subString);break; //»ñè¡UTCê±¼ä
case 3:memcpy(Save_Data.latitude, subString, subStringNext - subString);break; //»ñè¡Î3¶èDÅÏ¢
case 4:memcpy(Save_Data.N_S, subString, subStringNext - subString);break; //»ñè¡N/S
case 5:memcpy(Save_Data.longitude, subString, subStringNext - subString);break; //»ñ衾-¶èDÅÏ¢
case 6:memcpy(Save_Data.E_W, subString, subStringNext - subString);break; //»ñè¡E/W
default:break;
}
subString = subStringNext;
Save_Data.isParseData = true;
if(usefullBuffer[0] == 'A')
Save_Data.isUsefull = true;
else if(usefullBuffer[0] == 'V')
Save_Data.isUsefull = false;
}
else
{
errorLog(2); //½aÎö′íÎó
}
}
}
}
}
void printGpsBuffer()
{
if (Save_Data.isParseData)
{
Save_Data.isParseData = false;
printf("Save_Data.UTCTime = ");
printf(Save_Data.UTCTime);
printf("\r\n");
if(Save_Data.isUsefull)
{
Save_Data.isUsefull = false;
printf("Save_Data.latitude = ");
printf(Save_Data.latitude);
printf("\r\n");
printf("Save_Data.N_S = ");
printf(Save_Data.N_S);
printf("\r\n");
printf("Save_Data.longitude = ");
printf(Save_Data.longitude);
printf("\r\n");
printf("Save_Data.E_W = ");
printf(Save_Data.E_W);
printf("\r\n");
}
else
{
printf("GPS DATA is not usefull!\r\n");
}
}
}
|