1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. gert_nrw_71

Beiträge von gert_nrw_71

  • AutoIT Script welches läuft neu starten

    • gert_nrw_71
    • 26. August 2022 um 22:05

    Hallo,

    gibt es in AutoIT eine Möglichkeit ein laufendes Script per Tastendruck, evtl. eine Funktionstaste, neu zu starten ?

  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • gert_nrw_71
    • 26. August 2022 um 21:56

    Hi,

    das sieht sehr gut aus, ich werde es morgen nochmal auf Herz und Nieren testen, aber bisher funktioniert es sehr gut :)

    Besten Dank für eure Unterstützung, ihr habt mir wirklich sehr weitergeholfen...

    Kann man dem Forum hier irgendwie etwas gutes tun, eure Unterstützung ist ja wirklich super.

  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • gert_nrw_71
    • 26. August 2022 um 20:41

    ich habe die ConsoleWrite Anweisungen noch entfernt, dann lief es noch etwas länger, mit dem entfernen der Funktion StatusSave läuft es ohne Probleme...

    Jedoch schreibt er mir dann den Scanwert nicht mehr weg..... Geht das Wegschreiben noch irgendwie schneller ?

  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • gert_nrw_71
    • 26. August 2022 um 20:31

    Hallo zusammen,

    die Beep habe ich rausgenommen, gefühlt läuft es jetzt etwas länger, aber es tritt leider immer noch auf, noch eine Idee ?

  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • gert_nrw_71
    • 26. August 2022 um 18:43

    da ist es:

    AutoIt
    #include <GUIConstantsEx.au3>
    #include <StructureConstants.au3>
    #include <WinAPIConstants.au3>
    #include <WinAPIInternals.au3>
    #include <WinAPISys.au3>
    #include <WinAPISysInternals.au3>
    #include <WindowsConstants.au3>
    #include <FileConstants.au3>
    #include <File.au3>
    #include <WinAPI.au3>
    
    Global $Gewerk = "Polsterei"
    Global $Titel = "Polsterei.htm"
    Global $Titelmin = "Polsterei_min.htm"
    
    Global $Freigabe = "\\ste01\planung\"
    Global $hmod, $hHook, $hStub_KeyProc, $buffer = '', $scannerbufferflag = 0
    Global $LogText =""
    Global $Eingabe
    Global $File[5]
    
    ; Hier den Postfix-Code von eurem Scanner eintragen.
    Global $g_iPostfix = 0x0D ;Enter
    ; Hier den Prefix-Code von eurem Scanner eintragen.
    Global $g_iPrefix = 0x71 ;F2
    
    HotKeySet('{ESC}', '_Exit')
    OnAutoItExitRegister('OnAutoItExit')
    Global $hKeyProc = DllCallbackRegister('_KeyProc', 'long', 'int;wparam;lparam')
    Global $hmod = _WinAPI_GetModuleHandle(0)
    Global $hKeyHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hKeyProc), $hmod)
    
    Global $hGui = GUICreate('Barcodescanner', 300, 140)
    Global $idBarcode = GUICtrlCreateLabel('', 10, 10, 280, 30)
    GUICtrlSetFont(-1, 16, 400, 0, 'Courier New')
    Global $idInput = GUICtrlCreateInput('', 10, 50, 280, 30)
    GUICtrlSetFont(-1, 16, 400, 0, 'Courier New')
    GUISetState(@SW_HIDE)
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    consolewrite("ende")
    Exit
    
    Func _Exit()
        Exit
    EndFunc
    
    ; ACHTUNG! Callback-Funktion!
    ; In dieser Funktion darf es keinen blockierenden Code (z.B. MsgBox, Sleep, etc.) geben!
    ; Hier werden direkt die virtuellen Keycodes der Tastatur ausgewertet:
    ; https://docs.microsoft.com/en-us/windows/win32/inputdev/virtual-key-codes
    Func _KeyProc($nCode, $wParam, $lParam)
        Local $tKBDLLHOOK = DllStructCreate($tagKBDLLHOOKSTRUCT, $lParam)
        Local $iKeyCode = $tKBDLLHOOK.vkCode, $iPressTime
        Local Static $sBuffer = '', $bBarcodeActive = False
        If $nCode >= 0 Then
            If $iKeyCode = $g_iPrefix And $wParam = $WM_KEYUP Then
                $bBarcodeActive = Not $bBarcodeActive
                ConsoleWrite('$bBarcodeActive = ' & $bBarcodeActive & @CRLF)
                $sBuffer = ''
            EndIf
            If $bBarcodeActive Then
                Switch $wParam
                    Case $WM_KEYDOWN
                        Return 1
                    Case $WM_KEYUP
                        Switch $iKeyCode ; Keycode auswerten
                            Case $g_iPostfix
                                ConsoleWrite(StringFormat('Barcode = "%s"\r\n', $sBuffer))
                                _StatusSave($sBuffer)
                                $sBuffer = ''
                                $bBarcodeActive = False
                                ConsoleWrite('$bBarcodeActive = ' & $bBarcodeActive & @CRLF)
                                Return 1
                            Case 0x30 To 0x39, 0x41 To 0x5A ; 0 - 9, A - Z
                                $sBuffer &= Chr($iKeyCode)
                                Return 1
                        EndSwitch
                EndSwitch
            EndIf
        EndIf
        Return _WinAPI_CallNextHookEx($hKeyHook, $nCode, $wParam, $lParam)
    EndFunc   ;==>_KeyProc
    
    ; Wichtig! Beim Programmende den Hook wieder entfernen.
    Func OnAutoItExit()
        _WinAPI_UnhookWindowsHookEx($hKeyHook)
        DllCallbackFree($hKeyProc)
    EndFunc   ;==>OnAutoItExit
    
    Func _StatusSave($sBuffer)
        Local $hFile
        If FileExists($Freigabe & "\Prod-Status\" & $Gewerk & "\" & $sBuffer & "_Start.log") Then
            $hFile = FileOpen($Freigabe & "\Prod-Status\" & $Gewerk & "\" & $sBuffer & "_Ende.log", 1)
            beep(500,200)
            beep(500,200)
        Else
            $hFile = FileOpen($Freigabe & "\Prod-Status\" & $Gewerk & "\" & $sBuffer & "_Start.log", 1)
            beep(500,200)
        EndIf
        _FileWriteLog($hFile, $sBuffer & @CRLF)
        FileClose($hFile)
    EndFunc   ;==>StatusSave
    Alles anzeigen
  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • gert_nrw_71
    • 26. August 2022 um 18:27

    Hallo Oscar ,

    danke für den Tipp, das funktioniert.

    Jetzt habe ich aber noch das Problem, dass er die scanns eine Zeit lang funktionieren, dabei schreibt er sowohl das Log weg, wie auch in der Console sieht man die Aktivitäten. Nach einer gewissen Zeit jedoch, einige scanvorgänge später schreibt er weder die Log noch zeigt er in der Console etwas an. Es scheint, alsob der Hook nicht mehr auf den Scanner reagiert. Vielleicht noch eine Idee was das sein könnte ?

  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • gert_nrw_71
    • 25. August 2022 um 20:49

    Hallo Oscar ,

    besten Dank für deine ganze Unterstützung hier, das Script passt so perfekt zu meinem Vorhaben.

    Ich habe aber leider noch ein Verständnisproblem, wo setzte ich am besten den Teil rein, an dem er den vom Scanner ausgelesenen Wert weg schreibt ?

    Kann ich das in der Funktion KeyProc hinzufügen ?

    Ist auch nichts aufregendes:

    Func StatusSave()

    if fileexists($Freigabe & "\Prod-Status\" & $Gewerk & "\" & $sBuffer & "_Start.log") Then

    Local $hFile = FileOpen($Freigabe & "\Prod-Status\" & $Gewerk & "\" & $sBuffer & "_Ende.log", 1)

    Else

    Local $hFile = FileOpen($Freigabe & "\Prod-Status\" & $Gewerk & "\" & $sBuffer & "_Start.log", 1)

    EndIf

    _FileWriteLog($hFile, $sBuffer& @CRLF)

    FileClose($hFile)

    EndFunc

    Ich würde es ja auch dort platzieren, wo die Funktion KeyProc gestartet wird, jedoch finde ich die Stelle nicht.

  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • gert_nrw_71
    • 21. August 2022 um 10:47

    Hi, das soll ein Terminal/Monitor werden, der soll nur eine Excel/HTML Seite darstellen, die bei Änderung aktualisiert wird. Auf dem Terminal/Monitor sollen Fertigungsaufträge dargestellt werden. Das alles funktioniert auch soweit schon sehr gut. Jetzt möchte ich an den Terminals/Monitor noch die Möglichkeit haben die Fertigungsaufträge zu scannen und somit diesen den Status "Angefangen" und "Abgeschlossen" mitgeben und genau dafür benötige ich die Scanfunktion.

  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • gert_nrw_71
    • 20. August 2022 um 20:47

    Sobald ich das Fenster auf @SW_HIDE setzte, überträgt er die Scandaten ans System, mit @SW_SHOW fängt er die Scandaten ab, aber ich habe das Fenster was ich nicht haben möchte.

    Ich habe das Fenster jetzt als Workarround ausserhalb des Bildschirms platziert, das geht, aber da gibt es bestimmt noch eine sauberer Lösung, oder ?

  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • gert_nrw_71
    • 20. August 2022 um 19:42

    Hi Oscar ,

    danke, das geht in die richtige Richtung :)

    Gibt es noch eine Möglichkeit die scandaten abzufangen, also nur in die Variable zu schreiben und sie nicht an das "System" zu übertragen ?

    In der Console sieht das jetzt so aus:

    100028

    Global: 100028

    100032

    Global: 100032

    100033

    Global: 100033

    Der Wert Global ist klar, der kommt hiervon: ConsoleWrite('Global: ' & $g_sBarcode & @CRLF) ; nur zum debuggen

    Die Scandaten dazwischen kommen aber, soweit ich das sehe direkt vom Scanner und die brauche ich da nicht.

    Ich hoffe das ist irgendwie verständlich :)

  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • gert_nrw_71
    • 20. August 2022 um 19:08

    Hi Oscar ,

    wenn ich alles entferne was mit dem GUI zutun hat, läuft das ganze script nicht mehr. Wenn ich das richtig verstehe reagiert das Script auch erst wenn sich etwas in der GUI verändert ?

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    Exit

    Gibt es denn eine Möglichkeit das GUI auszublenden ? Ich habe es hiermit versucht (GUISetState(@SW_HIDE)) dann zeigt er zwar kein Eingabefenster mehr an, aber dann fängt er die Daten des Scanners nicht ab. Da wo der Wurster steht, schreibt er die Daten des Scanners rein, aber genau das möchte ich nicht, ich brauche die scannereingabe in einer Variable.

    Für alte Hasen wahrscheinlich eine Kleinigkeit, für Neueinsteiger wie mich aber ne echte Herausforderung, bin also für jede Hilfe dankbar.

  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • gert_nrw_71
    • 20. August 2022 um 11:35

    Hallo Oscar ,

    danke für deinen Code, die Funktionsweise entspricht auch dem was ich benötige, aber ich bekomme einfach die InputBox da nicht raus, kannst du mir da noch einen Tipp geben ?

  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • gert_nrw_71
    • 28. Juli 2022 um 20:03

    Hi,

    besten Dank für eure Bemühungen, Oscar, dein letzter Ansatz funktioniert bei mir einwandfrei, jedoch kann ich ihn nicht so übernehmen, da die Eingabe über eine Inputbox erfolgt ?

    In meiner Anwendung benötige ich eine Eingabe ohne diese.

    Ich habe mittlerweile auch eine Lösung gefunden, ich denke die kann ich einsetzen, probiere aktuell noch damit rum, die braucht jedoch ein Präfix zur Erkennung.

    Was ist eigentlich ein Hook ?

  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • gert_nrw_71
    • 26. Juli 2022 um 21:07

    Hallo zusammen,

    ich suche eine Möglichkeit über AutoIT die Eingabe über einen Barcodescanner direkt in eine Variable zu speichern, ohne über eine Inputbox oder sonstige Eingabefelde zu gehen.

    Kann man den String vom Scanner evtl. am abschliessenden "Enter" erkennen, bzw. abtrennen ? Ich habe hier schon gesucht, leider habe ich nichts passendes gefunden, das was ich gefunden habe gibt auch immer den Inhalt des Scans aus.

    Gibt es vielleicht eine Funktion, die ich mir da genauer ansehen kann ? Ich bin für jeden Hinweis dankbar.

    Hintergrund der Funktion ist es, ich möchte eine Art mini Digital Signage aufbauen, welche eine einfache HTML Seite über Edge darstellt und in bestimmten Intervallen diese aktualisiert wird.

    Und eben in dieser Ansicht möchte ich noch die Möglichkeit schaffen, einen Barcode zu erfassen und diesen wegzuschieben, aber eben ohne die Ansicht der HTML Seite zu beeinflussen bzw. durch eine Inputbox den Ablauf zu behindern.

    Vorab schon mal besten Dank für eure Unterstützung.

  • Script für barcodescanner

    • gert_nrw_71
    • 21. Juli 2022 um 21:14

    Hallo Oscar, hallo zusammen,

    ich habe dein Script hier für den Scanner gefunden und ich glaube das ich genau das gesucht habe.

    Kannst du mir noch einen Tipp geben, wie ich die Ausgabe auf dem Bildschirm bzw. das geöffnete Programm verhindern kann ?

    Hintergrund ist, ich öffne mit AutoIt eine Internetseite, die bei Änderung und in regelmässigen Abständen aktualisiert wird. Das funktioniert soweit auch schon.

    Jetzt möchte ich noch zusätzlich, also im Hintergrund Barcodes scannen können, die dann in eine Datei weg geschrieben werden, aber halt nicht auf dem Bildschirm angezeigt werden sollen.

    Genau so möchte ich auch auf eine Inputbox verzichten, da diese ja mein Script bzgl. der Update Funktion aussetzen würde.

    Vielleicht könnt ihr mir ja einen Tipp geben, vorab schon mal danke.

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™