基本信息
源码名称:公交车GPS报站系统设计
源码大小:0.17M
文件格式:.zip
开发语言:C/C++
更新时间:2020-08-09
友情提示:(无需注册或充值,赞助后即可获取资源下载链接)
嘿,亲!知识可是无价之宝呢,但咱这精心整理的资料也耗费了不少心血呀。小小地破费一下,绝对物超所值哦!如有下载和支付问题,请联系我们QQ(微信同号):813200300
本次赞助数额为: 2 元×
微信扫码支付:2 元
×
请留下您的邮箱,我们将在2小时内将文件发到您的邮箱
源码介绍
typedef struct SaveData
{
char GPS_Buffer[GPS_Buffer_Length];
char isGetData; //是否获取到GPS数据
char isParseData; //是否解析完成
char UTCTime[UTCTime_Length]; //UTC时间
char latitude[latitude_Length]; //纬度
char N_S[N_S_Length]; //N/S
char longitude[longitude_Length]; //经度
char E_W[E_W_Length]; //E/W
char local_data[local_data_length];
char isUsefull; //定位信息是否有效
} xdata _SaveData;
//中断接收GPS模块的数据,并进行解析,放入结构体对应变量中
void RECEIVE_DATA(void) interrupt 4 using 3
{
unsigned char temp = 0;
char i = 0;
ES=0;
RI=0;
temp = SBUF;
if(temp == '$')
{
RX_Count = 0;
}
if(RX_Count <= 5)
{
gpsRxBuffer[RX_Count ] = temp;
}
else if(gpsRxBuffer[0] == '$' && gpsRxBuffer[4] == 'M' && gpsRxBuffer[5] == 'C')
//确定是否收到"GPRMC/GNRMC"这一帧数据
{
gpsRxBuffer[RX_Count ] = temp;
if(temp == '\n')
{
memset(Save_Data.GPS_Buffer, 0, GPS_Buffer_Length); //清空
memcpy(Save_Data.GPS_Buffer, gpsRxBuffer, RX_Count);
//保存数据
Save_Data.isGetData = true;
RX_Count = 0;
memset(gpsRxBuffer, 0, gpsRxBufferLength); //清空
}
if(RX_Count >= 75)
{
RX_Count = 75;
gpsRxBuffer[RX_Count] = '\0';//添加结束符
}
}
ES=1;
}
随着科技的发展和人们日益增长的消费需求,GPS定位系统在生活中的地位越来越重要。GPS定位系统凭借实时性好、精度高、自动化程度高、定位效率高等突出优点,已经在许多领域得到广泛应用,国内北斗定位系统更是发展迅速,在车辆监控与定位系统中应用较多,在儿童、车辆防丢等方面的应用也越来越广。许多定位模块采用北斗和GPS双模,与GPS或北斗单模定位的区别是提取定位信息的关键字不同,其应用方法一致,为了项目描述方便,本项目以介绍GPS模块为主;项目中对GPS模块和MP3语音播报模块的原理及单片机工作流程进行了详细解析,适合各种基础的读者学习。该项目难度一般,应用场合较多,非常值得学习。
typedef struct SaveData
{
char GPS_Buffer[GPS_Buffer_Length];
char isGetData; //是否获取到GPS数据
char isParseData; //是否解析完成
char UTCTime[UTCTime_Length]; //UTC时间
char latitude[latitude_Length]; //纬度
char N_S[N_S_Length]; //N/S
char longitude[longitude_Length]; //经度
char E_W[E_W_Length]; //E/W
char local_data[local_data_length];
char isUsefull; //定位信息是否有效
} xdata _SaveData;
//中断接收GPS模块的数据,并进行解析,放入结构体对应变量中
void RECEIVE_DATA(void) interrupt 4 using 3
{
unsigned char temp = 0;
char i = 0;
ES=0;
RI=0;
temp = SBUF;
if(temp == '$')
{
RX_Count = 0;
}
if(RX_Count <= 5)
{
gpsRxBuffer[RX_Count ] = temp;
}
else if(gpsRxBuffer[0] == '$' && gpsRxBuffer[4] == 'M' && gpsRxBuffer[5] == 'C')
//确定是否收到"GPRMC/GNRMC"这一帧数据
{
gpsRxBuffer[RX_Count ] = temp;
if(temp == '\n')
{
memset(Save_Data.GPS_Buffer, 0, GPS_Buffer_Length); //清空
memcpy(Save_Data.GPS_Buffer, gpsRxBuffer, RX_Count);
//保存数据
Save_Data.isGetData = true;
RX_Count = 0;
memset(gpsRxBuffer, 0, gpsRxBufferLength); //清空
}
if(RX_Count >= 75)
{
RX_Count = 75;
gpsRxBuffer[RX_Count] = '\0';//添加结束符
}
}
ES=1;
}