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. BugFix

Beiträge von BugFix

  • IR-Bewegungsmelder in ODER-Schaltung verwenden

    • BugFix
    • 9. August 2022 um 14:11
    Zitat von Alina

    Also ich habe Beitrag 1 gelesen und verstehe das ganze irgendwie schon gar nicht.

    :rofl:

    BeWegungsMelder

    Die schalten bei Erreichen einer Signalschwelle (Sensitivität) für eine einstellbare Zeit die Spannung auf einen Verbraucher, üblicherweise eine Lampe.

    Dazu besitzen die Teile 3 Kontakte: L und N als Spannungsversorgung für den Bewegungsmelder und L1 als Kontakt, der geschaltet wird.

    Ich möchte aber, dass im Normalbetrieb der IR-Sensor aktiviert und bei Betätigung des Schalters dieser von der Spannung getrennt wird und die Lampe direkt gespeist wird.

    Schaltungstechnisch funktioniert das auch genau so. Der Pferdefuß ist halt, dass nach dem manuellen Ausschalten des Lichts, der Sensor wieder mit Spannung versorgt wird und dabei für eine recht lange Zeit Spannung auf den Ausgangskontakt schaltet, eine Art Initialisierung.

  • IR-Bewegungsmelder in ODER-Schaltung verwenden

    • BugFix
    • 9. August 2022 um 09:38
    Zitat von Moombas

    Oder probier mal eine "echte" oder-Schaltung (Parallelschaltung).

    Das sollte man bei keinem BWM machen (und auch bei keinem sonstigen mir bekannten Aktivator). Dadurch wird bei aktivem Schaltvorgang des BWM parallel Spannung angelegt. Theoretisch (Phase ist dieselbe) sollte nichts passieren. Aber erfahrungsgemäß reagiert die Schaltelektronik recht empfindlich auf solche Einflüsse und brutzelt gern mal durch.

  • IR-Bewegungsmelder in ODER-Schaltung verwenden

    • BugFix
    • 9. August 2022 um 09:32
    Zitat von Moombas

    Ich weiß ja nicht welchen BWM du von BJ hast aber den den ich gefunden hatte, hat laut Anleitung rädchen für Einstellungen (Helligkeit und Zeit).

    Helligkeit (Reaktionsschwelle) und Zeit (Aktivierungsdauer) sind ja für meine Problematik nicht von Interesse. Das wird einmalig eingestellt un damit ist's OK.

    Ich habe jetzt mal gesucht (Busch-Jäger bietet netterweise keine Datenblätter für BWM an) und bin auf einem Handbuch-Portal fündig geworden.

    Ich habe einen "Busch-Jaeger 180 UP" (ist ein UP-Modell, das definitiv nicht zum Einsatz kommen würde - nur zum Test). Laut Handbuch ist die Aktivierungsdauer nach Anlegen der Versorgungsspannung unveränderlich bei ca. 80 Sekunden - too much!

  • IR-Bewegungsmelder in ODER-Schaltung verwenden

    • BugFix
    • 9. August 2022 um 09:12
    Zitat von Moombas

    Hast du dir mal das Datenblatt angesehen?`

    Muss ich dann mal nach googeln.

    Wenn diese "Testphase" bei 5 bis 10 Sekunden läge, wäre es unproblematisch. Das wäre ja dann gewissermaßen die "Nachleuchtdauer", wenn meine Frau beim Verlassen des Raumes von Manuell wieder auf Automatik schaltet und somit den BWM aktiviert.

  • IR-Bewegungsmelder in ODER-Schaltung verwenden

    • BugFix
    • 9. August 2022 um 08:50

    Ich würde ja am liebsten ohne manuelle Schalter im Haus auskommen - aber: Meine Frau will Schalter!

    Nun habe ich nach dem Kompromiss gesucht und eine ODER-Schaltung für einen Bewegungsmelder erstellt (manuell oder per IR). Man kommt dabei mit Verlegung 3-adriger Kabel aus.

    Getestet habe ich mit einem BWM von Busch-Jäger, den ich grad hier hatte. Dabei zeigt sich allerdings ein sehr unangenehmes Verhalten:

    Wenn der BWM Versorgungsspannung bekommt, schaltet er völlig unabhängig von der Sensoreinstellung sofort durch und das für eine Zeitdauer von ungefähr 10 min! (eingestellt waren 60 s). Danach reagiert der BWM aber seiner Bestimmung entsprechend.

    Meine Fragen

    - Hat jemand die Möglichkeit das (mit anderen BWM) zu testen?

    - Ist das ein spezielles Verhalten der Busch-Jäger BWM?

    Ich finde es völlig sinnfrei, dass der BWM nach Erhalt der Versorgungsspannung, ohne Auswertung des Sensors, durchschaltet. Wenn dieses Verhalten bei allen BWM sein sollte, wäre mein Projekt somit hinfällig und ich müsste den BWM weglassen.

    Hier der Schalt-/Verlegeplan:

    bwm_or_switch.png

  • Wer kennt das Symbol?

    • BugFix
    • 3. August 2022 um 17:59

    OK, Danke.

  • Wer kennt das Symbol?

    • BugFix
    • 3. August 2022 um 17:43

    Ich habe seit Kurzem das unten eingefügte Symbol in der Statusbar meines Smartphones. Ich habe keine Ahnung, was das signalisiert.

    Ich kann alle Funktionen deaktivieren (WLAN, Mobile Daten, Bluetooth usw. usf.) - das Drecksding bleibt einfach da.

    Mir fällt auch kein Ereignis ein, das mit seinem Erscheinen zusammenfällt.

    Habt ihr eine Ahnung, was das ist? :/

    Screenshot_20220803_173209.jpg

  • GDIPlus code als Funktion - Bitte um Hilfe.

    • BugFix
    • 2. August 2022 um 07:29
    Zitat von Michi91

    Der Speicherverbrauch sollte eigl. minimal sein und in der Zeit von TB Festplatten nicht mehr ins Gewicht fallen.

    Aber der Speichervorgang.

    Unnütze Schreibvorgänge sind der SSD-Platte ihr Tod. :P

  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • BugFix
    • 29. Juli 2022 um 14:39
    Zitat von Oscar

    Nee, weder "-1" noch das leere Array verhindern das durchreichen der Zeichen.

    Ich hab mal gesucht, in einem C64-Forum habe ich Folgendes gefunden:

    Code
    LDA #$00
    STA $C6
    
    will clear the buffer.

    Ich habe keine Ahnung was und wie auf C64 programmiert wurde. Aber vllt. hat da jemand nen Plan und kann das umsetzen.

  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • BugFix
    • 29. Juli 2022 um 12:16
    Zitat von hipfzwirgel

    mit Return -1 vielleicht...

    Probiere mal _WinAPI_SetKeyboardState und sende damit ein leeres 256-Byte Array.

  • GDIPlus code als Funktion - Bitte um Hilfe.

    • BugFix
    • 29. Juli 2022 um 09:16
    Zitat von Moombas
    AutoIt
    Local Const    $hFont    = _GDIPlus_FontCreate ($hFamily, $sSize, 0) 
    Local Const    $hFormat  = _GDIPlus_StringFormatCreate (0x4000)
    Local Const    $hBrush   = _GDIPlus_BrushCreateSolid (0xff000000) 
    Local Const    $hPen     = _GDIPlus_PenCreate (0xC4000000, 1)

    Das würde ich so nicht empfehlen.

    Wenn die Handle im lokalen Kontext der Funktion geführt werden sollten diese nach dem Zeichnen in der Funktion zwingend mit den entsprechenden ..Dispose-Befehlen gelöscht werden.

    Um so die Variablen nicht ständig zu deklarieren und zu löschen würde ich diese Global definieren und und in der Funktion nur jeweils neu setzen. In einer Exit-Routine beim Skript Beenden können dann die ..Dispose-Befehle eingefügt werden.

  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • BugFix
    • 28. Juli 2022 um 22:38
    Zitat von gert_nrw_71

    Was ist eigentlich ein Hook ?

    Die wörtliche Übersetzung trifft es ganz gut: Haken.

    Ein Hook hakt sich z.B. in den Nachrichtenstrom zwischen Tastatur und System ein. Jetzt kann man jede Tastatureingabe abfangen, manipulieren oder verwerfen, bevor diese normal das System erreicht.

    Bsp.: Taste "ä" wird gedrückt. In der Hook Prozedur wird dieses Event verworfen und stattdessen an das System die Tastenfolge "ae" geleitet.

    Ich hatte vor Jahren mal einige Hook-Bsp. gepostet. Sollte über die Suche auffindbar sein.

  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • BugFix
    • 28. Juli 2022 um 11:52
    Zitat von Velted

    versucht, die Scannereingaben über _WinAPI_RegisterRawInputDevices() abzugreifen?

    Habe ich nicht.

    Die Bsp. zu der Funktion sind eine (in meinen Augen) etwas komplizierte Form eines Hooks. All das, was dort getan wird, erledigt man üblicherweise mit einem Hook.

    Aber ja: Da mit einem Hook der Keyboard-Input abgefangen werden kann, lässt sich das sicher auch mit obiger Funktion erledigen.

  • Daten aus #cs / #ce einlesen / nutzen

    • BugFix
    • 28. Juli 2022 um 09:15
    Zitat von Andy

    den zu assemblierenden Code zwischen die #cs und #ce geschrieben

    Ja, sowas ergibt Sinn. Dazu sollte man dann zwingend (so wie du es getan hast) die Kommentarblöcke benennen! Dann kann man diese Verfahrensweise für x-beliebige Ergänzungen nutzen.

    Ich habe oft zusätzliche Informationen, die in einer Zeile Platz hatten, als Kommentar mit spezifischem Start und Titel im Skript eingefügt.

    z.B.

    Code
    ;&&Titel1&& Info dazu
    ;&&Titel2&& Info dazu 
  • Daten aus #cs / #ce einlesen / nutzen

    • BugFix
    • 28. Juli 2022 um 08:14

    Für mich bleibt noch immer die Frage, was im Kommentarblock für dich wichtig ist um es wann auszulesen und von wo aus (Datei geöffnet in SciTE oder innerhalb eines anderen Skriptes eingelesen).

    Im geöffneten SciTE hättest du noch andere effektivere Zugriffsmöglichkeiten mit den integrierten Lua-Editorfunktionen.

  • Daten aus #cs / #ce einlesen / nutzen

    • BugFix
    • 27. Juli 2022 um 23:18
    Zitat von Alina

    Bei dem nachfolgenden Script, werden Daten aus dem Bereich zwischen #cs und #ce eingelesen und genutzt.

    Wie kommst du darauf?

    Der Kommentarbereich wird ignoriert.

    Beim Erstellen eines Skriptes mithilfe eines Templates sieht der Skriptanfang dann so aus.

    Was da drin steht brauchst du doch nicht extra auslesen, auf diese Daten hast du doch über Makros und SciTE Properties Zugriff.

  • Kampf mit RegRead

    • BugFix
    • 27. Juli 2022 um 08:45
    Zitat von GML

    Es wird immer ein @error gesetzt mit 0.

    Der Errorcode stammt vom letzten Befehl - und das war innerhalb der MsgBox: BitOr!

    Du musst den @error in einer Variablen auffangen oder am Besten gleich in die Console schreiben:

    If @error then ConsoleWrite('RegRead-Error: ' & @error & @CRLF)

  • Barcode in Variable scannen ohne den Inhalt irgendwo anzuzeigen

    • BugFix
    • 27. Juli 2022 um 07:21
    Zitat von gert_nrw_71

    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.

    Ich habe bisher nur mit einem Barcodescanner gearbeitet. Aber egal, ob über Bluetooth oder USB angeschlossen - er wird als Eingabegerät behandelt.

    Das erfordert somit, dass vor dem Übertragen des Scanner Speichers (oder dem direkten Scan) sich der Cursor in einem Eingabefeld befindet.

    Alternativ kann man (zumindest bei meinem Scanner) einen Hotkey vor dem Übertragen der Daten senden lassen. Damit öffne ich z.B. eine Excel Tabelle, in die dann alle Daten des Scanners in die Zellen einer Spalte untereinander eingetragen werden.

    Soweit mir bisher bekannt ist, benötigt der Scanner ein Eingabefeld in einem aktiven Fenster um seine Daten zu übertragen. Da geht nix mit im Hintergrund arbeiten.

  • Gui - unsichtbar, nur Anzeigen von Control

    • BugFix
    • 26. Juli 2022 um 15:18

    Das "Verstecken" der Gui lässt sich mit _WinAPI_CombineRgn durchführen. Das ist alles etwas sperrig und deshalb habe ich das mal in eine UDF verpackt.

    Mit Aufruf der Funktion _GuiBGInvisible wird eine Ctrl-ID oder ein Array von IDs übergeben. Diese Ctrl werden dann ohne Gui - also frei schwebend - angezeigt.

    Optional kann eine Funktion übergeben werden, die anhand der ID das entsprechende Ctrl von der Anzeige ausschließt. Die Funktion muss als einzigen Parameter die $ID führen und True/False (ni. anzeigen / anzeigen) zurück geben.

    AutoIt: GuiBGInvisible.au3
    ;-- TIME_STAMP   2022-07-26 14:55:41   v 0.1
    
    
    #include-once
    #include <WinAPIGdi.au3>
    #include <WinAPIHObj.au3>
    #include <WinAPISysInternals.au3>
    #include <WindowsConstants.au3>
    
    
    ; #FUNCTION# =======================================================================================
    ; Name ..........: _GuiBGInvisible
    ; Description ...: Makes the entire window area invisible, only the passed control is displayed.
    ; Parameter(s)...: $_hGui             The Gui handle
    ; ...............: $_vCtrlAdd         One or an array of control IDs
    ; ....[optional].: $_fCondIgnoreCtrl  Function to exclude controls from display based on the passed ID.
    ; ...............:                    "MyFunc_Exclude($ID)" must return true/false. (Default: Null, no func)
    ; Return values .: None
    ; Author ........: BugFix
    ; ==================================================================================================
    Func _GuiBGInvisible($_hGui, $_vCtrlAdd, $_fCondIgnoreCtrl=Null)
        Local $aWin = WinGetPos($_hGui)
        Local $combined_rgn = _WinAPI_CreateRectRgn($aWin[0], $aWin[1], $aWin[0]+$aWin[2], $aWin[1]+$aWin[3])
        _AddCtrlRegion($combined_rgn, $_vCtrlAdd, $_fCondIgnoreCtrl)
        _WinAPI_SetWindowRgn($_hGui, $combined_rgn)
        _WinAPI_DeleteObject($combined_rgn)
    EndFunc  ;==>_GuiBGInvisible
    
    
    Func _AddCtrlRegion($_full_rgn, $_vCtrlID, $_fCondIgnoreCtrl=Null)
        Local $iHtit = _WinAPI_GetSystemMetrics($SM_CYCAPTION)
        Local $iFrame = _WinAPI_GetSystemMetrics($SM_CXDLGFRAME)
        Local $ctrl_pos, $ctrl_rgn
        Local $hParent = Null, $iStyle = Null
        If IsArray($_vCtrlID) Then
            For $i = 0 To UBound($_vCtrlID) -1
                If $hParent = Null Then $hParent = _WinAPI_GetParent(GUICtrlGetHandle($_vCtrlID[$i]))
                If $iStyle = Null Then $iStyle = _WinAPI_GetWindowLong($hParent, $GWL_STYLE)
                If IsFunc($_fCondIgnoreCtrl) Then
                    If $_fCondIgnoreCtrl($_vCtrlID[$i]) Then ContinueLoop
                EndIf
                $ctrl_pos = ControlGetPos($hParent, "", $_vCtrlID[$i])
                If __GuiHasCaptionbar($hParent) Then
                    $ctrl_rgn = _WinAPI_CreateRectRgn($ctrl_pos[0]+$iFrame, $ctrl_pos[1]+$iHtit+$iFrame, $ctrl_pos[0] + $ctrl_pos[2]+$iFrame, $ctrl_pos[1] + $ctrl_pos[3]+$iHtit+$iFrame)
                Else
                    $ctrl_rgn = _WinAPI_CreateRectRgn($ctrl_pos[0], $ctrl_pos[1], $ctrl_pos[0] + $ctrl_pos[2], $ctrl_pos[1] + $ctrl_pos[3])
                EndIf
                _WinAPI_CombineRgn($_full_rgn, $_full_rgn, $ctrl_rgn, $RGN_OR)
                _WinAPI_DeleteObject($ctrl_rgn)
            Next
        Else
            If IsFunc($_fCondIgnoreCtrl) Then
                If $_fCondIgnoreCtrl($_vCtrlID) Then Return
            EndIf
            $hParent = _WinAPI_GetParent(GUICtrlGetHandle($_vCtrlID))
            $iStyle = _WinAPI_GetWindowLong($hParent, $GWL_STYLE)
            $ctrl_pos = ControlGetPos($hParent, "", $_vCtrlID)
            If __GuiHasCaptionbar($hParent) Then
                $ctrl_rgn = _WinAPI_CreateRectRgn($ctrl_pos[0]+$iFrame, $ctrl_pos[1]+$iHtit+$iFrame, $ctrl_pos[0] + $ctrl_pos[2]+$iFrame, $ctrl_pos[1] + $ctrl_pos[3]+$iHtit+$iFrame)
            Else
                $ctrl_rgn = _WinAPI_CreateRectRgn($ctrl_pos[0], $ctrl_pos[1], $ctrl_pos[0] + $ctrl_pos[2], $ctrl_pos[1] + $ctrl_pos[3])
            EndIf
            _WinAPI_CombineRgn($_full_rgn, $_full_rgn, $ctrl_rgn, $RGN_OR)
            _WinAPI_DeleteObject($ctrl_rgn)
        EndIf
    EndFunc  ;==>_AddCtrlRegion
    
    
    Func __GuiHasCaptionbar($_hGui)
        Local $iStyle = _WinAPI_GetWindowLong($_hGui, $GWL_STYLE)
        Select
            Case BitAND($iStyle, $WS_CAPTION) = $WS_CAPTION
                Return True
            Case BitAND($iStyle, $WS_MAXIMIZEBOX) = $WS_MAXIMIZEBOX
                Return True
            Case BitAND($iStyle, $WS_MINIMIZEBOX) = $WS_MINIMIZEBOX
                Return True
            Case BitAND($iStyle, $WS_POPUPWINDOW) = $WS_POPUPWINDOW
                Return False
            Case BitAND($iStyle, $WS_BORDER) = $WS_BORDER
                Return False
            Case BitAND($iStyle, $WS_POPUP) = $WS_POPUP
                Return False
        EndSelect
    EndFunc  ;==>__GuiHasCaptionbar
    Alles anzeigen
    AutoIt: GuiBGInvisible_Example.au3
    ;-- TIME_STAMP   2022-07-26 15:17:29
    
    #include "GuiBGInvisible.au3"
    
    
    #cs
        Gui unsichtbar, nur übergebene Control anzeigen.
        Ggf. Control durch Exclude-Funktion ignorieren (nicht anzeigen).
    #ce
    
    
    _Example1()
    
    _Example2()
    
    _Example3()
    
    
    Func _Example1()
        Local $aCtrl[5]
        Local $GUI = GUICreate('Test', 400, 300)
        For $i = 0 To 4
            $aCtrl[$i] = GUICtrlCreateButton('Button ' & $i+1, 10, 10+$i*30, 100, 20)
        Next
    
        _GuiBGInvisible($GUI, $aCtrl)
    
        GUISetState()
        While True
            Switch GUIGetMsg()
                Case $aCtrl[0]  ; nur noch Button2 sichtbar
                    _GuiBGInvisible($GUI, $aCtrl[1])
                Case $aCtrl[1]  ; alle Button wieder sichtbar
                    _GuiBGInvisible($GUI, $aCtrl)
                Case $aCtrl[2], $aCtrl[3], $aCtrl[4]
                    Return GUIDelete($GUI)
            EndSwitch
        WEnd
    EndFunc
    
    
    Func _Example2()
        Local $aCtrl[5]
        Local $GUI = GUICreate('Test', 400, 300, -1, -1, $WS_POPUP)
        For $i = 0 To 4
            $aCtrl[$i] = GUICtrlCreateButton('Button ' & $i+1, 10, 10+$i*30, 100, 20)
        Next
    
        _GuiBGInvisible($GUI, $aCtrl)
    
        GUISetState()
        While True
            Switch GUIGetMsg()
                Case $aCtrl[0], $aCtrl[1], $aCtrl[2], $aCtrl[3], $aCtrl[4]
                    Return GUIDelete($GUI)
            EndSwitch
        WEnd
    EndFunc
    
    
    Func _Example3()
        Local $aCtrl[5]
        Local $GUI = GUICreate('Test', 400, 300, -1, -1, BitOR($WS_CAPTION,$WS_POPUPWINDOW))
        For $i = 0 To 4
            $aCtrl[$i] = GUICtrlCreateButton('Button ' & $i+1, 10, 10+$i*30, 100, 20)
        Next
    
        _GuiBGInvisible($GUI, $aCtrl, _Exclude)  ; "Button 2 & 4" nicht anzeigen
    
        GUISetState()
        While True
            Switch GUIGetMsg()
                Case $aCtrl[0], $aCtrl[1], $aCtrl[2], $aCtrl[3], $aCtrl[4]
                    Return GUIDelete($GUI)
            EndSwitch
        WEnd
    EndFunc
    
    Func _Exclude($ID)
        Return (StringRegExp(GUICtrlRead($ID), '2|4') <> 0)
    EndFunc  ;==>_Ignore
    Alles anzeigen

    Dateien

    GuiBGInvisible.au3 4,04 kB – 190 Downloads GuiBGInvisible_Example.au3 1,94 kB – 184 Downloads
  • Colortable

    • BugFix
    • 25. Juli 2022 um 17:36
    Zitat von oh-ha

    nur bei mir kommt ein Error, wenn ich die linke oder aber rechte Maustaste drücke.

    Das ist kein Fehler: Exit code: 1

    Das Ergebnis des Clicks ist in der Zwischenablage!

    Mit linker Maustaste wird der Farbwert (Hexwert) und mit rechter Maustaste die Zuweisung zur Farbvariable in die Zwischenablage kopiert und das Fenster geschlossen.

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™