Meldung, wenn kein IO-Warrior gefunden wird

Hallo zusammen

Wenn ich per Script einen IO-Warrior abfrage, welcher gerade nicht am System angeschlossen ist, erhalte ich folgende Meldung:

15.08.2011 22:09:55 Fehler Fehler beim Ausführen der Aktion Script ausführen (C:\Programme\mAirList\scripts\matrixbox\mAirListStartup.mls): Laufzeitfehler: (126, 5) Exception: Access violation at address 00837C1B in module ‘mAirList.exe’. Read of address 0000005C

Gibt es eine Möglichkeit, dass ich per Script zuerst abfragen kann, ob der IO-Warrior vorhanden ist?

DANKE
Michel

Hi,

Einfach code zwischen try… except… finally einbinden.
Tritt ein Fehler auf, wird der Code bei except ausgefuehrt. Hier kann dann I’m einfachsten Fall z.B. exit stehen.
Der Code hinter finally wird immer ausgefuehrt.

Gruss:
-Serge-

Hallo

Habe heute das bestehende Script mit try… except… finally erweitert. Funktioniert super.
Nun soll noch, wenn kein IO-Warrior gefunden wird, eine aktive Meldung in der Playlist erscheinen.

Das ganze Funktioniert. Element wird nicht angezeigt.
CurrentPlaylist.GetCount gibt ein Element zurück.

Eine Idee?
DANKE Michel

Folgendes Script wird im StartupActions.mla aufgerufen

<?xml version="1.0" encoding="utf-8"?> C:\Program Files\mAirList\scripts\mAirListStartup.mls
procedure AddDummyPlaylistItem(strTitel: string);
var
  pi: IBreakPlaylistItem;
begin
  pi := Factory.CreateBreakPlaylistItem;
  pi.SetTitle('Automations-Unterbrechung');
  //Def. Farbe
  pi.SetColor($000000FF);
  pi.SetColored(true);
  //Füge ein Break-Element der Playlist hinzu.
  CurrentPlaylist.Add(pi);
  SystemLog('Es wurde ein Break-Element am Ende der Playlist hinzugefügt');
end;

begin 
  try
    // Setze IO-Warrior RedLED (Port 6.7)
      IOWarriorRemote(0).SetPort(pRedLED,true)
      SystemLog('IO-Warrior wurde erfolgreich initialisiert.');
   except
	SystemLog('ACHTUNG: IO-Warrior ist nicht vorhanden!!!');
	AddDummyPlaylistItem('ACHTUNG: IO-Warrior ist nicht vorhanden!!!');
	exit;
   finally
  end;
end.

Ich verstehe die Frage nicht ganz. Ich habe das Script getestet (vorher pRedLED durch 0 ersetzt, da Konstante bei mir nicht definiert), ohne angeschlossenen IOWarrior. Es erscheint eine Meldung im Systemprotokoll und am Ende der Playlist das rote Warnelement.

Was nun?

Aha, komme meinem Fehler auf die Schliche. ???

  1. Mein Script erstellt gar kein Dummy Element, sondern ein BreakPlaylistItem. Schon mal falsch
  2. mAirList schmeist diese Elemente im Assist direkt in den Papierkorb.

Habe auf CreateDummyPlaylistItem gewechselt. Nun wird das Element jedoch noch immer nicht angezeigt.
Eventuell muss ich noch eine Einstellung wechseln.

procedure AddDummyPlaylistItem(strTitel: string); var dpi: IDummyPlaylistItem; begin dpi := Factory.CreateDummyPlaylistItem; dpi.SetTitle(strTitel); //Def. Farbe dpi.SetColor($000000FF); dpi.SetColored(true); //Füge ein Dummy-Element der Playlist hinzu. CurrentPlaylist.Add(dpi); SystemLog('Es wurde ein Dummy-Element am Ende der Playlist hinzugefügt'); end;

Habe gerade gesehen, dass mAirList einen nicht vorhandenen IO-Warrior sauber im SystemLog vermerkt.
Kann ich diese Fehler auch irgendwie weiterleiten z.B. als E-Mail?

06.12.2011 16:34:23 Fehler Error (de-)activating object “IO-Warrior”: IOWarrior device not found.