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

Beiträge von Oscar

  • Seltsames Verhalten mit Return

    • Oscar
    • 9. Januar 2022 um 16:41

    Hier wird doch ein Funktionsaufruf als GoTo missbraucht, was zu einem rekursiven Funktionsaufruf führt (mit den entsprechenden Problemen).

    Bei Einsatz einer Schleife ist das aber gar nicht nötig:

    AutoIt
    #include <File.au3>
    #include <WinAPIInternals.au3>
    
    Global $targetPath ; wird im Original-Script ebenfalls an dieser Stelle deklariert
    
    _aufrufendeFunktion()
    
    Func _aufrufendeFunktion() ; _setTargetPath() wird so wie hier innerhalb des Scripts von einer weiteren Funktion aufgerufen
        $targetPath = _setTargetPath(0)   ; Als Rückgabewert wird entweder eine Pfadangabe oder "" erwartet
        ConsoleWrite(@CRLF & " Rueckgabewert nach RETURN: >>>" & $targetPath & "<<<" & @CRLF & @CRLF)
    EndFunc   ;==>_aufrufendeFunktion
    
    Func _setTargetPath($mode)
        While True
            Switch $mode
                Case 0 ; Aufruf beim Hinzufügen eines neuen Eintrages
                    Local $sNewPath = FileSelectFolder("Zielverzeichnis auswählen", $targetPath)
                    If $sNewPath = '' Then Return ''
                    If __validatePathAccess($sNewPath) Then Return $sNewPath
                Case 1 ; Aufruf beim Ändern eines oder meherer vorhandener Einträge
    
                Case Else ; Falscher Übergabeparameter $mode
                    Return ''
            EndSwitch
        WEnd
    EndFunc   ;==>_setTargetPath
    
    Func __validatePathAccess($path)
        If _WinAPI_PathIsDirectory($path) Then
            If StringRight($path, 1) = "\" Then $path = StringTrimRight($path, 1)
            Local $h_tempFile = FileOpen($path & "\DieseDateiSollteGeloeschtWerden.txt", $FO_OVERWRITE)
            If $h_tempFile <> -1 Then ; die erforderlichen Zugriffsrechte sind vorhanden
                FileClose($h_tempFile)
                FileDelete($path & "\DieseDateiSollteGeloeschtWerden.txt")
                Return True
            EndIf
        EndIf
        Return False ; es fehlen die erforderlichen Zugriffsrechte
    EndFunc   ;==>__validatePathAccess
    Alles anzeigen
  • Seltsames Verhalten mit Return

    • Oscar
    • 31. Dezember 2021 um 09:52
    Zitat von Purzel Hägar

    Wer hat eine Idee, wie ich das Problem beseitigen kann bzw. in welche Richtung ich schauen muss?

    Die reine Beschreibung der Funktionen ist nicht hilfreich.

    Du musst schon die Funktionen hier posten, sonst kann man da nicht weiterhelfen.

  • AutoIt-Spritpreis

    • Oscar
    • 25. Dezember 2021 um 10:29
    Zitat von Bitnugger

    Nope, da sehe ich keine...

    Ich musste noch kurz etwas ändern. Jetzt ist sie da. :)

  • AutoIt-Spritpreis

    • Oscar
    • 25. Dezember 2021 um 09:17
    Zitat von Bitnugger

    schön, das angezeigt wird, ob die Tanke noch geöffnet ist - wichtig wäre aber auch zu wissen, wie lange sie noch geöffnet ist.

    Wie lange noch geöffnet ist, ist schwierig umzusetzen, da man die übermittelten Öffnungszeiten interpretieren müsste.

    Ich habe jetzt aber mal die übermittelten Öffnungszeiten als Tooltip bei dem mittleren Balken eingebaut.

    Neue Version in Post#1.

  • AutoIt-Spritpreis

    • Oscar
    • 23. Dezember 2021 um 13:46
    Zitat von Mars

    Sehr interessant. Bei mir läufts ohne Probleme.

    Ja, solange der Server erreichbar ist, läuft's auch.

    Abends scheint es da wohl mal Probleme zu geben (evtl. hohe Serverlast?!).

  • AutoIt-Spritpreis

    • Oscar
    • 23. Dezember 2021 um 09:10
    Zitat von Bitnugger

    um sich dann mit Fehler 2 - kein INET zu beenden.

    Ja, den Fehler hatte ich gestern abend auch!

    Das passiert, wenn der Server von "creativecommons.tankerkoenig.de" nicht erreichbar ist.

    Heute morgen ist wieder alles normal. Ich werde da noch eine zusätzliche Abfrage einbauen müssen.

  • AutoIt-Spritpreis

    • Oscar
    • 22. Dezember 2021 um 18:49

    Weihnachten steht vor der Tür. Also will ich euch mal mit meinem neuesten Projekt beschenken. :)

    Bei AutoIt-Spritpreis handelt es sich um ein Programm, dass die aktuellen Spritpreise (E5, E10 und Diesel) einer, vom Benutzer ausgewählten, Tankstelle anzeigt.

    Die Preise werden alle 10 Minuten von "www.tankerkoenig.de" abgefragt und im Programmfenster angezeigt.

    Die gewünschte Tankstelle kann in einer Umkreissuche ermittelt werden:

    Eingegeben wird der Ort (evtl. plus Straße) und der Suchradius und dann wird mit Hilfe von OpenStreetMap Längen-/Breitengrad ermittelt. Mit diesen Daten wird dann bei "www.tankerkoenig.de" eine Umkreissuche durchgeführt. So kann man die gewünschte Tankstelle auswählen.

    Tankerkoenig.de verlangt allerdings, das jeder Nutzer einen eigenen API-Key beantragen muss: https://creativecommons.tankerkoenig.de/

    Dieser API-Key darf nicht veröffentlicht werden!

    Deshalb fragt mein Programm diesen Key einmalig bei Programmstart ab und speichert ihn in der Windows-Registry des Benutzers.

    Das Script und alle benötigten Dateien befinden sich im ZIP-Archiv (Anhang).

    Edit 25.12.2021 Version 1.2.0.0:

    Eine neue Version!

    - Es wird getestet, ob der Server von Tankerkoenig.de online ist.

    - Die Öffnungszeiten der Tankstelle werden als Tooltip bei dem grünen/roten Balken angezeigt. Danke für den Hinweis, Bitnugger!

    - Kleinere Änderungen am Code.

    Screenshots:

    Spritpreis0.jpgSpritpreis1.jpgSpritpreis2.jpg

    Dateien

    AutoIt-Spritpreis_v1_2.zip 1,21 MB – 395 Downloads
  • Tab-Menü über Schleife erstellen lassen

    • Oscar
    • 21. Dezember 2021 um 05:12
    Zitat von JBO

    Kann mir jemand helfen und sagen, woran das liegt, bzw. was ich da falsch mache?

    Poste doch bitte Dein ganzes Script oder zumindest ein lauffähiges Beispiel.

    Ansonsten kann man nicht sehen, was Du falsch machst.

  • Webdriver Button drücken

    • Oscar
    • 13. Dezember 2021 um 07:22
    Zitat von Musashi

    Wäre es möglich, dass jemand diesen Thread aus 'Talk' nach 'Hilfe & Unterstützung' verschiebt.

    Ok, verschoben!

  • ScrabbleHelper

    • Oscar
    • 10. Dezember 2021 um 19:41
    Zitat von vcopsmtl

    Ich suche die Wörterbuch Datei, der Link oben geht nicht.

    Ohje, der Thread ist ja schon Jahre her. Die Datei muss ich irgendwann mal versehentlich vom Server gelöscht haben.

    Ich habe sie jetzt wieder hochgeladen. Der Link in Post #1 funktioniert nun wieder.

    Zitat von vcopsmtl

    Bin für Vorschläge offen, eine reine *.TxT wäre super

    Die Dateien im ZIP-Archiv haben zwar eine ".dic" Endung, sind aber reine Textdateien.

  • Abluftanlage mit Bypass - Steuerung mit Nano?

    • Oscar
    • 3. Dezember 2021 um 18:05
    Zitat von BugFix

    Reedkontakte kann ich doch wie normale Schalter parallel schalten, wenn von mehreren Positionen derselbe Vorgang ausgelöst werden soll?

    Ja, das sind quasi normale Schalter, nur halt magnetisch betätigt.

  • Abluftanlage mit Bypass - Steuerung mit Nano?

    • Oscar
    • 30. November 2021 um 07:33
    Zitat von BugFix

    Dann werde ich mal Fritzing anschmeissen und eine Schaltung modellieren.

    Noch kurz ein Hinweis (falls Du es nicht bereits weisst):

    Alle Arduinos/ESPs besitzen intern, per Software zuschaltbare, Pullup-Widerstände. Deswegen beim planen der Schaltung immer alle Schalter/Taster nach Masse (GND) schalten.

    Das spart die externe Beschaltung und erleichtert das zeichnen des Schaltplans. :)

  • Abluftanlage mit Bypass - Steuerung mit Nano?

    • Oscar
    • 29. November 2021 um 19:05
    Zitat von BugFix

    Aber wie sieht es mit der lokalen Einstellung der Feuchtesensoren aus?

    Das kann man dann ja über das Webinterface (Webseite mit Ajax) machen. Vom Rechner/Smartphone aus.

  • Abluftanlage mit Bypass - Steuerung mit Nano?

    • Oscar
    • 29. November 2021 um 17:39
    Zitat von Andy

    Aber Oskar wird dazu sicherlich seinen Senf auch noch dazugeben

    Naja, das bleibt ja nicht aus. :)

    Ich stimme Dir voll zu! Ich würde auch zu ESP8266 und somit WLAN greifen. Das ist deutlich einfacher und mit weniger Hardware zu realisieren, als einen Nano ins WLAN zu bringen oder gar eine 440/880 MHz Funkverbindung (stark störanfällig) zu versuchen.

    Witzigerweise sind momentan die Nano-Clones sogar teurer als die Wemos D1 mini (mit ESP8266).

    Ob es gleich SmartHome sein muss?

    Ich würde es selbst programmieren (in C Arduino-IDE).

    Man könnte da einen Wemos als Master (HTTP-Webserver) einsetzen, der die Relais schaltet (welche Spannung liegt da an?) und dann mehrere Wemos als Slave (Webclient).

    Dann kannst Du außerdem sogar vom Rechner und/oder Smartphone (solange sie im gleichen Netz sind) die Relais steuern.

    Und zusätzlich Feuchtesensoren an die Wemos anschliessen ist auch kein Problem.

  • Verbindung zu ESP8266 Board (RFID Reader) nur nach reset möglich

    • Oscar
    • 27. November 2021 um 09:07
    Zitat von julezrules

    Hättest du da evtl ne Idee für mich woran das liegt bzw wie ich das zum Laufen bekomme?

    Hast Du schonmal nachgesehen, ob die Übertragungsparameter korrekt sind?

    Im Sketch verwendest Du "9600 Baud, 8N1". Wenn Du das nicht im AutoIt-Script einstellst, musst Du im Gerätemanager von Windows nachsehen.

    Aber mit WindowsXP habe ich schon seit Jahren nichts mehr am Hut. Warum so ein altes System?

  • Verbindung zu ESP8266 Board (RFID Reader) nur nach reset möglich

    • Oscar
    • 26. November 2021 um 13:08

    Ich hatte mal eine kleine UDF für die serielle Schnittstelle geschrieben: SerialComm.au3 (eine kleine UDF zum Datenaustausch mit dem Arduino)

    Das Beispiel ist zwar für AutoIt <-> Arduino, aber beim ESP8266 funktioniert das genauso.

  • Irgendwas stimmt mit der Ausführungsgeschwindigkeit nicht...

    • Oscar
    • 24. November 2021 um 08:39

    Wenn ich die Funktion "_5A()" so ändere, dann ist sie in beiden Fällen die jeweils schnellste:

    AutoIt
     Func _5A()
        Local $c[99], $a[99][4], $t = 0.0, $u = 0.0
        For $i = 0 To UBound($c) - 1 Step 1
            $c[$i] = BitShift(Random(0, 0xFFFF, 1), -16) + Random(0, 0xFFFF, 1)
            $a[$i][0] = 0
            $a[$i][1] = 0
            $a[$i][2] = 0
            $a[$i][3] = 0
        Next
        Local $p = DllStructCreate('int')
        Local $q = DllStructCreate('byte B;byte G;byte R;byte A', DllStructGetPtr($p)) ; BGRA Byte order
        $t = TimerInit()
        For $i = 0 To UBound($a) - 1 Step 1
            DllStructSetData($p, 1, $c[$i])
            $a[$i][0] = $q.A; DllStructGetData($q, 4)
            $a[$i][1] = $q.R; DllStructGetData($q, 3)
            $a[$i][2] = $q.G; DllStructGetData($q, 2)
            $a[$i][3] = $q.B; DllStructGetData($q, 1)
        Next
        $t = TimerDiff($t)
        $u = TimerInit()
        For $i = 0 To UBound($a) - 1 Step 1
    
        Next
        $u = TimerDiff($u)
        Return ($t - $u)/99.0
    EndFunc
    Alles anzeigen

    Edit:

    Und so ist die Funktion noch ein Tick schneller:

    AutoIt
    Func _5A()
        Local $c[99], $a[99][4], $t = 0.0, $u = 0.0
        For $i = 0 To UBound($c) - 1 Step 1
            $c[$i] = BitShift(Random(0, 0xFFFF, 1), -16) + Random(0, 0xFFFF, 1)
            $a[$i][0] = 0
            $a[$i][1] = 0
            $a[$i][2] = 0
            $a[$i][3] = 0
        Next
        Local $p = DllStructCreate('int BGRA')
        Local $q = DllStructCreate('byte B;byte G;byte R;byte A', DllStructGetPtr($p)) ; BGRA Byte order
        $t = TimerInit()
        For $i = 0 To UBound($a) - 1 Step 1
            $p.BGRA = $c[$i]; DllStructSetData($p, 1, $c[$i])
            $a[$i][0] = $q.A; DllStructGetData($q, 4)
            $a[$i][1] = $q.R; DllStructGetData($q, 3)
            $a[$i][2] = $q.G; DllStructGetData($q, 2)
            $a[$i][3] = $q.B; DllStructGetData($q, 1)
        Next
        $t = TimerDiff($t)
        $u = TimerInit()
        For $i = 0 To UBound($a) - 1 Step 1
    
        Next
        $u = TimerDiff($u)
        Return ($t - $u)/99.0
    EndFunc
    Alles anzeigen
  • Grafiken richtig einfügen und skalieren

    • Oscar
    • 17. November 2021 um 17:21

    Weil ich gerade mal Lust dazu hatte, hier ein Beispiel (als Anhang).

    Dank Interpolation sieht das Bild auch hochskaliert noch ganz gut aus. Eigentlich würde man lieber runterskalieren.

    Dateien

    AutoPicResize.au3 183,03 kB – 223 Downloads
  • Grafiken richtig einfügen und skalieren

    • Oscar
    • 17. November 2021 um 14:14
    Zitat von hipfzwirgel

    Da man ja nie weiß, was der Anwender für eine Auflösung fährt, ist das Implementieren von mehreren Bildern entsprechender Größe ja nicht wirklich elegant...

    Du musst das Bild in der höchsten, von Deinem Programm unterstützten, Auflösung mitliefern und dann entsprechend der skalierten Bildgröße das Bild runterskalieren (mit GDI+) und in das Pic-Control einfügen.

    Beim runterskalieren musst Du das Seitenverhältnis des Bildes beibehalten (bei z.B. 300x200 Px muss das kleinere Bild auch das 3 zu 2 Verhältnis haben).

  • LPT1 ade - suche Ersatz (erledigt)

    • Oscar
    • 9. November 2021 um 05:20
    Zitat von Alina

    Auf was könnte man da ausweichen und wo finde ich Information über die Pinbelegung? Was ist sinnvoll?

    Wenn Du möglichst wenig löten willst, nimm einen Wemos D1 mini (der hat einen ESP8266-Prozessor).

    So ein Wemos kostet nur 4,50€ bei Amazon:

    NodeMcu WiFi Entwicklungsboard mit ESP8266 Chip ESP-12F 4MB Byte Modul Kompatibel mit Arduino
    NodeMcu WiFi Entwicklungsboard mit ESP8266 Chip ESP-12F 4MB Byte Modul Kompatibel mit Arduino
    www.amazon.de

    oder 4,80€ bei Reichelt:

    https://www.reichelt.de/d1-mini-esp8266-v2-0-d1-mini-p253978.html?&trstct=pos_1&nbc=1

    Der ist zwar für diese Aufgabe totaler Overkill, aber trotzdem viel günstiger, als so fertige Karten.

    Das Programm für den Wemos kann ich Dir schreiben, das ist kein Problem.

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™