do while mit if funktion

Hallo zusammen,
ich habe mal ein script schreiben wollen das solange
einen IR befehl über das IR trans ausgibt bis meine Stereoanlagen Variable
den Befehl quittiert. Aber irgeng wo hackts bei mir.
Könnt ihr mir helfen.
Dank Matthias

do {
$status = GetValuestring(23454 /[Büro\Multimedia\Stereo Anlage\pioneer\AV Reciever\Display]/);

If ($status != " SP: A+B ON " ){
WinLIRC_SendOnce(20739 /[Funktionen\Main Instanzen\WinLIRC]/,„pioneervsx416“, „abspeaker“);
WinLIRC_SendOnce(20739 /[Funktionen\Main Instanzen\WinLIRC]/,„pioneervsx416“, „abspeaker“);
WinLIRC_SendOnce(20739 /[Funktionen\Main Instanzen\WinLIRC]/,„pioneervsx416“, „abspeaker“);
}
while($status= " SP: A+B ON ");

huhu…

sollts ned

while($status== " SP: A+B ON ");

heissen?

probier es mal so.

do
{
    $status = GetValuestring(23454 /*[Büro\Multimedia\Stereo Anlage\pioneer\AV Reciever\Display]*/);

    If ($status != " SP: A+B ON " )
    {
        WinLIRC_SendOnce(20739 /*[Funktionen\Main Instanzen\WinLIRC]*/,"pioneervsx416", "abspeaker");
        WinLIRC_SendOnce(20739 /*[Funktionen\Main Instanzen\WinLIRC]*/,"pioneervsx416", "abspeaker");
        WinLIRC_SendOnce(20739 /*[Funktionen\Main Instanzen\WinLIRC]*/,"pioneervsx416", "abspeaker");
    }
}
while($status == " SP: A+B ON ");

Hi danke schon mal,
aber das script stoppt auch wenn ich die IR Übertragung in der Variable nicht an kommt, läuft nur ein paar Millisekunden durch, es sollte aber doch erst mit IR senden stoppen wenn die Variable sozusagen = IR befehl ist.
habt ihr nocheine Idee
Grüße Matthias

Ich habe dir dass mal geändert, sollte so eigentlich funktionieren.

$check = false;                       
while (!$check)
{                  
    $status = GetValuestring(23454 /*[Büro\Multimedia\Stereo Anlage\pioneer\AV Reciever\Display]*/);
  
    if ($status == " SP: A+B ON ")
    {
        $check = true;
    }
    else
    {
       WinLIRC_SendOnce(20739 /*[Funktionen\Main Instanzen\WinLIRC]*/,"pioneervsx416", "abspeaker");
    }
}

Hi Rainer,
tausend dank musste nur noch ein Timeout einfügen weil die variable nicht sofort umspringt
Danke nochmal

$check = false;                       
$check = false;
while (!$check)
{
    $status = GetValuestring(23454 /*[Büro\Multimedia\Stereo Anlage\pioneer\AV Reciever\Display]*/);
    IPS_Sleep(500);

    if ($status == "  SP: A+B ON  ")
    {
        $check = true;
    }
    else
    {
       WinLIRC_SendOnce(20739 /*[Funktionen\Main Instanzen\WinLIRC]*/,"pioneervsx416", "abspeaker");
    }
}

Ich verstehe jetzt zwar den Sinn der Schleife nicht mehr aber das musst du wissen. Außerdem solltest Du noch eine Zeitbegrenzung oder ähnliches mit einbauen, wenn die Variable nicht true wird, hast Du nämlich eine Endlosschleife, dieses nur noch mal zur Info.

Du hast recht das timeout brauch ich nicht läuft auch so, habs grad noch mal getestet, hatte nur Anfangs das Gefühl das es mit einem Kurzen Timeout besser geht. Das mit der Endlosschleifenbegrenzung wäre wirklich gut aber wie bewerkstelligt man das es nach ca. 7 Sec stoppt.
Grüße und Danke
Matthias