
282 MAKING THINGS TALK
»
void getRMC(String[] data) {
// move the items from the string into the variables:
int time = int(data[1]);
// first two digits of the time are hours:
hrs = time/10000;
// second two digits of the time are minutes:
mins = (time%10000)/100;
// last two digits of the time are seconds:
secs = (time%100);
The serialEvent() method gets any
incoming data as usual, and passes it
off to a method called parseString().
That method splits the incoming string
into all the parts of the GPS sentence.
If it’s a GPRMC sentence, it passes it to
a method, getRMC() to handle it. If you
were writing a more universal parser,
you’d write similar methods for each
type of sentence.
8
The getRMC() method converts
the latitude, longitude, and other
numerical parts of the sentence into
numbers.
8
The draw() method prints the
readings in the window, and calls
another method, drawArrow() to draw
the arrow and circle.
8
void draw() {
background(0);
// make the text white:
fill(255);
// print the date and time from the GPS sentence:
text(thisMonth+ "/"+ thisDay+ "/"+ thisYear , 50, 30);
text(hrs+ ":"+ mins+ ":"+ secs + " GMT ", 50, 50);
// print the position from the GPS sentence:
text(latitude + " " + northSouth + ", " +longitude +" "+ eastWest,
50, 70);
text("heading " + heading + " degrees", 50,90);
// draw an arrow using the heading:
drawArrow(heading);
}
void