© 2015 - 2024 by Reinhard Meyerdirks
Über die Entstehung der Software ShotLogg | |||||||
Irgendwann mitte 2015 kam es mal wieder ins Gespräch die Auswertung unserer Schießwettbewerbe zu automatisieren. Die Idee war nicht neu, ich hatte schon vor einigen Jahren einen Versuch gestartet mit VisualBasic6 etwas zu programmieren war aber am Austausch der Daten zwischen den Systemen gescheitert. |
|||||||
Also habe ich erstmal versucht Informationen zum Datenaustausch zwischen dem Meyton Linuxsystem und einem Windowsrechner auf der Meyton Homepage zu finden. |
|||||||
Irgendwo auf der Homepage fand ich dann den Link zur Meyton Softwareseite auf der es um den Datenaustausch via XML geht. Da die Dokumentation und die Beispiele auf der Seite relativ schlecht waren / sind, kontaktierte ich Meyton über die dort angegebene eMail Adresse um einige Fragen zu klären. Einige Tage und einige eMails später waren alle Fragen beantwortet und es konnte ans programmieren gehen. |
|||||||
Als erstes stellte ich mir die Frage was die Software alles abdecken soll.
|
|||||||
Als nächste Herausforderung kam hinzu das ich von VisualBasic6 (VB6) auf VisualBasic.net (VB.net) umgestiegen bin. (alles gleich, aber irgendwie alles ganz anders...) Das Design war schnell entworfen. Hier einige Screenshots. |
|||||||
|
Das ist der Bildschirm zum Haus Krone Pokalschießen. |
||||||
|
..etwas anders zum Preis- und Pflichtschießen |
||||||
|
Hier mit 12'er Scheibe zum Königschießen. |
||||||
Noch relativ schnell ein paar Zeilen Code dazugehämmert und der erste Versuch an der Schießanlage konnte starten. Leider erfolglos wie sich herausstellen sollte. Etwas entäuscht ging es dann wieder nach Hause. Was hatte ich nur falsch gemacht??? |
|||||||
Abermals gingen einige Mails hin und her, gefolgt von einigen Schießstandbesuchen. Auf diesem Weg war der Fehler nicht zu finden. Nach einer Fernwartung durch einen Mitarbeiter der Fa. Meyton war dann schnell der Grund gefunden. Die Standbelegung musste anders als gewohnt über einen anderen, umständlicheren, Weg erfolgen. Sofort wurden XML Dateien auf dem Server abgelegt die ich erfolgreich einlesen konnte. Hier ein Video |
|||||||
Nun stellte sich ein neues Problem dar, durch den neuen, komplizierten Weg die Stände zu belegen, war dieses für Wettkämpfe unpraktikabel geworden. Aber wie kann ich die Stände aus meiner Software heraus belegen? Laut Meyton ist dieses nicht möglich! Da die Meyton Software auch NUR über Tastatur zu bedienen ist, war eine art Tastatursimulator meine erste Idee. Durch einige Erfahrung mit dem Raspberry Pi war mir schon klar wie ich die Schaltung ansteuern kann. Da der RasPi aber nur 26 Gpio Ports hat, konnte ich nicht jede Taste einzeln ansteuern. Tastaturen sind aber in einer Matrix verschaltet. Diese Gegebenheit wollte ich zu meinem Vorteil nutzen. Also erstmal einen Schaltplan gezeichnet und ran ans Werk. |
|||||||
|
|||||||
Eine alte USB Tastatur war vorhanden. Diese schnell zerlegt und an die innen liegende Platine eine Flach- bandleitung mit Buchsenleiste angelötet. Die Schaltung auf dem Schaltplan war dann auch in einigen Stunden auf einer Lochrasterplatine aufgebaut und verlötet. Die Platine über eine weitere Flachbandleitung mit dem RasPi verbunden und fertig war die Hardware des Tastatursimulators. |
|||||||
|
|||||||
Nun musste erstmal ein Betriebssystem auf den Raspberry Pi. Direkt auch noch einen Webserver mit PHP eingerichtet und die Programmiersprache Python installiert. Die Software ShotLogg sendet eine Zeichenkette an den Webserver. Eine PHP Seite löst dann ein Python Script aus welches im richtigen Timing die Gpio Ports so schaltet das auf der Tastaturplatine einzelne Tasterturanschläge simuliert werden. Der erste Versuch im Schießstand folgte... ...wieder erfolglos... Auch das Problem war schnell lokalisiert. Ich hatte einen Denkfehler im ganzen Entwurf. Mit meiner Konstruktion ist es nicht möglich 2 Tasten gleichzeitig zu simulieren was aber unbedingt nötig zur Bedienung der Meyton Software ist. Fazit: Die Lochrasterplatine war für die Tonne... :-( |
|||||||
War hiermit die ganze Aktion gescheitert? Die Antwort ist Nein! Der Zufall sollte mir helfen. Es flatterte mir eine Fachzeitschrift mit einem Artikel über den Arduino Leonardo in's Haus. Der Arduino Leonardo ist ein Mikroprozessor der über seine USB Schnittstelle von Pc's als Tastatur bzw. Maus erkannt wird. Dem Arduino musste ich natürlich auch noch beibringen was er zu tun hat, was aber relativ schnell und einfach erledigt war, da im Softwarepaket einige Beispielprojekte vorhanden sind. Ich musste nur ein vorhandenes Projekt an meine Bedürfnisse anpassen. Auch die Verbindung zum RasPi stellte sich sehr viel einfacher da. |
|||||||
|
Es sind nur 2 Verbindungen Notwendig. Einmal die beiden Ground verbinden (blau) und zum anderen muss Tx vom Raspi auf Rx vom Leonardo (grün). |
||||||
Die Bauteile zum Schutz noch in ein Gehäuse eingebaut und fertig war der Tastatursimulator. Der nächste Versuch im Schießstand folgte zugleich.. Hier ein Video |
|||||||
Jaaaaaa! Erfolg! Das brachte mich gleich auf die nächste Idee... Da die ganze Geschichte über Netzwerk bzw. über einen Server mit PHP läuft, warum nicht eine Web-App programmieren um die Stände vom Handy aus zu belegen. Ans Werk, ein paar Zeilen PHP-Code später war die App programmiert. Ein paar Screenshots meines Handys gibt es auch dazu. (Die Beispiel-App ist in diesem Fall für die Gruppe Horrido) |
|||||||
Leider gibt es mit der App noch Probleme, deshalb werde ich sie noch nicht weitergeben. Sobald sie aber zur Zufriedenheit läuft, können interessierte Gruppen die App bekommen. Die App wird auf allen Systemen laufen (iOS-, Android- und Windows- Handys!) |
|||||||
Durch die Nutzung der Software wird beim Königschießen ein Lifeticker auf unserer Homepage angezeigt, damit die, die nicht am Königschießen teilnehmen können,auch informiert werden. Eine Vorschau auf den Ticker gibt es hier. In wieweit wir diese Funktion abgewandelt für andere Wettbewerbe nutzen können, wird noch geprüft. Der erste Einsatz der Software war dann zum Haus-Krone-Pokal am 28.08.2015. Wir hatten uns dazu entschieden eine "doppelte Buchführung" zu betreiben. Wie gewohnt von Hand in eine Excelliste eintragen und zusätzlich auf einem dritten Rechner meine Software laufen zu lassen. Die Software lief bis auf einen Absturz, den wir aber selbst verschuldet hatten, einwandfrei. Besonders die Standbelegung vom Windowsrechner zeichnete sich als stabil laufend heraus. Der Arduino Leonardo war ein echter gückgriff! Einen kleinen Wermutstropfen hatte die Sache dann doch. Hatten 2 Schützen gleichzeitig geschossen, wurde ein Schuss nicht direkt bei mir angezeigt. Erst wenn zusätzlich ein Schuss auf die Karte abgegeben wurde, tauchte der "verlorene" Schuss auf. Auch die Auswertung funktionierte bis auf einen Punkt den ich nicht bedacht hatte. Zum ersten mal gab es beim Haus-Krone-Pokal ein Gruppenstechen. Da dieses noch nie vorher der Fall gewesen ist, hatte ich diese Option auch nicht programmiert. Das Gruppenstechen hatten wir dann schnell nur im Excel-System eingetragen und dort von Hand ausgewertet. Die Fehler die uns an dem Abend aufgefallen sind, habe ich in den nächsten Tagen, zeitnah, beseitigt. Nun war erst wieder warten bis zum nächsten Event, das Preis- und Pflichtschießen 2016, angesagt. Zum Preis- und Pflichtschießen 2016 wurde das Programm dann zum 2. Mal getestet. Wieder arbeiteten wir mit unserer doppelten Buchführung. Die Software speichert in verschiedenen Ordnern die Preis-, Pflichtergebnisse und jede Scheibe als Bild auf der Festplatte. Nach dem ersten Tag fiel ein Fehler bei der Sortierung der, zum Stechen zugelassenen, Schützen auf. Nach einer kleinen Trickserei konnten wir aber das Stechen durchführen. Am 2.Tag lief die Software bis zum Abendlichen Stechen ohne Aussetzer. Jedoch fiel auf das die Schützen, die schon Pflicht geschossen hatten, nicht von meiner Software gesperrt wurden. Im Stechen am Abend gab es dann noch ein kleines Problem bei der Sortierung der aktuell Stechenden Schützen. Diese kleinen Probleme beseitigte ich in der Woche zwischen dem 2.- und 3. Termin. Zusätzlich programmierte ich eine Funktion um die Pflicht-Scheiben auszudrucken. Gewünscht wurde auch noch ein Textfeld von dem man ablesen kann, wie oft der Schütze zum Abendlichen Stechen zugelassen ist. Eine kleine Statistik (Anzahl Schützen, Scheiben, Schüsse, etc....) wurde auch noch hinzugefügt. Am 3. Termin habe ich das Programm das erste mal kompiliert laufen lassen. Auch hierbei traten Probleme auf. Wenn man, solange der Rechner noch einen Stand belegt, versucht einen anderen Stand zu belegen, verschwinden die Karten auf dem Bildschirm. Aus diesem Gund, versuche ich am 4.Tag eine änderung. Die Maus wird während der Standbelegung gesperrt. Außerdem hatte ich noch einen Fehler bei der Anzeige wie oft ein Schütze ins Stechen darf. Die Druckfunktion sollte auch nicht genutzt werden, da sonst genauso die Karten verschwinden. Leider keine Ahnung warum das so ist. Positiv zu erwähnen ist, dass das Auswerten und Sortieren sowie der Upload zur Homepage super geklappt hat. Der Punkt scheint somit erledigt zu sein. Am 4. Tag traten immer noch vereinzelt Probleme bei zu frühen drücken der Standbelegung auf (Karten weg). Um dieses Problem zu entgehen, werde ich die Felder zum Belegen der Stände kurzzeitig komplett ausblenden. Getestet wird diese Funktion bei der Schießstandwartung. Bei der Sortierung der Tagespreise war auch noch ein kleiner Fehler drin. Ist aber keinem außer mir aufgefallen. In der Gesamtpreisauswertung hatte ich auch noch vergessen einen Ordner zu erzeugen, worauf das Programm 1 mal abstürtzte. Den Fehler behoben, und schon ging es weiter. Fazit: Die Softwarte läuft stabil und erleichtert uns die Arbeit enorm! Nun programmiere ich erstmal die Schießstandwartung, was mich vor neue Probleme stellt. Die verschiedenen Altersklassen bereiten mir etwas Kopfschmerzen. Da ich nicht jedes mal, wenn die Altersklassen geändert werden, das Programm umschreiben möchte, muss ich da Flexibel bleiben. Auch wenn eine Altersklasse hinzu gefügt wird. (Schwierig!) |
|||||||
Aus 2 Gründen hatte ich pünktlich zur Schießstandwartung einen neuen Tastaturumsetzer gebaut. Ein Grund war, das der neue Umsetzer wesentlich kleiner ist und der 2. Grund hängt mit dem oben beschriebenen verschwinden der Scheiben auf meinem Rechner zusammen. Durch den neuen Umsetzer verschwinden die Karten nicht mehr. Einen weiteren positiven Nebeneffekt stellte sich noch ein. Wird die Verbindung zum Linuxrechner unterbrochen, USB-Stecker gezogen (egal ob beim Linux- oder Windowsrechner), bekomme ich durch meine Software direkt ein Feedback. Das war mit der "alten" Version nicht möglich. Aber durch die Nutzung der neuen Version musste ich einige Zeilen Quellcode umschreiben. Beim Timing des Ablaufs hatte ich für einige Schritte zu wenig Zeit eingeplant. Deshalb stellten wir kurzfristig auf das alte System um. Diese Möglichkeit hatte ich mir optional offen gehaten. Die verschiedenen Altersklassen, die mir erst Kopfschmerzen bereitet hatten, konnte ich gut lösen. Die Altersklassen können über ein Menüpunkt eingegeben werden und werden auch nach beenden der Software gespeichert. Soweit hat alles super funktioniert. Bei der Sortierung der Ergebnisse gab es wieder einmal Probleme. (Ich hassse es mittlerweile) Hatte ein Schütze 30 Ringe vorgelegt, und ein folgender Schütze mit einer 9 im ersten Schuss aufgehört, wurde die 9 höher gewertet als die 30. Das kommt davon weil die Ergebnisse als Text und nicht als Zahl behandelt wurden. Bei einer Sortierung als Text wird jedes einzelne Zeichen verglichen und da ist dann die 9 größer als die 3 von 30. Der Timing- und der Sortierungsfehler waren nach dem Schießen schnell korrigiert. Das Königsschießen hatte ich schon vor etwas längerer Zeit programmiert. Deshalb hatte ich vor dem Schützenfest noch einmal die Sortierung bezüglich Text/Zahl kontrolliert. Siehe da, der selbe Fehler hatte sich auch in der Königswertung eingeschlichen. Außerdem kontrollierte ich vor dem Schützenfest noch mehrmals die "Tickerfunktion". Leider hatte ich hier nicht an Namen mit ä, ö oder ü gedacht. Da unsere Homepage auf einem Linuxbasiertem Server läuft, gibt es unter Umständen kleine Probleme mit diesen Buchstaben. Beim Schützenfest wurden deshalb einige Namen nicht richtig im Königsticker dargestellt. War aber so weit nicht tragisch, alle wussten wer gemeint war. Fazit: Zum Schützenfest lief die Software bis auf Problemen mit ä, ö oder ü einwandfrei! Ach ja, Am Freitag beim Königsschießen hatten wir 724 Besucher auf unserer Homepage. (Rekord!) Anfang Juni fängt dann das Training der Pokalgruppe statt. Dort werde ich mal schauen in wie weit wir die Software für das Trainig anpassen / nutzen können. |
|||||||
Da an der Software und an der Homepage weiterhin gearbeitet wird, lohnt es sich hier ab und zu vorbeizuschauen. |