![]() |
Decision Height-kleines Problem
Hallo zusammen,
hab mal eine Frage an die Gauge-Programmier-Profis (neuse Unwort:D ). Und zwar steht im AOM folgendes (ich übersetz gleich ins deutsche): Wenn der Bug für die Entscheidungshöhe über 400ft steht ertönt der Warnton 150ft vor erreichen der Entscheidungshöhe. Steht der Bug auf einem Wert kleiner 400ft ertönt der Ton 50ft vor erreichen der Entscheidungshöhe. Ist die Höhe gleich der Entscheidungshöhe "verstummt" der Ton und die DH-Lampe leuchtet auf (solange wie man unter der DH ist, also auch am Boden). Leider funktioniert das im FS nicht so ganz: er quittiert das mit komischen Knacksern wenn der Ton eigentlich bei 150ft zu hören sein sollte, ab 50ft spielt er es klar ab. Wenn ich nur eine Variante nutze klappt alles wunderbar. So sieht der Code-Schnipsel aus: Code:
////////////////////////// DH Warning Tone Viele Grüße |
Wenn ich das richtig sehe, startest Du den Sound immer wieder neu. Mach Dir mal ein Flag, mit dem Du abprüfst, ob er schon abgespielt wird.
Code:
if ((val - DecisionHeight < 150) && (vs_var.var_value.n <0) && !dhwarnflag) |
Hi Sven,
bin kein C Programmierer und kann daher zu dem Source Code nicht viel sagen, allerdings ist mir in Deinem Code eine kleine Unstimmigkeit aufgefallen, wobei ich nicht unbedingt denke, dass Dein Problem damit zu tun hat. In Deinem Source Code prüfst Du mit der ersten If Anweisung, ob die Variable "var" - der eingestellten Decision Height kleiner 150 ist. In der folgenden Else If Anweisung prüfst Du, ob die gleiche Bedingung = 0 ist. Nun, wenn "var" - der eingestellten Decision Height = 0 ist ist sie gleichzeitig auch kleiner 150, es treffen also sowohl If wie auch Else If zu. Lösen könntest Du das Problem indem Du in der ersten Anweisung "var" - der eingestellten Decision Height kleiner 150 UND "var" - der eingestellten Decision Height größer 0 einbaust (zusätzlich zur Abfrage ob Vertical Speed negativ ist, was Du ja schon drin hast). Warum ich nicht glaube, dass es damit zusammenhängt ist, dass es sicherlich sehr selten sein dürfte, dass beide Bedingungen gleichzeitig zutreffen und zum anderen das Problem auch dann auftreten dürfte, wenn nur eine der beiden grundsätzlichen Abfragen vorhanden ist. Aber korrigieren würde ich es dennoch sicherheitshalber. Gruß Matthias |
Hi Sven,
lösch einmal die Strichpunkte (Semikolons) nach den if's: Code:
////////////////////////// DH Warning Tone Hoffe geholfen zu haben! Grüsse, Christoph |
Zitat:
|
Zitat:
Werd mal den Tip von Hans umsetzen. Wollte ich eigentlich heute morgen gleich machen aber naja, bei uns Feiertag und die Familie rief zum Frühstück:D . Meld ich dann gleich nochmal. @Matthias Zitat:
|
So Jungs, geschafft:) . Hans, die Sache mit dem Soundflag hat nicht ganz funktioniert, ich hatte zwar keine Knackser mehr aber der Warnton kam "in Stücken" (also fast beeb beeb beeb). Wahrscheinlich war ich nur zu doof das richtig zu machen (bin ja auch noch Newbie).
Die Lösung war ebenso einfach wie genial: man schaue sich die ganzen "Formeln" an, packe alles in eine Zeile (ok, mit Umbruch zwecks Übersichtlichkeit) und schaue nach was passiert. Ein klein wenig "Try and Error" hilft auch manchmal weiter:D . So sieht das ganze jetzt aus, tut wie gewünscht: Code:
////////////////////////// DH Warning Tone Viele Grüße |
Zitat:
if(DecisionHeight > 410); // 150ft Warning |
Jo, aber an der Stelle hat das keinerlei Auswirkung.
|
Zitat:
(zur Info: ich programmiere seit etwa 14 Jahren C und C++!) Grüsse, Christoph |
Alle Zeitangaben in WEZ +2. Es ist jetzt 17:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag