Message Log Fenster mit IPS Designer

Hallo,

hier ist ein kleines script das ich geschrieben habe was eigentlich ganz nett für diejenigen sein kann, die gerne so ein Message-Log Fenster mit einbinden möchten in IPS Designer:

$new_entry = GetValueString("LAST_MESSAGE");
$message_to_add = Date("d.m.Y")." ".Date("H:i:s")."h  >".chr(9).$new_entry."
";
$actual_message = GetValueString("HMI_MSG_MEMO");

// check if Message Buffer reach already 15
$msg_chunk = explode("
", $actual_message);
$amount_msg = count($msg_chunk);

// When 15 Messages already, delete the 1st to make space for new message
if ($amount_msg == 15)
    {
     unset ($msg_chunk[0]);
     $actual_message = array_merge($msg_chunk);
     $actual_message = implode("
", $actual_message);
    }

// Add new message
$new_message = $actual_message.$message_to_add;
SetValueString("HMI_MSG_MEMO", $new_message);

// Add new message to Log-file
$filename = date("Y")."-".date("W")."-"."MSG.log";

$handle=fopen("C:/Program Files/IP-SYMCON/My Logs/" .$filename."", "a");
fwrite($handle, $message_to_add);
fclose($handle);

Zwei Globale Variablen:

  1. „LAST_MESSAGE“ (String)
  2. „HMI_MSG_MEMO“ (String)

in die erste Variable schreibt man einfach an irgendeiner stelle des Projektes mit IPS_SetString(„LAST_MESSAGE“, „Text“) einen Text hinein.
Dieses obige Script hat als Triggerevent die Variable „LAST_MESSAGE“, und in der zweiten Variable werden dann die Meldungen „angehangen“ bis die gewünschte Anzahl erreicht wurde (in meinem Fall 15). Kommt nun eine neue Meldung hinzu, wird die 1. meldung rausgeschnitten, und die letzte (aktuellste) einfach hintendran gehangen. Somit behält man das String immer gleich lang.
Um zu vermeiden, dass Meldungen verloren gehen, ist der letzte Teil des Scriptes dafür zuständig, jedesmal die letzte Meldung in ein Log-File zu schreiben.

Viel Spass damit

mfG Franz

hallo franz,

habe mal versucht dieses script einzubauen. aber irgentwie klappt was nicht.
das datum und uhrzeit wird im memo feld angezeigt aber einen text dahinter erscheint nicht.
habe die beiden variablen
„LAST_MESSAGE“ (String)
„HMI_MSG_MEMO“ (String) eingefügt.
was ich nicht ganz verstanden habe
in die erste Variable schreibt man einfach an irgendeiner stelle des Projektes mit IPS_SetString(„LAST_MESSAGE“, „Text“) einen Text hinein.
kannst mir das noch mal erklären.

mfg uwe

Hallo,

so muss es lauten:

SetValueString(„LAST_MESSAGE“, „Hallo“);

Ja genau. Das kann an x-irgendeiner Stelle sein. Jedoch, das Script, das die Generierung der HMI_MSG_MEMO Variable beinhaltet muss als Trigger Event die Variable „LAST_MESSAGE“ haben, so wird ja nicht nach jeder neuen Meldung geupdated !

mfG Franz

habe jetzt diesen eintrag
03.01.2006 18:29:12h > Text
03.01.2006 18:29:12h > Text
03.01.2006 18:29:12h > Text
03.01.2006 18:29:12h > Text
03.01.2006 18:29:12h > Text
03.01.2006 18:29:12h > Text
03.01.2006 18:29:12h > Text
03.01.2006 18:29:12h > Text
03.01.2006 18:29:12h > Text
07.01.2006 14:09:08h > Text
07.01.2006 14:09:54h > Hallo
07.01.2006 14:19:01h > Hallo

das script wird durch LAST_MESSAGE getriggert

hier das script

$new_entry = GetValueString(„LAST_MESSAGE“);
$message_to_add = Date(„d.m.Y“)." „.Date(„H:i:s“).„h >“.chr(9).$new_entry.“
";
$actual_message = GetValueString(„HMI_MSG_MEMO“);

// check if Message Buffer reach already 15
$msg_chunk = explode("
", $actual_message);
$amount_msg = count($msg_chunk);

// When 15 Messages already, delete the 1st to make space for new message
if ($amount_msg == 15)
{
unset ($msg_chunk[0]);
$actual_message = array_merge($msg_chunk);
$actual_message = implode("
", $actual_message);
}

// Add new message
$new_message = $actual_message.$message_to_add;
SetValueString(„HMI_MSG_MEMO“, $new_message);

// Add new message to Log-file
$filename = date(„Y“)."-".date(„W“)."-".„MSG.log“;

$handle=fopen(„C:/Programme/IP-SYMCON/Logs/“ .$filename."", „a“);
fwrite($handle, $message_to_add);
fclose($handle);

mfg uwe