Mit FileCopy geht das nicht. Vielleicht möchtest Du das hier benutzen: _FileCopyEx
Beiträge von Oscar
-
-
Wenn ich richtig getestet habe, darf es kein Leerzeichen zwischen den Suchbegriffen geben
Oh, stimmt! Weil ich an "+" bzw. "-" trenne.
Füge mal diese Zeile nach der Zeile 575 ein: $sWord = StringStripWS($sWord, 2).
Dann wird das Leerzeichen am Ende des Suchwortes ignoriert.
-
Alternativ ginge es auch mit einem "Wemos D1 mini" (ESP8266). Dann könnte man das auch per Browser (HTML) im WLAN abrufen.
Ein Firmware-Update würde per "Over the air" (OTA, über WLAN) gehen.
Allerdings braucht der dann mehr Strom (in Spitzen bis 200mA).
Kostenmäßig wäre das ähnlich. Da müsste ich mich aber erstmal mit der Kommunikation zu AutoIt intensiver beschäftigen.
-
Das ist natürlich unschlagbar günstig. Bekommt man die Teile normal zu kaufen oder nur beim Chinamann des Vertrauens?
Das sind die Preise bei Amazon (Prime möglich, die Links könnte ich posten). Beim China-Mann sind die noch viel billiger (Hälfte bis ein Drittel). Würde dann aber länger dauern.
Und beim Netzteil habe ich 8 € veranschlagt, weil das das günstigste bei Amazon war. Aber gerade das Netzteil ist total unkritisch.
Da tut es jedes (alte) Handy-Netzteil. Hauptsache stabilisierte 5V. Strombedarf von der Schaltung liegt irgendwo bei ca. 50 mA. Das ist also verschwindend wenig.
Und wenn Du noch eine alte Micro-SD-Card rumliegen hast, kannst Du die Kosten auch noch einsparen.
-
Im Prinzip braucht man bloß 5 Teile:
Nano Clone 6.29 € SD-Cardreader 4.49 € RTC DS3231 4.87 € SD-Card 16 GB 4.69 € Netzteil 5V 7.99 € macht zusammen: 28.33 €
Im Schaltplan sieht das dann so aus:
An J1 kommt der analoge Sensor und an J2 das stabilisierte 5V-Netzteil.
Also, falls jemand Interesse daran hat, könnte ich auch ein Projekt daraus machen. Mit Software für den Arduino und AutoIt-Script.
-
Wie du es beschreibst, ist es das, was ich als Spreizung kenne. Die 1V maximal entsprächen einem oberen Druckwert von 20 mbar. Eine Genauigkeit von 0,5 mbar ist ausreichend, also eine "Spreizung" auf 40 Schritte. Und auch bei einer 50 mbar Messung wären es dann nur 100 Steps.
Das ist die Auflösung. Und wenn Dir das ausreicht, braucht man nicht mal auf 1.1Volt umstellen und die 10Bit würden trotzdem reichen.
Die Wiederholrate würde man als Intervall oder Frequenz bezeichnen.
-
BugFix : Ich verstehe nicht so ganz, was Du gegen Eigenbau hast. Das hat doch enorme Vorteile.
Mit einem zusätzlichen SD-Cardreader für den Arduino kannst Du die Langzeitmessungen komplett vom ihm machen lassen. Dazu muss der PC nicht mal an sein.
Und bei Bedarf holst Du Dir die gespeicherten Daten über die serielle Verbindung auf den Rechner (ohne das die Messreihe unterbrochen werden muss).
Das funktioniert problemlos! Habe ich schon für meine Wetterstation eingesetzt.
Die Programme für den Arduino und AutoIt könnte ich Dir schreiben, falls Du damit Probleme hast.
-
Einen Arduino Uno oder Nano kannst Du mit analogReference(INTERNAL); auf 1.1Volt umschalten. Wenn Dir die 10Bit Auflösung ausreichen.
Ansonsten gibt es günstige ADS1115-Module, die 2/4 Eingänge mit 16 Bit Auflösung bieten und per I2C am Arduino angeschlossen sind.
Für die Kommunikation Arduino <=> AutoIt habe ich schon eine UDF geschrieben, die über die Serielle Schnittstelle kommuniziert.
-
Ich weiß jetzt nicht, was Du mit einem "Append"-Schalter meinst, aber worauf ich eigentlich hinweisen wollte, ist die BB-Code-Unterstützung.
Damit kannst Du den Text formatieren und an die Box senden. Hier mal als kleines Beispiel:
AutoIt
Alles anzeigen#include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include "Chatbox.au3" $hGui = GUICreate('Chatbox Beispiel', 600, 440, -1, -1, BitOR($GUI_SS_DEFAULT_GUI, $WS_SIZEBOX)) $hChat = _Chatbox_Create($hGui, 10, 10, 580, 420, 0xffffaa) _Chatbox_SetData($hChat, '[b]Hallo[/b], [i]Du[/i] schöne [u]Welt[/u].', 0x000000, 2) _Chatbox_SetData($hChat, 'MsgBox [b]( [color=#ff4433]flag[/color][/b], "title", "text" [, timeout = 0] [, hwnd = 0] [b])[/b]', 0x000088, 4) GUISetState() While True Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit EndSwitch WEnd -
Ich hatte mal eine UDF geschrieben, die unterschiedliche Farben und Fontgrößen/-stile mittels embedded IE angezeigt hat. Also mit HTML. Wobei ich auch eine BB-Code-Unterstützung eingebaut habe.
Damit solltest Du Dein Vorhaben auch realisieren können: Chatbox-UDF
-
Achso, noch ein Nachtrag: Der Button, ganz rechts bei der Suche (der mit dem Pfeil nach links), dient zum zurücksetzen. Es wird dann nicht mehr das Suchergebnis angezeigt, sondern wieder die normale Liste.
-
Ich habe gerade festgestellt, dass die Suche nach mehreren Suchbegriffen gar nicht so viel länger dauert.
Ich durchsuche ja das Datenbank-Array und nicht das Listview, da ist AutoIt doch noch schnell genug (wobei das natürlich bei großen Datenmengen und vielen Suchbegriffen schnell ansteigt).
Somit habe ich jetzt nur mein Script etwas erweitert/angepasst. Die wichtigsten Änderungen:
1. In Zeile 27 kannst Du jetzt einen Pfad zu einer Datenbankdatei eintragen, die beim Programmstart geladen werden soll.
2. Es gibt jetzt beim Listview ein Kontextmenü, in dem Du die markierten Einträge ins Clipboard kopieren kannst.
3. Die Suche habe ich komplett umgestellt. Man kann mehrere Suchbegriffe eingeben, aber jeder Suchbegriff muss mit einem "+" oder "-" anfangen. Das Plus bedeutet: dieser Suchbegriff muss in der Zeile (egal welche Spalte) vorkommen. Minus bedeutet das Gegenteil (darf in der Zeile nicht vorkommen).
4. Damit die Suche Groß-/Kleinschreibung unterscheidet, muss der Suchbegriff (ohne das Plus/Minus) in Anführungszeichen stehen.
5. Das Format habe ich an Deine Datensätze/Felder angepasst.
6. Ein paar "kosmetische" Änderungen.
-
Ich würde das machen, aber momentan befinde ich mich im Urlaub auf Helgoland (noch bis Sonntag).
Also frühestens Montag. Vorher würde ich das nicht schaffen.
Es wäre aber in jedem Fall hilfreich, wenn Du uns mal einige (Beispiel-)Datensätze zur Verfügung stellst.
Möglichst als Datei (Txt-Format reicht).
Außerdem wie die Daten dann im Listview stehen sollen (Anzahl der Spalten) und nach was Du dann suchen willst.
-
Telegram besitzt eine sehr gute Bot-API, womit man sowas viel besser erledigen kann, als mit PixelChecksum und MouseClick.
Schau mal hier: https://www.heise.de/ct/artikel/Mit…en-3675555.html
-
Eine umfangreiche Suche (mit mehreren Suchwörtern) würde ich auch lieber in SQLite ausführen. Das ist mit AutoIt-Mitteln nicht sehr schnell. Besonders bei umfangreichen Datensätzen.
Verschwende nicht die Zeit mit dem "aufbohren" meines Scripts, sondern benutze für die Verwaltung SQLite. Damit lassen sich sehr universelle Suchmuster erstellen.
-
Oh, mir ist gerade aufgefallen, dass Windows offensichtlich mehrere Tooltips offen hat (vermutlich hidden) und das dadurch die Class wohl nicht eindeutig genug ist.
Du musst also doch über den Titel das Window-Handle holen:
Code
Alles anzeigen#include <Array.au3> #include <Misc.au3> #include <WinAPIMisc.au3> #include <WinAPISysWin.au3> Opt('WinTitleMatchMode', 2) Global $dll = DllOpen("user32.dll") ; Den ToolTip anzeigen. ToolTip(@CRLF & "Dies ist ein Test" & @CRLF & @CRLF & "Zum Ausblenden des ToolTips, auf den ToolTip klicken." & @CRLF & " ", _ @DesktopWidth * 0.5, @DesktopHeight * 0.5, "ToolTip-Test", 2, 2) ;~ Global $aWinList = WinList('[CLASS:tooltips_class32]') ;~ _ArrayDisplay($aWinList) While 1 ; Sleep, um die Systemlast zu reduzieren. Sleep(100) ; Testen, ob die linke Maustaste betätigt wurde. If _IsPressed("01", $dll) Then ; Testen, ob der Mausklick innerhalb des Tooltips erfolgt ist. If _MouseInWindow() Then DllClose($dll) ToolTip("") ExitLoop EndIf EndIf WEnd DllClose($dll) MsgBox(262144, "", "Ich habe fertig!") Exit Func _MouseInWindow() Local $hWnd = WinGetHandle('Dies ist ein Test') ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hWnd = ' & $hWnd & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console Local $tPoint = _WinAPI_GetMousePos(True, $hWnd) ConsoleWrite(StringFormat('X: %i, Y: %i\r\n', $tPoint.x, $tPoint.y)) Return _WinAPI_ChildWindowFromPointEx($hWnd, $tPoint) EndFunc -
Oder versuche es mal so:
Code
Alles anzeigen#include <Misc.au3> #include <WinAPIMisc.au3> #include <WinAPISysWin.au3> Global $dll = DllOpen("user32.dll") ; Den ToolTip anzeigen. ToolTip(@CRLF & "Dies ist ein Test" & @CRLF & @CRLF & "Zum Ausblenden des ToolTips, auf den ToolTip klicken." & @CRLF & " ", _ @DesktopWidth * 0.5, @DesktopHeight * 0.5, "ToolTip-Test", 2, 2) While 1 ; Sleep, um die Systemlast zu reduzieren. Sleep(100) ; Testen, ob die linke Maustaste betätigt wurde. If _IsPressed("01", $dll) Then ; Testen, ob der Mausklick innerhalb des Tooltips erfolgt ist. If _MouseInWindow() Then DllClose($dll) ToolTip("") ExitLoop EndIf EndIf WEnd DllClose($dll) MsgBox(262144, "", "Ich habe fertig!") Exit Func _MouseInWindow() Local $hWnd = WinGetHandle('[CLASS:tooltips_class32]') ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hWnd = ' & $hWnd & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console Local $tPoint = _WinAPI_GetMousePos(True, $hWnd) ConsoleWrite(StringFormat('X: %i, Y: %i\r\n', $tPoint.x, $tPoint.y)) Return _WinAPI_ChildWindowFromPointEx($hWnd, $tPoint) EndFunc -
Ich habe dein letztes Script (vom Post #9) soeben ausprobiert.
Ergebnis:
Left: 1266, Top: 848, Right: 1497, Bottom: 872
X: 739, Y: 432
Bei einer Auflösung von 1024x768?
Es wird aber ein Handle (<> 0) ausgegeben und der Window-Titel stimmt auch?
-
Lass die Daten mal nur in der Console ausgeben:
Code
Alles anzeigen#include <Misc.au3> #include <WinAPIGdiInternals.au3> #include <WinAPIMisc.au3> #include <WinAPISysInternals.au3> Global $dll = DllOpen("user32.dll") ; Den ToolTip anzeigen. ToolTip(@CRLF & "Dies ist ein Test" & @CRLF & @CRLF & "Zum Ausblenden des ToolTips, auf den ToolTip klicken." & @CRLF & " ", _ @DesktopWidth * 0.5, @DesktopHeight * 0.5, "ToolTip-Test", 2, 2) While 1 ; Sleep, um die Systemlast zu reduzieren. Sleep(100) ; Testen, ob die linke Maustaste betätigt wurde. If _IsPressed("01", $dll) Then ; Testen, ob der Mausklick innerhalb des Tooltips erfolgt ist. If _MouseInWindow() Then DllClose($dll) ToolTip("") ExitLoop EndIf EndIf WEnd DllClose($dll) MsgBox(262144, "", "Ich habe fertig!") Exit Func _MouseInWindow() Local $hWnd = WinGetHandle('[CLASS:tooltips_class32]') ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $hWnd = ' & $hWnd & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console Local $sTitle = WinGetTitle($hWnd) ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sTitle = ' & $sTitle & @CRLF & '>Error code: ' & @error & @CRLF) ;### Debug Console Local $tRect = _WinAPI_GetWindowRect($hWnd) ConsoleWrite(StringFormat('Left: %i, Top: %i, Right: %i, Bottom: %i\r\n', $tRect.left, $tRect.top, $tRect.right, $tRect.bottom)) Local $tPoint = _WinAPI_GetMousePos() ConsoleWrite(StringFormat('X: %i, Y: %i\r\n', $tPoint.x, $tPoint.y)) Return _WinAPI_PtInRect($tRect, $tPoint) EndFuncAnsonsten verändert das schliessen der ersten MsgBox ja die Mausposition.
Die AutoIt-Version benutze ich auch, allerdings habe ich noch Windows7 (64 Bit).
-
Hmm...bei mir funktioniert das, auch mit 120% und mit 1024x768.
Welche AutoIt-Version benutzt Du?
Welche Windows-Version?