This MATLAB® example shows you how to configure and control external hardware in MATLAB. Specifically, we show how to use MATLAB to communicate with a Garmin® handheld Global Positioning System (GPS) receiver with an RS-232 serial interface.
MATLAB supports serial devices including RS-232 using the Instrument Control Toolbox™. In the article, we describe how to use a graphical user interface called TMTool to locate, configure, and control the hardware without writing MATLAB script. We also show how to create drivers to incorporate lower level commands.
Is there a simulink equivalent for reading and parsing NMEA strings from a Garmin or other GPS unit?
07 Jun 2007
Oleg Zariasnki
The good job.
I have made the same script, but using differen NMEA word and obtain information about time and velocity too.
The codes modifies strings looks like:
data='';
while isempty(strmatch('$GPRMC',data))
data = fscanf(obj1);
end
ii=findstr(data,',');
UTC=data(ii(1)+1:ii(2)-1);
Time=str2num(UTC(1:2))*3600;
Time=Time+str2num(UTC(3:4))*60;
Time=Time+str2num(UTC(5:end));
...
Latitude=data(ii(3)+1:ii(4)-1);
Lat=str2num(Latitude(1:2));
Lat=Lat+str2num(Latitude(3:end))/60;
NS=data(ii(4)+1:ii(5)-1);
if (NS == 'S')|(NS == 's')
Lat=-Lat;
end
Longitude=data(ii(5)+1:ii(6)-1);
Long=str2num(Longitude(1:3));
Long=Long+str2num(Longitude(4:end))/60;
EW=data(ii(6)+1:ii(7)-1);
if (EW == 'W')|(EW == 'w')
Long=360-Long;
end
...
And so one.
For displaying there is enough to show simply Latitude and Longitude with N or S, E or W, but to calculation better transfer coordinates.
The same is with time.
I know, that my code is not optimal, but it reads only required information.