2014-05-06 5 views
6

Ich muss Daten von einem GPSMap 62-Gerät mithilfe der JavaScript-Bibliothek für die Gerätesteuerung lesen. Im Gegensatz zu älteren Geräten speichert dieses Gerät seine Wegpunkte jeden Tag in separaten GPX-Dateien. Die JavaScript-Bibliothek erwartet, dass sich alle Spuren und Wegpunkte in der Datei current.gpx befinden, aber die 62 speichert sie z. Wegpunkte_06-MAI-14.gpx und so weiter jeden Tag.Lesen von Daten von einem Garmin GPSMap 62-Gerät

Wenn die Benutzer die Datei nicht manuell hochladen müssen, hat jemand die DeviceControl-Bibliothek dazu veranlasst, die neueren Geräte mit separaten GPX-Dateien zu unterstützen?

Als zusätzlichen Bonus ist die Garmin Device Control-Bibliothek veraltet, daher werden keine Updates mehr bereitgestellt.

Einige Code

startReadFromGps: function(deviceNumber) { 
    this.plugin.StartReadFromGps(deviceNumber); //invokes the external plugin 
}, 
+0

können Sie nicht nur die Wegpunkte umbenennen ... GPX-Datei zu current.gpx? oder füge einfach den Inhalt hinzu? – Dwza

+0

Ja, aber der Punkt ist, den Benutzern eine nette nahtlose Erfahrung zu ermöglichen. Ich kann den Benutzer nicht fragen, der möglicherweise nur von Semi-Computer ausgebildet ist, mit seinen GPS-Dateien herumzuspielen. Und darin liegt das Problem. –

+0

@JuannStrauss Kann der Prozess der Umbenennung nicht automatisiert werden? –

Antwort

1

I-Plugin in der Version ausgecheckt haben 2.3-RC1 (ich weiß nicht, welche Version verwenden Sie).

der Tat ist es startReadFromGps Methode:

/** Initiates the read from the gps device conneted. Use finishReadFromGps and getGpsProgressXml to 
* determine when the plugin is done with this operation. Also, use getGpsXml to extract the 
* actual data from the device. <br/> 
* <br/> 
* Minimum plugin version 2.0.0.4 
* 
* @param deviceNumber {Number} assigned by the plugin, see getDevicesXml for 
* assignment of that number. 
* @see #finishReadFromGps 
* @see #cancelReadFromGps 
* @see #getDevicesXml 
*/ 
startReadFromGps: function(deviceNumber) { 
    this.plugin.StartReadFromGps(deviceNumber); 
}, 

So nutzt es getGpsXml. Ich nehme an, dass es angegebenen Dateinamen verwendet, der gelesen wird und Methode den Inhalt der Datei zurückgibt. Mein erster Gedanke ist, den Dateinamen zu ändern - es ist möglich, mit:

/** This the filename that wil contain the gps xml once the transfer is complete. Use with 
* setWriteGpsXml to set what the file contents will be. Also, use startWriteToGps to 
* actually make the write happen. 
* 
* @private 
* @param filename {String} the actual filename that will end up on the device. Should only be the 
* name and not the extension. The plugin will append the extension portion to the file name--typically .gpx. 
* @see #setWriteGpsXml, #startWriteToGps, #startWriteFitnessData 
*/ 
_setWriteFilename: function(filename) { 
    this.plugin.FileName = filename; 
}, 

Aber _setWriteFilename ist private Methode. genannt jedoch durch

startWriteToGps: function(gpsXml, filename, deviceNumber) 

und

startWriteFitnessData: function(tcdXml, deviceNumber, filename, dataTypeName) 

Da jetzt werde ich prüfen, ob diese Methoden mit einem festgelegten filename Aufruf dauerhaft und weitere calling Dateinamen Wert außer Kraft setzen von startReadFromGps neuen filename verwenden.

Ich kann es nicht testen, ich habe diese Bibliothek nicht verwendet, aber Sie können eine Chance geben.

+0

Danke, aber ich muss Dateinamen ändern, um zu lesen, nicht zu schreiben. –

+0

@JuannStrauss Sicher - aber es sollte den Dateinamen im Allgemeinen ändern. Ich wette, dass, wenn Sie einen neuen Dateinamen mit den obigen Methoden setzen, der Dateiname der gleiche sein wird, wenn Sie danach lesen. – hsz

+0

Ich verstehe. Es macht Sinn. Aber es funktioniert nicht. Wenn ich Daten in test.gpx schreibe, liest es immer noch von current.gpx. –