GPS bil tracker med Intel Edison (4 / 5 steg)
Steg 4: Källkod
Under den enkla kod jag skrev som gör följande:
- Fånga GPS-info
- Leta efter $GPGGA posten (mer information om NMEA i http://gpsinformation.org/dale/nmea.htm
- Samla in latitud och longitud / konvertera från NMEA-december
- Generera en Google Maps-länk med GPS-info
Eftersom Google Maps API kräver en nyckel, jag skapade en men jag utelämnat gruva i koden. Se till att skapa en API-nyckel för dig genom följande https://developers.google.com/maps/documentation/static-maps/
/ * jslint nod: true, vars:true, bitvis: true, unparam:true * /
/ * jshint oanvända: sant * /
Lämna ovanstående rader för propper jshinting
var GPSSensor = require('jsupm_ublox6');
var myGPSSensor = ny GPSSensor.Ublox6(0);
setTimeout(getGPSInfo(), 1000);
om (! myGPSSensor.setupTty(GPSSensor.int_B9600)) {
Console.log ("misslyckades att installera tty port parametrar");
process.Exit(0);
}
bufferLength = 256;
var nmeaBuffer = ny GPSSensor.charArray(bufferLength);
funktion getGPSInfo() {
om (myGPSSensor.dataAvailable()) {
var rv = myGPSSensor.readData (nmeaBuffer, bufferLength);
var GPSData, dataCharCode, isNewLine, lastNewLine;
var numlines = 0;
om (rv > 0) {
GPSData = "";
Läs bara antalet tecken
anges av myGPSSensor.readData
för (var x = 0; x < rv; x ++) {
var data = nmeaBuffer.getitem(x);
GPSData += data.
}
Console.log(processData(GPSData));
}
om (rv < 0) {/ / några slags läsa fel uppstod
Console.log ("Port läsa fel.");
process.Exit(0);
}
}
}
funktion processData(rawData) {
var data = rawData.split(",");
var index = data.indexOf("$GPGGA");
var lat = data [index + 2];
var lon = data [index + 4];
var latDec = convertNmeaToDec(lat);
var lonDec = convertNmeaToDec(lon);
om (data [index + 3] == "S") latDec = latDec * -1;
om (data [index + 4] == "W") lonDec = lonDec * -1;
var url = "https://maps.googleapis.com/maps/api/staticmap?center=";
URL += - latDec;
URL += ",";
URL += - lonDec;
URL += "& zoom = 14 & storlek = 600 x 300 & nyckel = *** API nyckel UTELÄMNAT! PLATS DU EGEN NYCKEL HÄR *** ";
retur-url;
} < /p >< p > / / funktion för att konvertera formatet NMEA från GPS till Decimal
Denna funktion behövs för att visa i Google Maps.
Tack vare http://www.tma.dk/gps/
funktion convertNmeaToDec(nmea) {
var deg = (nmea / 100);
var decPos = deg + ((nmea - (deg * 100)) / 60);
återvända decPos;
}
Skriva ut meddelande när programmet avslutas
process.on (SIGINT, function() {
Console.log("Exiting...");
process.Exit(0);
});