Welches Skript hattest Du zunächst ausprobiert? Das erste, was ich gepostet hatte oder das zweite? Das zweite ist nur für Leute ohne Pult, die den Mikrofoneingang des Encoders benutzen. Das dritte ist eine Abwandlung des zweiten.
ist das nicht das identische Skript von davor, denn der Button Overtime blinkt damit auch nicht?
Ich habe mal beide Skripte bei mir nebeneinander verglichen, um zu sehen was Du geändert hast und ich kann keinen Unterschied finden.
ich habe mir mal angeschaut, was Du zu Version 2 geändert hast und das dann auf das aller erste Skript (Mischpult Variante) angepaßt. Es läuft nun auch, wenn man das Mikrofon vor erreichen von Overtime herunter zieht.
Hier die von mir angepasste Variante. Vielen Dank für Deine Geduld.
const
TALK_TIME = 90; // Zeit in Sekunden bis zur Warnung
BUTTON_NAME = 'BUTTON.TALK'; // Name des statischen Textes
BCOLOR_ON = '#FF0000'; // Hintergrundfarbe "an"
BCOLOR_OFF = '#F0F0F0'; // Hintergrundfarbe "aus"
FCOLOR_ON = '#F7F8E0'; // Schriftfarbe "an"
FCOLOR_OFF = '#848484'; // Schriftfarbe "aus"
var
TalktimerOn, ButtonStatus: boolean;
procedure ButtonOn;
begin
ExecuteCommand(BUTTON_NAME + ' FONTCOLOR ' + FCOLOR_ON);
ExecuteCommand(BUTTON_NAME + ' BACKGROUNDCOLOR ' + BCOLOR_ON);
ButtonStatus := true;
end;
procedure ButtonOff;
begin
ExecuteCommand(BUTTON_NAME + ' FONTCOLOR ' + FCOLOR_OFF);
ExecuteCommand(BUTTON_NAME + ' BACKGROUNDCOLOR ' + BCOLOR_OFF);
ButtonStatus := false;
end;
procedure ButtonFlash;
begin
EnableTimerEx('Flash', 750);
end;
procedure ButtonStop;
begin
DisableTimerEx('Flash');
ButtonOff;
end;
procedure OnLoad;
begin
TalktimerOn := false;
ButtonOff;
end;
procedure OnTimerEx(ID: string);
begin
if ID = 'Time' then
begin
ButtonFlash;
DisableTimerEx('Time');
end;
if ID = 'Flash' then
begin
if ButtonStatus then
ButtonOff
else
ButtonOn;
end;
end;
procedure OnExecuteCommand(Command: string);
begin
if (copy (Command, 1, 15) = 'TALKTIMER START')
AND NOT TalktimerOn then
begin
if TALK_TIME > 0 then
begin
TalktimerOn := true;
EnableTimerEx('Time', TALK_TIME * 1000);
end;
end
else if ((copy (Command, 1, 15) = 'TALKTIMER START')
OR (Command = 'TALKTIMER STOP'))
AND TalktimerOn then
begin
TalktimerOn := false;
DisableTimerEx('Time');
ButtonStop;
end;
end;
begin
end.
wenn Du ohne Mischpult arbeitest dann das letzte von Tondose. Wenn Du mit Mischpult arbeitest, dann das letzte von mir korrigierte Skript.
Tondose ist mit Skripten super fit, da komme ich leider noch nicht hinterher, aber ich lerne immer wieder dazu und verstehe auch so einige Umsetzungen und Skripte anzupassen. Ich versuche mich da immer wieder dran. Es kann ja nichts kaputt gehen. Vor allem ist Tondose da auch immer sehr hilfsbereit und geduldig.
Beide Scripte, bei @Tondose seinem Script steuere ich es ohne den Hotkey der Tastatur TALKTIMER STAR/STOP an und bei @NickTheRipper seinem mit dem genannten Hotkey über die Tastatur.
Siehe Screens:
Bild 1: Ablauf der Talktime nach 90 Sekunden
Bild 2: Beginn der Talktime für 8 Sekunden
Bild 3: Deutlich über der Zeit nach abschalten des Talktimers.
Falls Du mich meinst, Nein sind sie nicht und ich mache das ja für mich und nicht für die anderen davon ab, den Button Redezeit vorbei oder Sprechzeit überschritten zu nennen ist auch doof.