Inbox eingabe speichern

  • Hallo zusammen,
    ich schreibe jetzt meinen 1. Beitrag hier und ich hoffe ihr könnt mich Irgendwie Unterstüzen.
    Ich Arbeite als Techniker und versuche mir gerade meine bald anstehenden Nachteinsätze zu verkürzen
    (wird ja nicht bezahlt :cursing: ).
    Es ist so wie Betreuen Automaten. Dieser kann ohne Buchung Artikel nur mit Kundenkarte ausgeben.
    Als Techniker gibt es zum Glück verschiedene wege.
    Aufjedenfall Erfordert es mehrer Eingaben um Artikel vorn ohne Buchung aus zu laden.
    Was immer mit Zeit und Fehlern verbunden wäre.
    Ich habe mein Scribt schon soweit fertig. Es läuft auch aber der i Punkt fehlt noch.
    Ich habe eine Inbox erstellt aber noch ohne Funktion. Da ich das noch nicht verstanden habe...
    Anforderung:
    Inbox Eingabe muss auf 4 Zahlen von 0 - 9 begrenzt sein.
    Die 4 Zahlen müssen in 2 zeilen des Scribtes nach dem Enter drücken eingefügt werden.
    $Fach= Der Vierstellige Lagerort das Artikels
    Er ist Elementar wichtig das der 4Stellige eingetragene Zahlen wert in die beiden Zeilen des Scribtes eingetragen wird.

    [autoit]

    $fach=InputBox("Lagerplatzeingabe","Bitte geben Sie den Lagerplatz des Schlüssels ein:","","",350,100)
    Run ("cmd")
    Sleep (2000)
    Send ("telnet{SPACE}192.168.0.175{SPACE}9001{ENTER}")
    Sleep (5000)
    Send ("lock{SPACE}server01{ENTER}")
    sleep(3000)
    Send("gopos{SPACE}server01{SPACE}$fach{ENTER}")
    Sleep(20000)
    Send("store{SPACE}server01{SPACE}unload{SPACE}$fach{ENTER}")
    Sleep(10000)
    Send("gopos{SPACE}user{ENTER}")
    Sleep(10000)
    send("store{SPACE}server01{SPACE}load{SPACE}user{ENTER}")
    Sleep(10000)
    Send("scan{SPACE}server01{SPACE}out{ENTER}")
    Sleep(10000)
    Send("gate{SPACE}server01{SPACE}reject{ENTER}")
    Sleep(10000)
    Send("gate{SPACE}server01{SPACE}close{ENTER}")
    Sleep(10000)
    Send("unlock{SPACE}server01{ENTER}")
    Exit

    [/autoit]


    Vielen dank für eure Hilfe im vorraus


    Lg Acci

  • Wahrscheinlich bin ich echt zu Doof dafür.
    Danke erstmal für deine schnelle Hilfe.
    Achja unbekannterweiser wünsche ich alles gute zum Geburstag ;)

    Back to Topic:
    Ich habe deine zeilen so wie du es geschrieben hast eingefügt.
    Der Zahlen wert aus der Eingabe wird nicht in die Zeilen des Scribtes geschrieben Irgendwas mach ich falsch!?!?
    Achja und die Inbox öffnet sich nach der Eingabe immer wieder. Kann man das Abstellen?
    Danke nochmal für die Hilfe

  • Erstmal herzlich willkommen im Forum ;)

    An welchen Stellen müsste die Zahl denn eingetragen werden?

    Die maximale Anzahl einzugebender Zeichen kannst du mit dem 4ten parameter von Inputbox festlegen, so wie Funkey es auch gemacht hat. ([Leerzeichen] = kein Passwort-Charakter, M = eingabe ist ein Muss (darf nicht leer sein) und 4 für maximal 4 Zeichen.

    Übrigens: Das Exit kannst du weglassen, das wird nur für ein Beenden vor dem Ende des Scripts gebraucht.

    Ich würd das so machen:

    Spoiler anzeigen
    [autoit]

    $fach = InputBox("Lagerplatzeingabe", "Bitte geben Sie den Lagerplatz des Schlüssels ein:", "", " M4", 350, 100)
    While Not StringIsInt($fach) Or StringLen($fach) <> 4 ;Solange die Eingabe KEIN Integer (ganze Zahl) ist ODER NICHT die Länge 4 hat...
    $fach = InputBox("Lagerplatzeingabe", "Die Eingabe ist ungültig!" & @CRLF & "Bitte versuchen sie es erneut:", "", " M4", 350, 130) ;fragen wir weiter nach.
    WEnd
    Run("cmd")
    Sleep(2000)
    Send("telnet{SPACE}192.168.0.175{SPACE}9001{ENTER}")
    Sleep(5000)
    Send("lock{SPACE}server01{ENTER}")
    Sleep(3000)
    Send("gopos{SPACE}server01{SPACE}$fach{ENTER}")
    Sleep(20000)
    Send("store{SPACE}server01{SPACE}unload{SPACE}$fach{ENTER}")
    Sleep(10000)
    Send("gopos{SPACE}user{ENTER}")
    Sleep(10000)
    Send("store{SPACE}server01{SPACE}load{SPACE}user{ENTER}")
    Sleep(10000)
    Send("scan{SPACE}server01{SPACE}out{ENTER}")
    Sleep(10000)
    Send("gate{SPACE}server01{SPACE}reject{ENTER}")
    Sleep(10000)
    Send("gate{SPACE}server01{SPACE}close{ENTER}")
    Sleep(10000)
    Send("unlock{SPACE}server01{ENTER}")

    [/autoit]

    Schreib am besten mal in die Stellen vom Script wo die Zahl hinsoll ein "xxxx".

    Außerdem solltest du solche Befehle besser über RunWait() ausführen.

  • Hallo ich hatte beschrieben das die Eingegeben Zahlen bei "$Fach" rein müssen aber bin sehr dankbar für die Unterstüzung.
    Die Zahlen müssen in diese beiden Zeilen.

    Send("gopos{SPACE}server01{SPACE}$fach{ENTER}")
    Send("store{SPACE}server01{SPACE}unload{SPACE}$fach{ENTER}")
    jeweils an die stelle von "$Fach"
    Wie gesagt ich bin nicht sehr belesen was das Thema Scribte angeht. Dies ist auch mein aller erstes Scibt :D
    Zwei fragen zu deiner Antwort hätte ich noch:
    1. Wenn ich ENDE weglasse und die Erstellte .EXE teste dann hört es einfach nicht mehr auf. Er schreibt befehl für befehl wie ein Loop. Bist du dir sicher mit dem weglassen?

    2. Wie ist das gemeint "Außerdem solltest du solche Befehle besser über RunWait() ausführen. "
    Das Problem was ich habe ist ich muss Zeiten einplanen. Wenn ich diese Befehle Händisch tippe. Muss ich für den nächsten Befehl auf das "OK" unserer Software warten. Deshalb dachte ich mir ich muss Pausen einplanen. Und immer vom längsten weg des Automaten ausgehen. Die 10Sek. Fenster sind zwar manchmal lang. War aber mit meinem Wissen die einzige Lösung

    Danke für die Hilfe

    Lg

  • du kannst auch die Ausgabe im Dos-Fenster auslesen und auswerten, um die nächste Eingabe zu tätigen.
    schau Dir dazu mal den Befehl StderrRead in der Hilfe an.

    Ansonsten mal ein Beispiel wie das mit der Variable grundsätzlich geht...

    Spoiler anzeigen
    [autoit]

    Opt("WinTitleMatchMode",2); damit das Script Teile des Fenstertitels erkennt

    [/autoit] [autoit][/autoit] [autoit]

    Do
    $fach = InputBox("Lagerplatzeingabe", "Bitte geben Sie den Lagerplatz des Schlüssels ein:", "", " M4", 180, 130)
    If @error = 1 Then Exit
    Until StringIsInt($fach) And StringLen($fach) = 4; "And StringLen($fach) = 4" kann weggelassen werden, wenn auch 1-, 2- oder 3-stellige Zahlen erlaubt sind

    [/autoit] [autoit][/autoit] [autoit]

    Run("cmd")
    WinWait("cmd.exe"); wartet bis das Fenster mit dem Teilinhalt cmd.exe erscheint
    Send ("cd\{ENTER}cls{ENTER}")
    Send ("telnet 192.168.0.175 9001{ENTER}")

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    Sleep (5000)
    Send ("lock server01{ENTER}")
    sleep(3000)
    Send("gopos server01 "&$fach&"{ENTER}")
    Sleep(20000)
    Send("store server01 unload "&$fach&"{ENTER}")
    Sleep(10000)
    Send("gopos user{ENTER}")
    Sleep(10000)
    send("store server01 load user{ENTER}")
    Sleep(10000)
    Send("scan server01 out{ENTER}")
    Sleep(10000)
    Send("gate server01 reject{ENTER}")
    Sleep(10000)
    Send("gate server01 close{ENTER}")
    Sleep(10000)
    Send("unlock server01{ENTER}")
    Exit

    [/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. ;)

  • super ich danke euch für die schnelle Unterstüzung!

    Nun läuft es wie gewünscht ;)

    Feinheiten kommen jetzt noch.


    Danke nochmal


    LG

  • So nun stehe ich vor dem nächsten Prob.
    Ich glaub ich habe es mir zu leicht gemacht.
    Ich habe eure Tipps eingefügt, habe aber vergessen das ich das ja auch von anderen PC´s aus machen kann (muss)
    Deshalb müsste der PC Name auch Variabel werden.
    Kopiert habe ich eure Zeilen und in meinen auch die Wert eingetragen. Aber nach der Eingabe des PC Names...
    Kommt die eingabe des PCNamen´s, Kommt die eingabe des PCNamen´s, Kommt die eingabe des PCNamen´s
    Irgendwie ist da nun ein Loop drin, könntet ihr noch mal drüber schauen?

    [autoit]

    Opt("WinTitleMatchMode",2); damit das Script Teile des Fenstertitels erkennt
    Do
    $fach = InputBox("Lagerplatzeingabe", "Bitte geben Sie den Lagerplatz des Schlüssels ein:", "", " M4", 180, 130)
    If @error = 1 Then Exit
    Until StringIsInt($fach) And StringLen($fach) = 4; "And StringLen($fach) = 4" kann weggelassen werden, wenn auch 1-, 2- oder 3-stellige Zahlen erlaubt sind
    Do
    $PCName = InputBox("Pc Eingabe", "Bitte geben Sie den PC Namen ein an dem Sie sich befinden", "", "", 180, 130)
    If @error = 1 Then Exit
    Until StringIsInt($PCName) And StringLen($PCName) ; "And StringLen($fach) = 4" kann weggelassen werden, wenn auch 1-, 2- oder 3-stellige Zahlen erlaubt sind
    Run("cmd")
    WinWait("cmd.exe"); wartet bis das Fenster mit dem Teilinhalt cmd.exe erscheint
    Send ("cd\{ENTER}cls{ENTER}")
    Send ("telnet 192.168.0.175 9001{ENTER}")
    Sleep (5000)
    Send ("lock "&$PCName&"{ENTER}")
    sleep(3000)
    Send("gopos "&$PCName&" "&$fach&"{ENTER}")
    Sleep(20000)
    Send("store "&$PCName&" unload "&$fach&"{ENTER}")
    Sleep(10000)
    Send("gopos user{ENTER}")
    Sleep(10000)
    send("store "&$PCName&" load user{ENTER}")
    Sleep(10000)
    Send("scan "&$PCName&" out{ENTER}")
    Sleep(10000)
    Send("gate "&$PCName&" reject{ENTER}")
    Sleep(10000)
    Send("gate "&$PCName&" close{ENTER}")
    Sleep(10000)
    Send("unlock "&$PCName&"{ENTER}")
    Exit

    [/autoit]


    vielen dank

  • Wenn der Computername keine ganze Zahl ist, wird das nie abgebrochen. Mach das StringIsInt weg. Ansonsten gibt es für den Computernamen aber auch noch das Makro @ComputerName.

    Edit: Das StringLen bringt rein garnichts, das kannst du auch wegmachen. Mach lieber an Stelle dessen einfach als 4ten Parameter bei der Inputbox ein " M"([Leerzeichen]M).

    Edit2: Das alles bezog sich natürlich auf den 2ten Loop ;)

    Achja, warum kann das StringLen = 4 weggelaassen werden?

  • Achja, warum kann das StringLen = 4 weggelaassen werden?

    Weil sonst z.B.: 394 nicht akzeptiert würde, da es eine 3-Stellige Zahl ist.
    Statt StringLen($fach) = 4 würde ich eher StringLen($fach) <= 4 machen.
    Dann werden 1-4 stellige Zahlen erkannt und mehr nicht. voila; Alle zufrieden ^^

  • hm, ich hatte es so verstanden, dass es nur vierstellige Zahlen sein dürfen. Deshalb hatte ich das eingebaut :) Naja, das kann er ja selber entscheiden ;)