Dokumentation zur Software "HACman" für den PSION 5mx pro Winfried Beer, April 2002, v0.2 Zweck ----- Über die serielle Schnittstelle kann der Speicher des Fahrradcomputers HAC4 (Produkt der Firma CicloSport, http://www.ciclosport.de) ausgelesen und als Datei gespeichert werden. Das raw-Format ist 100% kompatibel zur herstellereigenen Windows-Software. Damit können die Daten während einer längeren Fahrradreise regelmäßig gesichert werden. Das Tour-Format wird bislang nur halbherzig unterstützt, da das Feintuning am PC einfacher geht und eine Verarbeitung mit dem Psion eigentlich nicht notwendig ist. Installation ------------ Die Software wird am einfachsten installiert, wenn man alle Dateien in das neu anzulegende Verzeichnis "C:\System\Apps\HACman kopiert. Notwendig sind aber nur (ohne Programmentwicklung): * HACman.aif Programmicon für die Extra-Leiste, etc. * HACman.apl die Applikation * HACmanlib.opo die Bibliothek * HACman.mbm die Icons für die ToolBar-Leiste Will man die Programmentwicklung in einem anderen Verzeichnis machen. sollte man beachten, dass die Dateien "HACmanlib.opl" und "HACman.mbm" normalerweise im Applikatonsverzeichnis ("C:/System/Apps/HACman") gesucht werden. Diesen Pfad (defaultPDir$) kann man in der Routine AppCont1 ändern. Bedienungsanleitung ------------------- Programm einfach Ausprobieren... Funktionshinweise Nach dem Laden der RAW-Daten kann man mit den Cursor-Tasten und ENTER eine Tour auswählen. Scrollen und Auswahl mit dem Stift ist noch nicht implementiert. Beim Übertragen der Daten vom HAC über den seriellen Port werden diese Daten in eine Datei gespeichert. Programmteile ------------- HACman.opl Nutzerinteraktion HACmanlib.opl Routinen zum Lesen/Speichern der Daten HACmanlib.oph Header-Datei Dateiformate ------------ Es gibt zwei Dateiformate, kompatibel zur offiziellen HAC-Software "HACtronic". RAW-Format Das "RAW-Format" ist der Datenstrom, wie sie der Fahrradcomputer liefert. Beschreibung: immer 81930 Bytes also 16386 Zeilen a fünf Bytes. Die ersten vier Bytes einer Zeile sind HEX-Zahlen (2 Byte=16 Bit) im ASCII-Format, dann folgt ein Zeilenumbruchzeichen ($0D, CTRL-M). In der ersten Zeile steht keine Hex-Zahl, sondern die Kennung "AFRO". In der letzen Zeile steht die Checksumme (Summe aller Zahlen, natürlich gekürzt auf die unteren 16 Bit). Die restlichen Daten sind in sogenannten "Chunks" organisiert, jeweils 8 Zeilen groß. Den Typ eines Chunks kann man an der jeweils ersten Zeile erkennen. Es gibt folgende Typen: * b735 (Main): Chunk mit Daten über den Auslesezeitpunkt Es folgt ein weiterer Informations-Chunk. * ??aa (Tour-Start): Chunk mit den wichtigsten Start-Daten einer Tour (z.B. Startzeit, Starthöhe). An Stelle der beiden Fragezeichen "??" steht der Tourentyp (Bike oder Wanderung). * ??bb (Tour-Daten): Nach dem TOUR-Start-Chunk folgen die Daten. In einem bb-Chunk sind die Daten für 6 Messungen (120 Sekunden=2 Minuten) codiert. Beispiel: ........ * ??cc (Tour-Rest): Enthält die letzen Daten einer Tour. (Bei kurzen Touren unter zwei Minuten gibt es keinen bb-Chunk!). Format wie beim bb-Chunk, nur gibt die Zahl, die normalerweise eine Marke definiert, die verbleibenden Sekunden an und damit auch die Anzahl der gültigen Messpunkte. (Hinweis: Die letzte Messung ist i.A. nicht im 20 Sekunden-Takt, sondern meist kürzer. Die Anzahl der verbleibenden Sekunden ist dementsprechend auch kein ganzesVvielfaches von 20). * ??dd (Tour-Ende): Markiert das Tourenende. Enthält eigentlich keine verwertbaren Daten. * 5555 (NOOP): Füll-Chunk ohne Bedeutung. Es gibt nur einen Main-Chunk am Anfang der RAW-Daten (zuvor gibt es aber noch ein paar andere, nicht genutzte Chunks). Dannach folgen die Touren-Chunks. Die zeitliche Reihenfolge der Touren ist zwar meist aufsteigend, es gibt jedoch einen Bruch, da die Touren im Speicher des Fahrradcomputers zyklisch überschrieben werden. Touren am Ende des Speicherbereichs werden mit dem 20. Chunk (also ab 19*40 Bytes) am Anfang wieder fortgesetzt. Tour-Format Das "Tour-Format" ist eine um weitere Informationen ergänzter Extrakt einer Tagestour aus dem RAW-Format. Hier wird das Format von HACtronic Version 1.42 verwendet. Beschreibung: zuerst eine (leicht variable) Anzahl von Header-Zeilen (ASCII-Strings verschiedener Länge), dann die binären Messwerte (20 Bytes pro Messpunkt; bei früheren HACtronic-Versionen nur 16 Bytes) und zum Schluß die Marken (zwei ASCII-Strings je Marke). Die Anzahl der Header-Zeilen ist 54 plus die Anzahl der Notizzeilen. Die Anzahl der Messpunkte steht in der letzten Header-Zeile. Die Anzahl der Marken steht in der ersten Marken-Zeile. Die binären Messwerte (jeweils 20 Bytes) sind wie folgt aufgebaut: * long-integer (4 Byte): Wallclock (Sekunden seit 1.1.1970) * long integer (4 Byte): Sekunden seit Tourenbeginn (0, 20, 40, ...) * long integer (4 Byte): gefahrene Distanz (in 10 m-Einheiten) * signed short integer (2 Byte): Höhe über dem Meer (in Meter) * signed byte (1 Byte): Puls (in Schläge je Minute) * signed byte (1 Byte): Trittfrequenz * signed byte (1 Byte): Temperatur (in Grad Celsius) * 3 Byte: unbekannte Funktion (konstante Zahl) Die Binärzahlen sind übrigens im "Least significant byte first"-Format, also passend für PC und Psion-Systeme. (Bei Sparc-Workstations oder Macinosh-Rechnern muss man die Bytes beim Lesen - oder beim Verarbeiten - vertauschen.) Die Marken-Zeilen am Ende der Tour-Datei: In der erste Zeile seht die Anzahl der Marken. Es folgen dann je Marke zwei Zeilen: eine Zeile mit Zeitpunkt (in Sekunden seit Tourstart) und eine Zeile mit Beschreibung (Text, Semikolon, ...) Eine genauere Beschreibung dieser beiden Formate muss man sich aus dem Quellcode zusammensuchen oder ggf. den Beispieldateien entnehmen. Weiterhin liefert die Software "HACman" die Tour-Daten in einem ASCII-Exportformat, stark angelehnt an das Tour-Fomat. Die Daten sind durch Tabs getrennt. Programmintern werden die RAW- und Tour-Daten auch in diesen beiden Formaten abgelegt, was vielleicht nicht ganz optimal für die Basic-Programmstruktur ist, aber vor der Einführung eines weiteren Datenformates schützt. (Effekt: Zur Verhinderung von Dateninkonsistenzen werden möglichst keine weiteren Variablen definiert, wenn die Information aus dem Touren- Header zu entnehmen ist. Führt bei der variablen Anzahl der Header-Zeilen manchmal zu verwirrenden Konstrukten.) Geplante Programmstrukturierung ------------------------------- Grafische Oberfläche des Psion, Event-Handling, State-Variablen, globale Variablen fix definierte Felder, Range Overflow und Speicherplatzbeschränkung, Error-Handling, IO-Error, Format-Error Grafik-Dateien Internationalisierunng (Bedienung; Programm) Auslesen über seriellen Port, Kabelbelegung, Nullmodem, Checksumme, keine CPU-intensive anderen Programme, keine aktive Link-Kommunikation. Erweiterungsmöglichkeiten: ASCII-Tour-Import, Erkennung verschiedener Tour-Versionen, komplette Identifizierung des Tour-Formats, RAW: Zyklus-Bruch? Bugs ---- * Bugs: Programmabsturz bei zu kurzen Touren * Evtl. Probleme mit den Touren, die am Ende der RAW-Datei stehen und am Anfang weiter gehen. * Das Tour-Format ist nicht vollständig bekannt. Teilweise werden dafür fixe Werte gespeichert. Die Tour-Dateien sind vermutlich nur mit der Windows-Software HACtronic v. 1.42 (oder neuer?) kompatibel. * Die Skala der y-Achse bei der grafischen Darstellung der Tour Daten ist im Quellcode festgelegt. COPYRIGHT --------- Copyright (C) 2000-2001 Winfried Beer This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. Hardware -------- Zum Verbinden des HAC mit dem Psion ist ein Nullmodemkabel notwendig. Adapter 25 pol. <-> 9 pol. 25: 1 2 3 4 5 6 7 8 ... 20 21 22 ... 9: - 3 2 7 8 6 5 1 ... 4 - 9 Nullmodem 25 pol. 2-3, 3-2, 4-5, 5-4, 6+8-20, 20-6+8, 7-7 Nullmodem 9 pol. 2-3, 3-2, 5-5, 7-8, 8-7, 6+1-4, 4,6+1 man kann auch 1-1 verbinden /-1 1-\ CD | 2 ----\/---- 2 | RD | 3 ----/\---- 3 | TD | | | 4 ---\ /---- 4 | DTR | 5 ----x----- 5 | SG \-6 ---/ \---- 6-/ DSR 7 ----\/---- 7 RTS 8 ----/\---- 8 CTS 9 ---------- 9 RI Weitere Hinweise ---------------- Mit dem Programm "Comm" kann man notfalls auch den HAC auslesen. (9600 Baud)