Hilfe

  • Brauche Hilfe muss aus einem text feil wie der (


    2 AI 11ov 16 fg


    Elozolohnung Eingang


    E 1: Analog Eingang 5.01 V


    E 2: Analog Eingang 5.01 V) die letzen zwei Zeilen auslesen
    und mit den vorgegebenen werten im Programm
    vergleiche ?( ?( ?(

  • danke oskar aber er öffnet mit den file nicht ich versuhe es so
    $file = FileOpen("foto1.txt", 0)

    If $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf

    FileClose($file)

    $nOffset = 1
    und wenn es nicht öffne kann dann kann es nicht lesen oder?????

    • Offizieller Beitrag

    Ich versuche mal aus Deinem Geschreibsel etwas herauszulesen... :P
    Wenn die Datei nicht geöffnet wird, dann liegt sie vielleicht nicht im selben Verzeichnis wie das Script?!
    Falls dem so ist, solltest Du bei FileOpen den Pfad zu der Datei mit angeben.

    Außerdem: In Deinem Script gibt es gar kein FileReadLine().

    • Offizieller Beitrag

    Meine Glaskugel ist gerade beim Polierer (war schon ganz schön abgenutzt). ;)

    Beschreibe Dein Problem genauer:
    - Was steht in der Datei (am besten Datei posten)?
    - Was kann dort noch alles drinstehen?
    - Befinden sich die Werte immer in der gleichen Zeile? Immer hinter/vor einem Schlüsselwort?
    - Was sind das für Vorgaben, die Du machst?
    - Mit wie vielen Vorgaben soll der Wert verglichen werden?
    - Wie und wo sind diese Vorgaben gespeichert?
    - Was soll nach dem Vergleich geschehen?
    - Wo ist Dein bisheriges Script?

    Immer dran denken: Wir können keine Gedanken lesen!

  • es soll wirklich nur die letzten zeilen einlesen und mit der zahlen die ich im vorgbe vergleichen plüs minus 10 prozent abweichung . von den letzten zeilen brauche ich nur 5.01 v und muss die vergleichen mit vorgaben die wehre 5.00v. und er soll das automatisch machen . zum schluss gib er in der msg box war alles ok oder nicht? ?( ?( ?( ?(

  • [autoit]


    #include <Array.au3>
    #include <String.au3>
    _FileReadToArray("datei.txt",$file);hier dein "Feil" eintragen
    $eins=_StringBetween($file[Ubound($file)-2],"Eingang "," V")
    $zwei=_StringBetween($file[Ubound($file)-1],"Eingang "," V")
    Msgbox(64,"Ergebnis",$eins[0] & @CRLF & $zwei[0])

    [/autoit]


    Kanns nicht testen, hab grad keinen PC hier im UK.
    Das war auswendig :rock:

    Edit:edit.

    Twitter: @L3viathan2142
    Benutze AutoIt persönlich nicht mehr, da ich keinen Windows-Rechner mehr besitze.

    Einmal editiert, zuletzt von L3viathan2142 (29. Juni 2009 um 19:29)

  • Danke für so viel gedult
    In der datei steht das drin(
    2 AI 11ov 16 fg
    Elozolohnung Elngang
    E 1: Analog Elngang 5.01 V
    E 2: Analog Elngang 5.01 V

    ) und ich muss nur die letzte 2 zeile vergleichen das sind die 5.01v . das muss ich mit der 5 plüs minus 10% abweichung dich im vorgebe vergleichen es soll mit zwei werten vegleichen werden. nach dem vergleich soll ein ausgabe folgen über msg box folgen das die werte schtimmen. skript ist hier{
    #include <GUIConstants.au3>
    #include <StaticConstants.au3>
    #include <ChangeResolution.au3>
    #include <Array.au3>
    #include <String.au3>

    Opt("WinWaitDelay", 100)
    Opt("WinTitleMatchMode", 4)
    Opt("WinDetectHiddenText", 1)
    Opt("MouseCoordMode", 0)
    Opt("CaretCoordMode", 0)

    $iWidth = 1280
    $iHeight = 1024
    $iBitsPP = 32
    $iRefreshRate = 60

    Dim $fehlerindex = 0
    dim $Summefehler = 0

    $vRes = _ChangeScreenRes($iWidth, $iHeight, $iBitsPP, $iRefreshRate)
    If @error Then
    MsgBox(262160, "ERROR", "Unable to change screen - check parameters")
    EndIf
    Sleep(1000)

    $zurueck = MsgBox(1,"", "Bevor sie das Programm starten bitte die Verbindung überprüfen")
    If $zurueck = 1 Then
    Run("C:\Programme\WAGO Software\WAGO-IO-Check 3\IOCheck3.exe")
    Sleep(4000)
    WinMove("Knoten1 - WAGO-I/O-Check 3", "", 100, 100, 1024, 768)
    Sleep(3000)
    Send("{F8}")
    Send("{Tab}")
    Send("{Tab}")
    Send("{Tab}")
    Send("{Tab}")
    Send("{Tab}")
    Send("{Tab}")
    ;Kommunikation schneiet stehlen Auswahl
    ;Sleep(1000)
    ;Send("{down}")
    ;Send("{down}")
    Sleep(2000)
    Send("{Enter}")
    Sleep(2000)
    Send("{F5}")
    Sleep(2000)
    Send("{F6}")
    Sleep(2000)

    ; Im unteren abschnitt von WinWait bis sleep(2000) wird per maus klick das Navi Fenster aktiviert und pos Fenster ausgewählt.
    WinWait("Knoten1 - WAGO-I/O-Check 3","Navigation")
    If Not WinActive("Knoten1 - WAGO-I/O-Check 3","Navigation") Then WinActivate("Knoten1 - WAGO-I/O-Check 3","Navigation")
    WinWaitActive("Knoten1 - WAGO-I/O-Check 3","Navigation")
    MouseMove(104,257)
    MouseDown("left")
    MouseUp("left")
    Sleep(1000)
    Send("{down}")
    Send("{CTRLDOWN}{SHIFTDOWN}v{SHIFTUP}{CTRLUP}")
    Sleep(2000)

    ;Pos Fenster Aktivierung
    WinWait("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    If Not WinActive("Pos.1: 0750-04xx"," IDC_DESCRIPTION") Then WinActivate("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    WinWaitActive("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    Send("{CTRLDOWN}{RIGHT}{CTRLUP}")
    Send("{CTRLDOWN}{SHIFTDOWN}v{SHIFTUP}{CTRLUP}")
    Sleep(2000)

    ;Pos Fenster verschibung
    WinWait("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    If Not WinActive("Pos.2: 0750-05xx"," IDC_DESCRIPTION") Then WinActivate("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    WinWaitActive("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    MouseMove(82,10)
    MouseDown("left")
    MouseMove(247,9)
    MouseUp("left")
    Sleep(2000)

    ;Wird Fenster ausgewählt
    WinWait("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    If Not WinActive("Pos.2: 0750-05xx"," IDC_DESCRIPTION") Then WinActivate("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    WinWaitActive("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    MouseMove(171,84)
    MouseDown("left")
    MouseUp("left")
    Sleep(3000)

    ;Wird Fenster ausgewählt und Ausgenge gesetzt
    WinWait("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    If Not WinActive("Pos.2: 0750-05xx"," IDC_DESCRIPTION") Then WinActivate("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    WinWaitActive("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    If Not WinActive("Pos.1: 0750-04xx"," IDC_DESCRIPTION") Then WinActivate("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    WinWaitActive("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    Send("{CTRLDOWN}{LEFT}{CTRLUP}")
    Sleep(2000)
    MouseMove(150, 85)
    Sleep(2000)
    $var1 = PixelGetColor( 656 , 484)
    Sleep(1000)
    If $var1 = 0x00ff00 Then
    $fehlerindex = 0
    ElseIf $var1 < 0x00ff00 Or $var1 > 0x00ff00 Then
    $Summefehler = $Summefehler+1
    EndIf
    Sleep(3000)

    ;springt zwieschen 0750-04xx und 07400-05xx . setzt die elede
    If Not WinActive("Pos.1: 0750-04xx"," IDC_DESCRIPTION") Then WinActivate("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    WinWaitActive("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    Send("{CTRLDOWN}{RIGHT}{CTRLUP}")
    Sleep(1000)
    WinWait("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    If Not WinActive("Pos.2: 0750-05xx"," IDC_DESCRIPTION") Then WinActivate("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    WinWaitActive("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    Sleep(1000)
    Send("{TAB}")
    Sleep(1000)
    Send("{CTRLDOWN}{LEFT}{CTRLUP}")
    Sleep(1000)
    WinWait("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    If Not WinActive("Pos.1: 0750-04xx"," IDC_DESCRIPTION") Then WinActivate("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    WinWaitActive("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    MouseMove(150, 110)
    Sleep(1000)
    Send("{CTRLDOWN}{RIGHT}{CTRLUP}")
    Sleep(2000)
    $var2 = PixelGetColor( 656 , 509 )
    Sleep(1000)
    If $var2 = 0x00ff00 Then
    $fehlerindex=0
    ElseIf $var2 < 0x00ff00 Or $var2 > 0x00ff00 Then

    $Summefehler = $Summefehler+1
    EndIf

    Sleep(2000)
    ;springt zwieschen 0750-04xx und 07400-05xx . setzt die elede
    WinWait("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    If Not WinActive("Pos.2: 0750-05xx"," IDC_DESCRIPTION") Then WinActivate("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    WinWaitActive("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    Sleep(1000)
    Send("{TAB}")
    Sleep(1000)
    Send("{CTRLDOWN}{LEFT}{CTRLUP}")
    Sleep(1000)
    WinWait("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    If Not WinActive("Pos.1: 0750-04xx"," IDC_DESCRIPTION") Then WinActivate("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    WinWaitActive("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    MouseMove(150,135)
    Sleep(1000)
    Send("{CTRLDOWN}{RIGHT}{CTRLUP}")
    Sleep(2000)
    $var3 = PixelGetColor( 656 , 534 )
    Sleep(1000)
    If $var3 = 0x00ff00 Then
    $fehlerindex=0
    ElseIf $var3 < 0x00ff00 Or $var3 > 0x00ff00 Then
    $Summefehler = $Summefehler+1
    EndIf

    Sleep(2000)
    ;springt zwieschen 0750-04xx und 07400-05xx . setzt die elede
    WinWait("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    If Not WinActive("Pos.2: 0750-05xx"," IDC_DESCRIPTION") Then WinActivate("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    WinWaitActive("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    Sleep(1000)
    Send("{TAB}")
    Sleep(1000)
    Send("{CTRLDOWN}{LEFT}{CTRLUP}")
    Sleep(1000)
    WinWait("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    If Not WinActive("Pos.1: 0750-04xx"," IDC_DESCRIPTION") Then WinActivate("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    WinWaitActive("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    MouseMove(150, 165)
    Sleep(2000)
    $var4 = PixelGetColor( 656 , 558 )
    Sleep(1000)
    If $var4 = 0x00ff00 Then
    $fehlerindex = 0
    ElseIf $var4 < 0x00ff00 Or $var4 > 0x00ff00 Then
    $Summefehler = $Summefehler+1
    EndIf

    Sleep(2000)
    ; gibt die fehler aus
    If $Summefehler > 0 Then
    MsgBox(0," Überprüfung von digital Klemme ergab fehle = :", $Summefehler)
    ElseIf $Summefehler = 0 Then
    MsgBox(0," Überprüfung von digital Klemme ergab fehle = :" ,$fehlerindex)
    EndIf
    ;digitale klemmen auswertung ende

    ;analoge anfang
    Sleep(2000)

    WinWait("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    If Not WinActive("Pos.1: 0750-04xx"," IDC_DESCRIPTION") Then WinActivate("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    WinWaitActive("Pos.1: 0750-04xx"," IDC_DESCRIPTION")
    MouseMove(194,12)
    MouseDown("left")
    MouseUp("left")
    Send("{ESC}")
    Send("{ESC}")
    Sleep(2000)
    WinWait("Knoten1 - WAGO-I/O-Check 3","Navigation")
    If Not WinActive("Knoten1 - WAGO-I/O-Check 3","Navigation") Then WinActivate("Knoten1 - WAGO-I/O-Check 3","Navigation")
    WinWaitActive("Knoten1 - WAGO-I/O-Check 3","Navigation")
    Send("{CTRLDOWN}{RIGHT}{CTRLUP}")
    Sleep(2000)
    WinWait("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    If Not WinActive("Pos.2: 0750-05xx"," IDC_DESCRIPTION") Then WinActivate("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    WinWaitActive("Pos.2: 0750-05xx"," IDC_DESCRIPTION")
    MouseMove(194,12)
    MouseDown("left")
    MouseUp("left")
    Send("{ESC}")
    Sleep(2000)
    WinWait("Knoten1 - WAGO-I/O-Check 3","Navigation")
    If Not WinActive("Knoten1 - WAGO-I/O-Check 3","Navigation") Then WinActivate("Knoten1 - WAGO-I/O-Check 3","Navigation")
    WinWaitActive("Knoten1 - WAGO-I/O-Check 3","Navigation")
    Send("{CTRLDOWN}{RIGHT}{CTRLUP}{CTRLDOWN}{SHIFTDOWN}v{CTRLUP}{SHIFTUP}")
    Sleep(2000)
    WinWait("Pos.3: 0750-0476"," IDC_DESCRIPTION")
    If Not WinActive("Pos.3: 0750-0476"," IDC_DESCRIPTION") Then WinActivate("Pos.3: 0750-0476"," IDC_DESCRIPTION")
    WinWaitActive("Pos.3: 0750-0476"," IDC_DESCRIPTION")
    Send("{CTRLDOWN}{RIGHT}{CTRLUP}")
    Sleep(2000)
    WinWait("Knoten1 - WAGO-I/O-Check 3","Navigation")
    If Not WinActive("Knoten1 - WAGO-I/O-Check 3","Navigation") Then WinActivate("Knoten1 - WAGO-I/O-Check 3","Navigation")
    WinWaitActive("Knoten1 - WAGO-I/O-Check 3","Navigation")
    Send("{CTRLDOWN}{SHIFTDOWN}v{SHIFTUP}{CTRLUP}")
    Sleep(2000)
    WinWait("Pos.4: 0750-0556"," 4AI, 0-10V, S.E.")
    If Not WinActive("Pos.4: 0750-0556"," 4AI, 0-10V, S.E.") Then WinActivate("Pos.4: 0750-0556"," 4AI, 0-10V, S.E.")
    WinWaitActive("Pos.4: 0750-0556"," 4AI, 0-10V, S.E.")
    MouseMove(65,9)
    MouseDown("left")
    MouseMove(233,-1)
    MouseUp("left")
    Sleep(1000)
    Send("{NUMPAD5}")
    Sleep(1000)
    Send("{ENTER}")
    Sleep(1000)
    Send("{TAB}")
    Sleep(1000)
    Send("{NUMPAD5}")
    Sleep(1000)
    Send("{ENTER}")
    Sleep(2000)
    WinWait("Pos.3: 0750-0476"," IDC_DESCRIPTION")
    If Not WinActive("Pos.3: 0750-0476"," IDC_DESCRIPTION") Then WinActivate("Pos.3: 0750-0476"," IDC_DESCRIPTION")
    WinWaitActive("Pos.3: 0750-0476"," IDC_DESCRIPTION")
    Send("{CTRLDOWN}{Left}{CTRLUP}")
    Sleep(2000)
    Run("C:\Dokumente und Einstellungen\admin\Desktop\ScreenShot\ScreenShot2.exe")
    Sleep(2000)
    Send("{F2}")
    Sleep(3333)
    ; Programm (orc) start und Programm Ausführung
    Run("C:\Programme\FreeOCR25\FreeOCR.exe")
    Sleep(4000)
    WinWait("FreeOCR.net","")
    If Not WinActive("FreeOCR.net","") Then WinActivate("FreeOCR.net","")
    WinWaitActive("FreeOCR.net","")
    Send("{ALTDOWN}{ALTUP}")
    Sleep(1000)
    Send("{RIGHT}{RIGHT}")
    Sleep(2000)
    Send("{ENTER}{ENTER}")
    Sleep(3000)
    Send("{ALTDOWN}{ALTUP}")
    Sleep(1000)
    Send("{ENTER}")
    Sleep(1000)
    Send("{ENTER}")
    Sleep(1000)
    Send("{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}")
    Sleep(1000)
    Send("{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}")
    Sleep(1000)
    Send("{ENTER}")
    Sleep(2000)
    Send("{ALTDOWN}{ALTUP}")
    Sleep(1000)
    Send("{RIGHT}")
    Sleep(1000)
    Send("{ENTER}")
    Sleep(1000)
    Send("{ENTER}")
    Sleep(4000)
    Send("{ALTDOWN}{ALTUP}")
    Sleep(1000)
    Send("{RIGHT}{RIGHT}")
    Sleep(1000)
    Send("{ENTER}")
    Sleep(1000)
    Send("{DOWN}")
    Sleep(1000)
    Send("{ENTER}")
    Sleep(2000)
    WinWait("Speichern unter","")
    If Not WinActive("Speichern unter","") Then WinActivate("Speichern unter","")
    WinWaitActive("Speichern unter","")
    Sleep(1000)
    Send("foto1{ENTER}")
    Sleep(2000)
    Send("{ALTDOWN}F{ALTUP}")
    Sleep(1000)
    Send("{DOWN}{DOWN}{DOWN}{DOWN}{DOWN}")
    Sleep(1000)
    Send("{ENTER}")
    Sleep(5000)
    ;Auswerhtung

    $file = FileOpen("C:\Dokumente und Einstellungen\admin\Desktop\foto1.txt", 0)

    ; Prüfen, ob Datei eingelesen wurde
    If $file = -1 Then
    MsgBox(0, "Fehler", "Die Datei konnte nicht geöffnet werden.")
    Exit
    EndIf

    ; Zeilen des Textes einlesen bis EOF
    While 1
    $line = FileReadLine($file)
    If @error = -1 Then ExitLoop
    MsgBox(0, "Zeile gelesen:", $line)
    Wend

    FileClose($file)

    _FileReadToArray("C:\Dokumente und Einstellungen\admin\Desktop\foto1.txt",$file);hier dein "Feil" eintragen
    $eins=_StringBetween($file[Ubound($file)-2],"Eingang "," V")
    $zwei=_StringBetween($file[Ubound($file)-1],"Eingang "," V")
    Msgbox(64,"Ergebnis",$eins[0] & @CRLF & $zwei[0])

    ;StringRegExp ( "E 1: Analog Elngang 5.01 V", "5.01V" [, 1 ] [, $nOffset] ] )
    ;StringRegExp ( "E 2: Analog Elngang 5.01 V", "5.01V" [, 1 ] [, $nOffset] ] )


    ;$ueberprufung = MsgBox(1,"Der hexadezimale Wert der Farben lautet: ", Hex($var1, 6) & ", " & Hex($var2, 6) & ", " & Hex($var3, 6) & ", " & Hex($var4, 6))
    ;If $ueberprufung =1 Then
    ;$var1 & $var2 & $var3 & $var4= 0x00ff00

    ElseIf $zurueck = 2 Then
    MsgBox(0,"", " Überprüfen und Neue Starten ")
    EndIf
    } Hilfe es funktionirt alles bis auf die auswertung