Auswerten des Returncodes einer per Autoit gestarteten Anwendung

  • Hallo Leute,
    ich möchte mit dem dblog- Filer automatisch Daten aus einer SPS ( speicherprogrammierbaren Steuerung) auslesen und en Filer dazu ein wenig automatisieren.
    Ich habe mir das etwa so vorgestellt:

    ;
    ;
    ;Start dblog Filer nach Verbindungsaufbau
    Run("C:\Programme\Uhlemann\dblog Filer 2008\dblfiler.exe /u /f=C:\dbLog2\Cfg\Test01.cfg", "")
    ;/f=... Konfigurationsdatei bei Programmstart automatisch laden.
    ;/u Upload (mit Datenspeicherung) automatisch nach Programmstart beginnen.
    sleep(5000)
    $Error = 999
    $i = 0
    While WinExists("dblog Filer")
    $i = $i + 1
    sleep(1000)
    $Error = @error
    WEnd
    ;Returncodes vom dblog Filer
    ;0 Upload erfolgreich
    ;1 Keine aktiven Einträge in der Datenblockliste
    ;2 Upload von Anwender abgebrochen
    ;3 Keine Verbindung zum S-Bus
    ;4 Fehler beim Zugriff auf den Ausgabeordner
    ;5 Fehler beim Upload (mindestens) eines Datenblocks
    Select
    Case $Error = 0
    MsgBox(0, "", "Upload erfolgreich", 10)
    Case $Error = 1
    MsgBox(0, "", "Keine aktiven Einträge in der Datenblockliste", 10)
    Case $Error = 2
    MsgBox(0, "", "Upload von Anwender abgebrochen", 10)
    Case $Error = 3
    MsgBox(0, "", "Keine Verbindung zum S-Bus", 10)
    Case $Error = 4
    MsgBox(0, "", "Fehler beim Zugriff auf den Ausgabeordner", 10)
    Case $Error = 5
    MsgBox(0, "", "Fehler beim Upload (mindestens) eines Datenblocks", 10)
    Case Else
    MsgBox(0, "", "ungültiger Returncode!", 10)
    EndSelect
    WinClose("dblog Filer")
    sleep(5000)
    ; Auswertung Returncode
    ;
    ;
    ;
    Exit
    Der Start des dblog Filers klappt auch prima, nur der Errorcode ist und bleibt 0. Wahrscheinlich fehlt mir der Errorcode- Bezug zum dblog- Filer selbst und
    ich frage den Errorcode von Autoit ab....
    Die Frage ist auch, ob mit Rückgabewert üebrhaupt der Errorcode gemeint ist ?
    Ich hoffe, Ihr könnt helfen...

  • ich könnte mir vorstellen, dass der Programmaufruf ein Handle braucht, damit der ErrorCode ausgelesen werden kann.

    [autoit]

    $error = Run("C:\Programme\Uhlemann\dblog Filer 2008\dblfiler.exe /u /f=C:\dbLog2\Cfg\Test01.cfg", "")

    [/autoit]

    MfG Schnuffel

    "Sarkasmus ist die niedrigste Form des Witzes, aber die höchste Form der Intelligenz."
    Val McDermid

    ein paar Infos ...

    Wer mehr als "nur" Hilfe benötigt, kann sich gern im Forum "Programmieranfragen" an uns wenden. Wir helfen in allen Fällen, die die Forenregeln zulassen.

    Für schnelle Hilfe benötigen wir ein ! lauffähiges ! Script, dass wir als Demonstration des Problems testen können. Wer von uns erwartet ein Teilscript erstmal lauffähig zu bekommen, der hat
    1. keine wirkliche Not
    2. keinen Respekt vor Menschen die ihm in ihrer Freizeit Ihre Hilfe anbieten
    3. oder ist einfach nur faul und meint wir coden das für ihn

    In solchen Fällen erlaube ich mir, die Anfrage einfach zu ignorieren. ;)

  • verwende doch RunWait. das wartet, bis der Prozess beendet ist und gibt dann als rückgabe den exitcode (return value) vom Programm aus.

    [autoit]

    $Return = RunWait("dblog.exe")

    [/autoit]


    //Edit: wenn das Programm nicht gestartet werden kann, ist $return = 0 und @error <> 0

  • Danke erst einmal für die schnellen Antworten.
    Ich werde morgen früh das mal ausprobieren...

  • So, habs entlich ausprobieren können...es funktioniert so wie gewünscht !!
    Erst einmal vielen Dank an Schnuffel & progandy.

    Der Tipp von progandy war der Volltreffer.

    verwende doch RunWait. das wartet, bis der Prozess beendet ist und gibt dann als rückgabe den exitcode (return value) vom Programm aus.

    [autoit]

    $Return = RunWait("dblog.exe")

    [/autoit]


    //Edit: wenn das Programm nicht gestartet werden kann, ist $return = 0 und @error <> 0

    Und so gehts:

    ;Start dblog Filer nach Verbindungsaufbau
    $Return = RunWait("C:\Programme\Uhlemann\dblog Filer 2008\dblfiler.exe /u /x /f=C:\dbLog2\Cfg\Test01.cfg", "")
    ;/f=... Konfigurationsdatei bei Programmstart automatisch laden.
    ;/u Upload (mit Datenspeicherung) automatisch nach Programmstart beginnen.
    ;/x Beenden vom dblog Filer nach Upload
    ;
    ;
    ;Returncodes vom dblog Filer
    ;0 Upload erfolgreich
    ;1 Keine aktiven Einträge in der Datenblockliste
    ;2 Upload von Anwender abgebrochen
    ;3 Keine Verbindung zum S-Bus
    ;4 Fehler beim Zugriff auf den Ausgabeordner
    ;5 Fehler beim Upload (mindestens) eines Datenblocks
    Select
    Case $Return = 0
    MsgBox(0, "", "Upload erfolgreich", 10)
    Case $Return = 1
    MsgBox(0, "", "Keine aktiven Einträge in der Datenblockliste", 10)
    Case $Return = 2
    MsgBox(0, "", "Upload von Anwender abgebrochen", 10)
    Case $Return = 3
    MsgBox(0, "", "Keine Verbindung zum S-Bus", 10)
    Case $Return = 4
    MsgBox(0, "", "Fehler beim Zugriff auf den Ausgabeordner", 10)
    Case $Return = 5
    MsgBox(0, "", "Fehler beim Upload (mindestens) eines Datenblocks", 10)
    Case Else
    MsgBox(0, "", "ungültiger Returncode!", 10)
    EndSelect

    Vielen Dank nochmal, super !! :thumbup: