Tags

QPython ist ein Python Interpreter, der auf Android läuft. Damit habe ich einen einfachen Sensor-Rekorder geschrieben. Erstmal nur als Test, um die maximale Abtastrate und die Samplingfehler zu erproben.

Dabei hat sich gezeigt, daß auch mit diesem Script das effektive Abtastintervall nicht kleiner als 30ms gemacht werden kann – auf meinem Sony Xperia. Der eingebaute Magnetsensor AK8975 sollte zwar Abtastintervalle von 10ms ermöglichen, aber vermutlich verhindert das das Android-System.

Installation

  • QPython über Play Store installieren. Kostet nix.
  • QPython Libraries installieren. (androidhelper,)
  • androidrecorder.py in das schon existierende Verzeichnis com.hipipal.qpyplus/scripts/ kopieren.
  • in der QPython GUI den großen grün-gelben Knopf drücken und “Run local script” auswählen. Dann auf androidrecorder.py drücken.

Damit läuft der Sensorrekorder solange, bis man das Fenster zumacht. Die Logdateien sind mit Startdatumuhrzeit bezeichnet und liegen im gleichen Verzeichnis wie androidrecorder.py .

Die erste Version von androidrecorder.py:

Beachte: Die Webseite frisst die Einrückungen. Die kann man sich ja denken und muss sie halt manuell hinzufügen. Falls es eine neuere Version geben sollte, werde ich den Quellcode irgendwo anders posten.

# vim: ts=4 expandtab fileencoding=utf8
"""Sensor Recorder Script, das mit QPython auf dem Android laeuft
"""
import androidhelper, time, traceback
droid = androidhelper.Android()
droid.startSensingTimed(1, 10)
filename="%s.txt"%time.strftime("%Y%m%d_%H%M%S")
print "Erzeuge neue Datei",filename
outf = file(filename,"w")
try:
outf.write("#DeviceID=%s\n"%droid.getDeviceID().result)
except:
traceback.print_exc()
outf.write("#Time/s\txMag\tyMag\tzMag\txForce\tyForce\tzForce\tazimuth\troll\tpitch\n")
time.sleep(1)
try:
while(1):
r = droid.readSensors().result
outf.write("%.4f\t"%r["time"])
outf.write("%.2f\t"%r["xMag"])
outf.write("%.2f\t"%r["yMag"])
outf.write("%.2f\t"%r["zMag"])
outf.write("%.2f\t"%r["xforce"])
outf.write("%.2f\t"%r["yforce"])
outf.write("%.2f\t"%r["zforce"])
outf.write("%.2f\t"%r["azimuth"])
outf.write("%.2f\t"%r["roll"])
outf.write("%.2f\t"%r["pitch"])
outf.write("\n")
except:
traceback.print_exc()
finally:
outf.close()
droid.stopSensing()

Advertisements