var http = require('http');
var serialport = require('/var/lib/cloud9/examples/node_modules/serialport');
var nmea = require('/var/lib/cloud9/examples/node_modules/nmea');
var fs = require('fs');
var port = new serialport('/dev/tty1', {
baudrate: 115200,
parser: serialport.parsers.readline('\r\n')});
var stream = fs.createWriteStream('/tmp/out');
stream.once('open', function(fd) {
port.on('data',function(data){
// Not every line of data results in a successful parse
if (nmea.parse(data)) {
var loc = nmea.parse(data);
} else return;
// Match first NMEA GSV string
if (loc.type === 'satellite-list-partial') {
if (loc.msgNum === 1) {
stream.write("satsInView: " + loc.satsInView + '\n');
}
var ids = '';
for (var i=0; i < loc.satellites.length; i++) {
ids += loc.satellites[i].id + ',';
}ut
stream.write("Sats:" + ids + '\n');
}
// Match NMEA GGA string
if (loc.type === 'fix') {
stream.write(loc.latPole + loc.lat + " " + loc.lonPole + loc.lon + '\n');
// Convert ddmm.mmmm to degrees decimal
var deg = loc.lat.toString().slice(0,2);
var min = loc.lat.toString().slice(2)/60;
var d = parseFloat(deg) + parseFloat(min);
// Convert dddmm.mmmm to degrees decimal
var deg = loc.lon.toString().slice(0,3);
var min = loc.lon.toString().slice(3)/60;
var e = parseFloat(deg) + parseFloat(min);
stream.write(d.toFixed(4) + ", -" + e.toFixed(4) + "\n");
}
});
});