Du musst die Saamples aus dem VS-Code in AutoIt übertragen.
Genau da ist mein Problem. VS-Code ist für mich, wie böhmische Dörfer
Du musst die Saamples aus dem VS-Code in AutoIt übertragen.
Genau da ist mein Problem. VS-Code ist für mich, wie böhmische Dörfer
Hallo Zusammen,
ich habe mir ein MinnowBoard Max zugelegt und zurzeit ein Windows 10 Pro (KEINE RT VERSION) installiert.
Jetzt möchte ich gerne via AutoIt die GPIO Schnittstelle nutzen. Allerdings habe ich null Ahnung wie ich das bewerkstelligen soll (bezogen auf die Software). Ich habe aber folgendes dazu gefunden:
https://ms-iot.github.io/content/en-US/…/PushButton.htm
Ich hoffe mir kann einer bei meinem Problem weiterhelfen?!
Schonmal vielen Dank für eure Hilfe!
Gruß
Homer J. S.
@Peter S. Taler: Ich mag zwar eigentlich keine Forenleichen Schändung, aber ich frage mich warum du auf so einen alten Post antwortest. Du hättest das 'Andy' ja auch via PN schreiben können. Zudem gebe ich Andy recht. Es mag sein, das sein Ton manchmal ein wenig schroff wirkt, aber bei so vielen Fragen, ohne richtige Informationen, kann man auch schroff werden. Und wenn einer Hilfe haben will, ohne selbst was dafür zu tuen, dafür gibt es die Rubrik "Programmieranfragen", zumal es sich hier um einen kommerziellen Zweck handelt. Ich kann von meiner Erfahrung hier im Forum behaupten, das man immer gut geholfen bekommt, wenn man ordentlich fragt und die passenden Informationen bereitstellt.
Edit:
Ironangel hat zudem seine Lösung , wie so oft hier im Forum, für sich behalten....
Gruß
Homer J. S.
@Micha_he: Bei einer TCP Verbindung kann man aber "life" schauen, was wann wie passiert. Und so was zu implementieren ist nicht wirklich mehr Aufwand, wie bei einem Logfile.
Edit:
Ich würde als erstes über TCP mit AdlibRegister ein Lifebit setzen, um zu sehen ob das Skript überhaupt noch läuft.
Gruß
Homer J. S.
Hallo Peter,
um das Problem "Online" zu verfolgen, würde ich eine TCP-Verbindung von dem "nicht" laufenden Skript zu einem anderen Computer aufbauen und die Daten (Tastatureingaben etc...) die du an das DOS-Fenster sendest, nochmals über TCP senden. Dann weißt du schonmal, ob das Skript hängt oder ob es an sonst was liegt.
Gruß
Homer J. S.
Hallo Zusammen,
ich habe ein Problem mit RegEx in einer App (http://netio.davideickhoff.de/). Das hat zwar nichts direkt mit AutoIt zu tun, aber eure Kompetenz ist mir ja bestens bekannt und daher bitte ich euch um Hilfe.
Ich habe einen String der wie folgt aufgebaut ist:
{WOHNEN_LICHT: ON}{KINDER_LICHT: OFF}{WOHNEN_TEMP: 12.3} usw...
Legende:
{ = Start einer Sequenz
WOHNEN_LICHT = Raum & Funktion
ON = Status (variable)
} = Ende einer Sequenz
Ich möchte gerne in dieser App via ReqEx anhand des Raumes und der Funktion den Status ermitteln. Damit meine ich, wenn ich als Filter z.B. "WOHNEN_LICHT" einsetze, das RegEx mir den Status "ON" rausfiltert. Dazu kommt das die Sequenzen nicht immer alle vorhanden sind und auch nicht immer gleich kommen. Ein Beispiel:
1 - {KINDER_LICHT: OFF}{WOHNEN_LICHT: ON}{WOHNEN_TEMP: 12.3} usw...
2 - {WOHNEN_LICHT: ON}{WOHNEN_TEMP: 12.3} usw...
3 - {WOHNEN_LICHT: ON}
4 - {WOHNEN_LICHT: ON}{KINDER_LICHT: OFF}{WOHNEN_TEMP: 12.3}
5 - ...
Leider unterstützt diese App bei iOS noch keine Groups, sonst würde es wie folgt funktionieren:
RegEx-Befehl = .*?(WOHNEN_LICHT).*?((?:[a-z][a-z0-9_]*))
Ergebniss:
Group #1: WOHNEN_LICHT
Group #2: ON
RegEx-Befehl = .*?(KINDER_LICHT).*?((?:[a-z][a-z0-9_]*))
Ergebniss:
Group #1: KINDER_LICHT
Group #2: OFF
RegEx-Befehl = .*?(WOHNEN_TEMP).*?([+-]?\d*\.\d+)(?![-+0-9\.])
Group #1: WOHNEN_TEMP
Group #2: 12.3
Ich hoffe, ich konnte mein Problem verständlich genug erklären. Vielen Dank schon mal für eure Hilfe!
Gruß
Homer J. S.
@alpines: Das war der Tip den ich gebraucht habe - Vielen Dank! Da hätte ich ja auch selber drauf kommen können ;). Zudem war die fiktive If-Abfrage an der falschen stelle.
Hier das geänderte Test Skript:
;Init
OnAutoItExitRegister("OnAutoItExit")
TCPStartup()
;Init Variablen
$IP='192.168.10.50'
$PORT=54321
$LISTEN=TCPListen($IP, $PORT)
$ACCEPT=0
;Mainloop
While 1
While 1
$ACCEPT=TCPAccept($LISTEN)
If ($ACCEPT>0) Then ExitLoop
Sleep(10)
WEnd
ConsoleWrite('Connect' & @CRLF)
While 1
$TIMEOUT=TimerInit()
While 1
$RECEIVE=TCPRecv($ACCEPT, 1024)
If Not @error Then ExitLoop
If (TimerDiff($TIMEOUT)>250) Then
$TIMEOUT=TimerInit()
If (TCPSend($ACCEPT , ' ')==0) Then ExitLoop 2
EndIf
Sleep(10)
WEnd
While 1
$RECEIVE&=TCPRecv($ACCEPT, 1024)
If (@error) Then ExitLoop
WEnd
TCPSend($ACCEPT ,@LF) ;Linefeed -> Acknowledged
ConsoleWrite($RECEIVE & @CRLF)
WEnd
ConsoleWrite('Disconnect' & @CRLF)
WEnd
;Funktionen
Func OnAutoItExit()
TCPCloseSocket($ACCEPT)
TCPShutdown()
EndFunc
Alles anzeigen
Gruß
Homer J. S.
Hallo Zusammen,
ich habe mal wieder ein Problem, wofür ich eure Hilfe benötige. Ich habe eine App welches über TCP mit meinem Skript kommuniziert. Allerdings habe ich keine Kontrolle darüber, ob die TCP-Verbindung von der App unerbrochen worden ist (z.B. beim schließen der APP), um eine neue Connection zu starten. Eine
fiktive If-Abfrage zum verlassen der Schleife, um einen neue Connection zu starten, habe ich schon eingebunden.
Hier mein Test Skript:
;Init
OnAutoItExitRegister("OnAutoItExit")
TCPStartup()
;Init Variablen
$IP='192.168.10.50'
$PORT=54321
$LISTEN=TCPListen($IP, $PORT)
$ACCEPT=0
;Mainloop
While 1
While 1
$ACCEPT=TCPAccept($LISTEN)
If ($ACCEPT>0) Then ExitLoop
Sleep(10)
WEnd
ConsoleWrite('Verbunden'&@CRLF)
While 1
While 1
$RECEIVE=TCPRecv($ACCEPT, 1024)
If Not @error Then ExitLoop
Sleep(10)
WEnd
While 1
$RECEIVE&=TCPRecv($ACCEPT, 1024)
If (@error) Then ExitLoop
WEnd
TCPSend($ACCEPT ,@LF) ;Linefeed -> Acknowledged
ConsoleWrite($RECEIVE & @CRLF)
;If Verbindung der App==Unterbrochen Then ExitLoop ;-> Bei Disconnect der App Schleife verlassen
Sleep(10)
WEnd
WEnd
;Funktionen
Func OnAutoItExit()
TCPCloseSocket($ACCEPT)
TCPShutdown()
EndFunc
Alles anzeigen
Wenn bei jedem Schleifendurchgang ein "TCPAccept($LISTEN)" ausgeführt wird, dann wird die Verbindung zur App kurz getrennt. Was für eine Möglichkeit besteht, die Verbindung zu prüfen ohne eine Unterbrechung zur App hervorzurufen?
Vielen Dank für eure Hilfe!
Gruß
Homer J. S.
Hallo Zusammen,
habe mich entschieden erstmal ohne Registry Einträge zu arbeiten. Wenn ich allerdings doch mal welche anlegen will/muß, bin ich durch @Micha_he einen guten Teil schlauer - Vielen Dank!
Gruß
Homer J. S.
nelly35000: Lottich hat zwar schon den richtigen Denkanstoß gegeben, aber hier ist der funktionierende Code bezüglich FileMove:
$PfadFind='d:\'
$PfadCopy='d:\lol\'
$FirstFile=FileFindFirstFile($PfadFind&'*.txt')
$FileFind=FileFindNextFile($FirstFile)
FileMove($PfadFind&$FileFind,$PfadCopy)
Gruß
Homer J. S.
Hallo zusammen und sorry für die späte Antwort.
@Micha_he: Dein Post ist sehr ausführlich und daher muss ich mir das erstmal in Ruhe zu gemüte führen.
Dazu müsstest Du mal sagen, um was es eigentlich geht.
Das ist eigentlich ganz einfach. Ich bin dabei eine Software zu schreiben und da bin ich an einem Punkt angelangt, wo es sinnvoll wäre z.B. den Pfad zum Hauptordner meines Programms in der Registry einzutragen. Das Programm benötige ich auf 32&64Bit Systemen und daher wäre mir ein Schlüssel bzw. dessen Pfad der auf 32&64Bit Systemen Identisch ist, am liebsten. Die spätere Installation gilt für alle User des System und muß auch ohne Adminrechte auskommen.
Vielen Dank für eure Hilfe!
Gruß
Homer J. S.
Hallo Zusammen,
ich benötige mal wieder euer Fachwissen. Ich würde gerne für ein eigenes Programm Schlüssel für Pfadangaben in der Registry anlegen. Im www finde ich leider nichts richtiges, wo man diese Einträge korrekt macht. Ich finde leider nur "Leg irgendwo Schlüssel an" etc... Ich denke das ist nicht imme Sinne des Erfinders. Daher bitte ich euch mir zu helfen.
Zur Info: Das BS ist Windows 7 32Bit&64Bit.
Vielen Dank schonmal.
Gruß
Homer J. S.
Jedoch versteh ich nicht wofür man so ein Aufwand treiben sollte?
Wenn man ein Programm "Cloned", dann könnte dies böse absichten haben?! Wenn ein User denkt, er gibt Daten (Passwörter etc...) in das "richtige" Programm ein und das "böse" Programm empfängt die Daten, dann könnte eine Art Keylogger entstehen.
@Freaky: Ich hatte vor nicht all zu langer Zeit eine ähnliche Fragestellung:
Kommunikation Skripte untereinander
Edit: Der Post 27 enthält das erste Beispiel von @Andy!
Man hätte die Suche mal befragen können
Gruß
Homer J. S.
Wenn man das richtig machen will muss man sich aber auch mit den verschiedensten Möglichkeiten zur Inter Prozess Kommunikation beschäftigen.
Hier ist eine einfache und geniale Lösung von @Andy:
Kommunikation Skripte untereinander
Gruß
Homer J. S.
Hallo Zusammen,
sorry für die späte Antwort -> Meine Family war das WE Krank .
@Andy: Deine Lösung funktioniert wie immer tadellos. Allerdings kommuniziere ich später mit >256 Elementen und da finde ich das ein wenig unübersichtlich.
@Photon: Das war nicht ganz, was ich gesucht habe.
@ShitDown: Deine Lösung hat mich zur meiner Variante inspiriert.
Hier meine jetztige Variante:
DIM $DATENBYTE_HOLGER[2]=[1,1]
DIM $DATENBYTE_PETER[2]=[1,2]
DIM $DATENBYTE_JOSEF[2]=[1,3]
DIM $DATENBYTE_WERNER[2]=[2,1]
DIM $DATENBYTE_DANIEL[2]=[2,2]
DIM $DATENBYTE_PATRIK[2]=[2,3]
$ANTWORT_BYTE11 = _Get($DATENBYTE_HOLGER)
$ANTWORT_BYTE12 = _Get($DATENBYTE_PETER)
$ANTWORT_BYTE13 = _Get($DATENBYTE_JOSEF)
$ANTWORT_BYTE21 = _Get($DATENBYTE_WERNER)
$ANTWORT_BYTE22 = _Get($DATENBYTE_DANIEL)
$ANTWORT_BYTE23 = _Get($DATENBYTE_PATRIK)
Func _Get($GET_NAME)
Return DllStructGetData($STRUCT, $GET_NAME[0], $GET_NAME[1])
EndFunc
Alles anzeigen
...und hier das ganze ohne Funktion
DIM $DATENBYTE_HOLGER[2]=[1,1]
DIM $DATENBYTE_PETER[2]=[1,2]
DIM $DATENBYTE_JOSEF[2]=[1,3]
DIM $DATENBYTE_WERNER[2]=[2,1]
DIM $DATENBYTE_DANIEL[2]=[2,2]
DIM $DATENBYTE_PATRIK[2]=[2,3]
$ANTWORT_BYTE11 = DllStructGetData($STRUCT, $DATENBYTE_HOLGER[0], $DATENBYTE_HOLGER[1])
$ANTWORT_BYTE12 = DllStructGetData($STRUCT, $DATENBYTE_PETER[0], $DATENBYTE_PETER[1])
$ANTWORT_BYTE13 = DllStructGetData($STRUCT, $DATENBYTE_JOSEF[0], $DATENBYTE_JOSEF[1])
$ANTWORT_BYTE21 = DllStructGetData($STRUCT, $DATENBYTE_WERNER[0], $DATENBYTE_WERNER[1])
$ANTWORT_BYTE22 = DllStructGetData($STRUCT, $DATENBYTE_DANIEL[0], $DATENBYTE_DANIEL[1])
$ANTWORT_BYTE23 = DllStructGetData($STRUCT, $DATENBYTE_PATRIK[0], $DATENBYTE_PATRIK[1])
Alles anzeigen
Nochmals vielen Dank für die guten Ideen!
Gruß
Homer J. S.
Hallo Zusammen,
ich möchte gerne den Variableninhalt als Teil von einem Befehl nutzen.
In der DLL-Kommunikation wird ein Array wie folgt gelesen:
$ANTWORT_BYTE11 = DllStructGetData($struct, 1,1)
$ANTWORT_BYTE12 = DllStructGetData($struct, 1,2)
$ANTWORT_BYTE13 = DllStructGetData($struct, 1,3)
$ANTWORT_BYTE21 = DllStructGetData($struct, 2,1)
$ANTWORT_BYTE22 = DllStructGetData($struct, 2,2)
$ANTWORT_BYTE23 = DllStructGetData($struct, 2,3)
Ich würde aber gerne mit einem Alias arbeiten etwa so:
$DATENBYTE_HOLGER='1,1'
$DATENBYTE_PETER='1,2'
$DATENBYTE_JOSEF='1,3'
$DATENBYTE_WERNER='2,1'
$DATENBYTE_DANIEL='2,2'
$DATENBYTE_PATRIK='2,3'
$ANTWORT_BYTE11 = DllStructGetData($struct, $DATENBYTE_HOLGER)
$ANTWORT_BYTE12 = DllStructGetData($struct, $DATENBYTE_PETER)
$ANTWORT_BYTE13 = DllStructGetData($struct, $DATENBYTE_JOSEF)
$ANTWORT_BYTE21 = DllStructGetData($struct, $DATENBYTE_WERNER)
$ANTWORT_BYTE22 = DllStructGetData($struct, $DATENBYTE_DANIEL)
$ANTWORT_BYTE23 = DllStructGetData($struct, $DATENBYTE_PATRIK)
Diese Form hat den Vorteil, wenn sich was im Array verschiebt, dann muß ich nur den Alias neue Werte geben und mein Code bleibt unberührt.
Mein gezeigtes Beispiel funktioniert so natürlich nicht, da AutoIT dies nicht als Befehl interpretiert.
Hat einer eine Idee, wie man das umsetzen könnte?
Vielen Dank für eure Bemühungen.
Gruß
Homer J. S.
Falscher Forenbereich.
Finde ich nicht, da diese Problematik meistens bei “Hilfe und Unterstützung“ auftaucht. Meiner Meinung nach, sollte das Thema unter "Hilfe und Unterstützung" angepinnt werden.
Gruß
Homer J. S.
Hallo AutoIt Community,
ich stelle immer wieder fest, das User die ein Problem haben und für dieses hier im Forum eine Lösung suchen, eine Lösung selbst finden und diese aber nicht teilen. Zu allem Überfluss kommen noch Kommentare wie:
- Habe ich selbst gelöst
- Hat sich erledigt, habe das Problem gefunden
- etc...
Hilfe bekommen JA, Hilfe bieten NEIN -> Das ist egoistisch! Zudem haben User die ein ähnliches/gleiches Problem haben und nach diesem suchen, es nicht gerade einfach, durch so Foren-Leichen! Und alle die jetzt meinen, wenn ich keine Hilfe bekomme, dann gebe ich keine Hilfe -> Ihr habt den Sinn eines Forum absolut nicht verstanden!
Sorry, aber das musste ich jetzt mal loswerden!
Edit: Im übrigen wäre das ändern des Status offen/gelöst auch vom Vorteil!
Gruß
Homer J. S.