Re: How to Serial comm. wait for a string?
Hi elcrcp,
If you look in the PBP manual under "serin2" you will find the "input modifiers" table...
DEC{1...10} allows you to specify how many decimal digits to receive into the next variable.
So DEC2 latdeg,DEC2 latmin,wait(".")
will receive the next 2 decimal digits into the variable "latdeg" and then the following 2 decimal digits into "latmin"
There is also a "SKIP n" parameter to ignore the next "n" digits, etc. etc.
Code:
GPRMC VAR BYTE[64]
hh VAR BYTE 'hours
mm VAR BYTE 'minutes
ss VAR BYTE 'seconds
sss var word 'milliseconds
fix VAR WORD 'GPS fix
latdeg VAR BYTE 'degrees latitude
latmin VAR BYTE 'minutes latitude
latminn var word 'fractional minutes latitude
NS VAR BYTE 'north or south
londeg VAR BYTE 'degrees longitude
lonmin VAR BYTE 'minutes longitude
lonminn var word 'fractional minutes longitude
EW VAR BYTE 'east or west
Knots VAR byte 'speed in knots (units)
Knotss var byte 'speed in fractional knots
course var word 'heading
dy VAR BYTE 'day
mt VAR BYTE 'month
yr VAR BYTE 'year
above is how I defined my varialbes...
so if the latdeg value is between 0-255 it will fit within the "byte" sized variable even if it is 1,2 or 3 digits (ie 99, 127, 08, etc)
PS. I may not have correctly sized all the varibles (bit, byte or word) so use your own judgment there... I wrote that code a couple of years ago.
Since "course" could be anything between 0-359 degrees it would need to be bigger than a byte as a byte can only hold up to 255
hope that helps
Last edited by Heckler; - 25th December 2015 at 19:44.
Dwight
These PIC's are like intricate puzzles just waiting for one to discover their secrets and MASTER their capabilities.
Bookmarks