MATLAB解析GPS数据程序文档格式.docx

上传人:b****6 文档编号:20219798 上传时间:2023-01-20 格式:DOCX 页数:15 大小:17.65KB
下载 相关 举报
MATLAB解析GPS数据程序文档格式.docx_第1页
第1页 / 共15页
MATLAB解析GPS数据程序文档格式.docx_第2页
第2页 / 共15页
MATLAB解析GPS数据程序文档格式.docx_第3页
第3页 / 共15页
MATLAB解析GPS数据程序文档格式.docx_第4页
第4页 / 共15页
MATLAB解析GPS数据程序文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

MATLAB解析GPS数据程序文档格式.docx

《MATLAB解析GPS数据程序文档格式.docx》由会员分享,可在线阅读,更多相关《MATLAB解析GPS数据程序文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

MATLAB解析GPS数据程序文档格式.docx

%串口翻开失败时使用此句

%delete(s);

clears%串口翻开失败时使用此句

serial3=serial('

COM3'

);

%串口设置

serial3.BytesAvailableFcnMode='

byte'

%serial3.InputBufferSize=38400;

%输出波特率

serial3.BaudRate=BaudRate;

%读入波特率

%serial3.OutputBufferSize=1024;

serial3.BytesAvailableFcnCount=BytesAvailableFcnCount;

serial3.ReadAsyncMode='

continuous'

serial3.Terminator=Terminator;

%%翻开串口

count_opentimes=1;

whilecontains(serial3.status,'

closed'

)>

0&

&

count_opentimes<

num_MaxTry

fopen(serial3);

%翻开串口

count_opentimes=count_opentimes+1;

end

ifcontains(serial3.status,'

open'

)<

1

disp('

opencomfailed!

'

return

%%读取并处理数据

%初始化

GPS_Data=GPS_Init();

while(num_execute>

0)

GPS_DataStrs=fread(serial3,num_SingleRead,'

char'

%一次读出10个字符

GPS_DataStrs=reshape(GPS_DataStrs,1,[]);

GPS_DataStrs=split_str2strs(GPS_DataStrs);

GPS_Data_tmp=get_GPS_specificData(GPS_DataStrs);

GPS_Data=Updata_GPU_Data(GPS_Data,GPS_Data_tmp);

show_GPS_Data(GPS_Data);

pause(Timedelay);

%延时

num_execute=num_execute-1;

%fprintf(s,'

abcd'

%给串口的发送数据

%fscanf(s);

%从串口的接收缓存读数据

%%关闭串口并删除相关数据

fclose(serial3);

%关闭串口

delete(serial3);

clearserial3

%%

%将字符串根据'

\r\n'

划分成多个子字符串,同时去掉首尾无用的剩余字符串

functionout_strs=split_str2strs(StrData)

ifcontains(class(StrData),'

uint8(StrData);

end

record=get_pos_enterflag(StrData);

ifStrData

(1)==uint8('

$'

)%开头为'

的情况

flag_start=1;

else

ifsize(record,2)>

0

flag_start=record

(1)+2;

out_strs=cell(0,0);

ifStrData(end)==13

flag_end=length(StrData)-1;

flag_end=record(end)-1;

ifflag_start>

=flag_end

StrData=StrData(flag_start:

flag_end);

%截取有效数据,方便下面划分子字符串

num_strs=size(record,2)+1;

out_strs=cell(num_strs,1);

ifnum_strs>

out_strs{1,1}=char(StrData(1:

record

(1)-1));

ifnum_strs==2

out_strs{num_strs,1}=char(StrData(record

(1)+2:

end));

fori=2:

num_strs-1

out_strs{i,1}=char(StrData(record(i-1)+2:

record(i)-1));

out_strs{num_strs,1}=char(StrData(record(i)+2:

out_strs{1,1}=char(StrData);

%得到字符串中'

在字符串中的位置(实际为'

\r'

的位置)

functionrecord=get_pos_enterflag(data)

record=[];

%记录回车符号位置

forii=1:

length(data)-1

ifdata(ii)==13

ifdata(ii+1)==10

record=[record,ii];

ii=ii+1;

%得到具体GPS结构体数据

functionGPS_Data_tmp=get_GPS_specificData(StrsData)

GPS_Data_tmp=[];

num_str=size(StrsData,1);

fori=1:

num_str

str_tab=StrsData{i,1};

ifcontains(str_tab,'

GGA'

GPS_Data_tmp=GNGGA(str_tab);

elseifcontains(str_tab,'

GSA'

GPS_Data_tmp=GNGSA(str_tab);

GSV'

GPS_Data_tmp=GNGSV(str_tab);

RMC'

GPS_Data_tmp=GNRMC(str_tab);

VTG'

GPS_Data_tmp=GNVTG(str_tab);

GLL'

GPS_Data_tmp=GNGLL(str_tab);

%GPS字符串解析

functionGPS_Data_tmp=GNGGA(str_tab)

index=strfind(str_tab,'

'

count=1;

Time=str_tab(index(count)+1:

index(count+1)-1);

count=count+1;

Latitude=str_tab(index(count)+1:

=str_tab(index(count)+1:

Longitude=str_tab(index(count)+1:

%other=str_tab(index(count)+1:

end);

%进一步处理

=Time(1:

2);

=Time(3:

4);

=Time(5:

6);

=Time(8:

10);

=Latitude(1:

%纬度

=Latitude(3:

tmp=str2double(Latitude(6:

9));

tmp=tmp*6/1000;

%tmp=tmp/10000*60;

=num2str(floor(tmp));

=num2str((tmp-floor(tmp))*10000);

=Longitude(1:

3);

%经度

=Longitude(4:

5);

tmp=str2double(Longitude(7:

10));

%UTC时间转换为北京时间

hour=;

ifstr2num(hour)+8>

=24

=num2str(str2num(hour)+8-24);

=num2str(str2num(hour)+8);

functionGPS_Data_tmp=GNGSA(str_tab)

functionGPS_Data_tmp=GNGSV(str_tab)

%此语句为与卫星有关的信息〔包括卫星方位,卫星编号〕

%暂时用不着,不处理

functionGPS_Data_tmp=GNRMC(str_tab)

Date=str_tab(index(count)+1:

=Date(1:

=Date(3:

=Date(5:

functionGPS_Data_tmp=GNVTG(str_tab)

functionGPS_Data_tmp=GNGLL(str_tab)

%更新获取到的相关数据

functionGPS_Data=Updata_GPU_Data(GPS_Data,GPS_Data_tmp)

%用不到的数据可以注释掉

ifisfield(GPS_Data_tmp,'

Time'

)==1

=;

DATE'

Latitude'

LatitudeDir'

Longitude'

LongitudeDir'

GPSState'

SatelliteNum'

speed'

velocity'

LocationState'

altitude'

CurState'

LocationMode'

HDOP'

VDOP'

PDOP'

TrueDir'

MagneticAngle'

MagneticDir'

ReferenceTrueDir'

RelativeDir'

ReferenceRelativeDir'

step'

stepflag'

PRN'

%显示相关GPS数据

functionshow_GPS_Data(GPS_Data)

DataA

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 经济学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1