Hi Uli,
Welche Auswahl muss ich treffen, wenn ich auf der PREH eine Taste für CW Modus ON AIR/PFL programmieren will?
(abgetrennt aus einem anderen Thema, die Frage darf von der gesamten Community beantwortet werden)
Hm… ein TOGGLE
-Kommando scheint es dafür nicht zu geben, das fällt mir auch gerade auf. Könnte ich Torben mal auf den Ideen-Stapel legen, wenn das realisierbar ist.
Ansonsten würde ich spontan an ein Script denken, das auf Knopfdruck aufgerufen wird, den jeweiligen Zustand abfragt und auf den entsprechend anderen umschaltet.
Danke, dann versuche ich mich mal damit.
Liebe Freunde des gepflegten Scripts,
vielleicht könnt ihr auf dieser Basis ja was nettes aufbauen?
// Called when the cartwall switches its on air mode (on air, off air, PFL)
procedure OnCartwallOnAirModeChange(OldMode, NewMode: TCartwallOnAirMode);
begin
end;
Quelle: C:\Program Files (x86)\mAirList [Versionsnummer]\Background Script Template.mls
Liest denn hier keiner den von mir verlinkten Artikel?
In dem Artikel beschreibst du, auf Knopfdruck einen bestimmten Zustand einer Variable zu verändern und, in Kombination mit einem zweiten Trigger, unterschiedliche Aktionen auszuführen.
Das ist etwas komplex dargestellt und didaktisch auch nicht stringent aufgebaut (ich habe das mal wortwörtlich Schritt für Schritt nachvollzogen und es war nicht ganz so einfach).
Im konkreten Fall jedoch geht es um den einen Taster:
-
Ich drücke ihn einmal, der Modus wechselt vom aktuellen Status (welcher auch immer das gerade sein mag) in den genau anderen.
-
Ich drücke ihn erneut, und von diesem Modus nun wieder zurück zum ersten.
-
Konkret:
- Trigger -
CARTWALL ON AIR
- Selber Trigger -
CARTWALL PFL
- Trigger -
Simple Variante: Standardmäßig ist ON AIR
gesetzt.
Da man den Modus bei Start in der Konfiguration jedoch vorwählen kann, wäre das ein weniger schöner Eingriff.
Elegante Variante: Modus der Cartwall abfragen (OldMode
) und den NewMode
davon abhängig setzen.
Resümee: Ein Trigger, kein zweites davon abhängiges Kommando, kein zusätzlicher Button, kein gar nichts. Einfach nur eine Umschaltung.
Die auf Basis deines Artikels daraus abgeleitete Um-Scriptung führte nicht zum erwarteten Ergebnis; ich muss allerdings gestehen, dass ich in die Tiefen der Scripterei noch nicht so gut eingetaucht bin wie du.
Es ist doch völlig wurscht, ob man die gewünschten Befehle über einen Button, über eine Prehtaste oder die Fernsteuerungskonsole absondert. Der Mechanismus bleibt derselbe. Hier ist gegenüber dem Beispiel lediglich der Faderstart weggelassen und die passenden Befehle eingesetzt. Um didaktisch stringent zu wirken, sind auch die Namen von Variabler und Tastenbefehl angepaßt:
var
ModeCartOn: boolean;
procedure OnLoad;
begin
ModeCartOn := true;
ExecuteCommand('CARTWALL ON AIR');
end;
procedure OnExecuteCommand(Command: string);
begin
if NOT ModeCartOn AND (Command = 'CARTONAIR') then
begin
ModeCartOn := true;
ExecuteCommand('CARTWALL MODE ON AIR');
end
else if ModeCartOn AND (Command = 'CARTONAIR') then
begin
ModeCartOn := false;
ExecuteCommand('CARTWALL MODE OFF AIR');
ExecuteCommand('CARTWALL MODE PFL IF OFF AIR');
end;
end;
Zunächst einmal: Vielen Dank.
Es funktioniert - allerdings nur, wen man zurück auf den ursprünglich verlinkten Artikel geht und folgenden Ratschlag beherzigt:
Andernfalls gibt es die Fehlermeldung:
Warum aber (1:1)
; dort ist doch gar kein Fehler?
Nun, wenn man nicht odentlich abschließt, also kein Ende gefunden wird, dann wird die Fehlermeldung eben an den Anfang des nicht abgeschlossenen Teils gesetzt.
Bei allem Engegagement, werter @Tondose, in einem Abschnitt steige ich logisch aus, da muss ich nochmal in Nachhilfeunterricht gehen, wenn es deine Zeit und Nerven erlauben.
Seltsam, bei mir funktioniert es tatsächlich ohne.