© 2015 - 2024 by Reinhard Meyerdirks

www.schiessgruppen.de
.....noch aktueller wäre live dabei!

74463 Besucher seit dem 01.01.2016
- - - Willkommen auf unserer Homepage - - -

 

Ü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.
  • Es sollen unsere 3 Bahnen angezeigt werden
  • 12'er Karten fürs Schützenfest und 10'er Karten für alle anderen Wettbewerbe
  • Die Wettbewerbe: Königschießen, Preis- und Pflicht, Schießstandwartung, Haus-Krone-Pokal und evtl. Samtgemeindepokal
  • der Name des Schützen soll unter der Scheibe angezeigt werden
  • Es soll jeder Schuss erfasst und in einem Textfeld unter der Scheibe Angezeigt werden
  • Die Belegung der Stände soll falls möglich über den Windows PC erfolgen
  • Die Ergebnisse sollen je nach Wettbewerb gespeichert und auch ausgewertet werden
  • Ein automatischer Upload der Endergebnisse auf die Homepage
  • Beim Königsschießen ein Newsticker automatisch auf die Homepage
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.