Hallo Leute,
nachdem ich heute, wie es auch bisher in diesem Forum war, bestens bedient worden bin
codevervollstaendigung, gleich noch ein Problemchen. Zurzeit arbeite ich an einem Projekt zur Auswertung von Schussergebnissen. Kurz zusammengefasst; Mietgliederverwaltung, Disziplinen, Mannschaften, Teilnehmer, Schießarten, Schussbilddiagramme, Turniere, Preisgelder usw.
alles in allem, alles was so eine
DB basierte Anwendung so hergibt.
Das Ganze ist eine Netzwerkfähige Lösung, basierend auf dem
MSSQL 2005 Express bzw.
MSSQL Server >7. Das ist zwar Arbeit, aber da kenne ich mich aus (
DB) und da bin ich zuhause. Nun bin ich auf ein Problem gestoßen wo ich nicht so genau weiß, wie es zu therapieren ist.
Um was geht es:
Bei der Schußauswertung gibt der Schütze seine Scheiben ab die dann von einer sog. Auswertungsmaschine ausgewertet werden. Dazu wird Scheibe für Scheibe in die Auswertungsmaschine gelegt, die mittels Scanner die Treffer auswertet. Die Auswertemaschine ist per RS232 Schnittstelle mit dem Rechner verbunden und sendet die ausgelesenen Ergebnisse an die Anwendung die es anfordert. In diesem speziellen Fall sendet die Auswertemaschine die Ergebnisse in folgender Formatierung:
String + CheckSumme + CR:
Das sieht dann so aus:
Sch=[Schußnr.];[Ringwert];[Teilerwert*];[Winkel*];[Flag*];[CheckSum*]
(Original Datenstring von der Auswertemaschine pro Schuß)
SCH=3;10.0;358.6;101.5;G#
* Teilerwert: Je kleiner der Teilerwert umso näher ist man der Mitte, ergo dem Zehner.
* Winkel: in Grad; Oben ist 0° rechts 90° usw.
* Flag: G = Gültig; U = Ungültig; K = Schuß muss kontrolliert werden.
* CheckSum <32, wird 32 dazuaddiert (XOR-Verknüpfung aller Zeichen).
Nachdem alle Scheiben (Serie) ausgewertet worden sind, soll ein Schußbild der Serie angezeigt werden (meist 40 Schuß auf 20 Scheiben, ergo 2 Schuß pro Scheibe). Das bedeutet: Alle abgegebenen Schüsse (Serie) sollen auf einer Scheibe angezeigt werden damit sich der Schütze einen Überblick über seine Serie verschaffen kann. Außerdem soll nach jeder Auswertung, also pro Scheibe, die Treffer auf der Scheibe im Programm angezeigt werden.
Mein Problem ist:
Es gibt Auswertemaschinen die senden keinen Winkel in Grad, sondern gleich die richtigen Koordinaten zu, z.B. X:120, Y: 230 aber diese eine sendet das im Gradmaß. Wie rechne ich das um, um die X, Y Koordinaten zu bekommen, um den Schuß, Schüsse auf der Scheibe darzustellen.
Im Forum habe ich einen Post gefunden
Gradmaß zu Mauskoordinaten, in dem X, Y zu Gradmaß umgerechnet wird. Geil dachte ich, dann muss ich nur noch andersrum rechen, doch Pustekuchen, das funktioniert nicht. Also packte ich meine verstaubten Schulbücher aus und zog mir Trigonmetrische Funktionen wieder rein, aber irgendwie machte es nicht: Heureka. Deshalb habe ich eine kleine Anwendung geschrieben die das Problem verdeutlichen soll.
Zur Anwendung:
Nach dem Start wird eine Zielscheibe gezeichnet und ein Treffer wird angezeigt. Dieser Treffer wird auf der original Scheibe, von der Auswertemaschine, mit einem Winkel (Gradmaß) von 101.5 angegeben. Der oben angegebene Rückgabestring von der Auswertemaschine stimmt mit der Trefferanzeige in meiner Anwendung ± 1mm überein.
Wie könnt Ihr mir helfen:
Wie muss ich rechnen, damit ich den Treffr den ich als Gradmaß von der Auswertemaschine erhalte, genau dort in meiner Anwendung platziere, wie dieser auf der Originalscheibe zu sehen ist?
Alexander