die Kameras mit GPS-Modul stellen die Positionsdaten über ein Property zur Verfügung. Diese Daten sind nicht so einfach in LUA zu verwenden. Um das zu vereinfachen, stelle ich hier eine Bibliothek gpsLib zur Verfügung.
Derzeit werden die SX230, S100, D20 und SX260 unterstützt. Die Bibliothek gibt nur bei diesen Kameras die eingebetteten Funktionen zurück. Da LUA nur mit Integerwerten arbeitet, muss ein Multiplikator für die Erweiterung der geografischen Werte übergeben werden. Erst wenn STATUS = TRUE ist sind die Daten gültig.
Die gpsLib sollte unter A/CHDK/LUALIB/ abgelegt werden.
Beispiel:
Syntax: [ Download ] [ Verstecken ]
Benutze Lua Syntax Highlighting
function printf(...)
print(string.format(...))
end
function divformat(val, div)
return val / div, math.abs(val % div)
end
set_console_layout(0,0,25,14)
gps = require("gpsLib")
scale = 10 -- Erweiterung für geografische Werte
if gps then
tab = gps.data(scale)
printf("GPS PROPERTY Library V%s", gps.version)
printf("Status : %s", tostring(tab.status))
printf("Breite : %d.%d°", divformat(tab.lat, scale))
printf("Länge : %d.%d°", divformat(tab.lon, scale))
printf("Höhe : %d.%dm", divformat(tab.ele, scale))
printf("Datum : %2d.%02d.%04d", tab.date[1], tab.date[2], tab.date[3])
printf("Zeit : %2d:%02d:%02d", tab.time[1], tab.time[2], tab.time[3])
printf("Zeitzone : %d", tab.tz)
printf("Sommerzeit: %s", tostring(tab.isdst))
printf("Satelliten: %d", tab.sats)
printf("Dimension : %sD", tostring(tab.fix))
else
print("kein GPS")
end
print(string.format(...))
end
function divformat(val, div)
return val / div, math.abs(val % div)
end
set_console_layout(0,0,25,14)
gps = require("gpsLib")
scale = 10 -- Erweiterung für geografische Werte
if gps then
tab = gps.data(scale)
printf("GPS PROPERTY Library V%s", gps.version)
printf("Status : %s", tostring(tab.status))
printf("Breite : %d.%d°", divformat(tab.lat, scale))
printf("Länge : %d.%d°", divformat(tab.lon, scale))
printf("Höhe : %d.%dm", divformat(tab.ele, scale))
printf("Datum : %2d.%02d.%04d", tab.date[1], tab.date[2], tab.date[3])
printf("Zeit : %2d:%02d:%02d", tab.time[1], tab.time[2], tab.time[3])
printf("Zeitzone : %d", tab.tz)
printf("Sommerzeit: %s", tostring(tab.isdst))
printf("Satelliten: %d", tab.sats)
printf("Dimension : %sD", tostring(tab.fix))
else
print("kein GPS")
end
Erstellt in 0.011 Sekunden, mit GeSHi 1.0.8.9
Für eine sinnvolle Benutzung muss unter CHDK-Einstellungen|GPS-Einstellungen der Eintrag "GPS-Funktionen" aktiviert werden. Weiterhin ist nach dem Einschalten der Kamera ein kurzes Umschalten in den Aufnahmemodus erforderlich um den GPS-Empfänger zu aktivieren.
Die neuste Version kann hier heruntergeladen werden.
Gruß rudi