Der Befehl zum Senden der "NachUntenTaste" lautet:
Send("{DOWN}")
Sleep(50)
Send("{DOWN}")
Sleep(50)
Send("{DOWN}")
Der Befehl zum Senden der "NachUntenTaste" lautet:
Send("{DOWN}")
Sleep(50)
Send("{DOWN}")
Sleep(50)
Send("{DOWN}")
Moin moin,
ich würde mich gerne mal den Objekten und oder Com-Objekten beschäftigen.
Bis auf die 4 sperrlich erklärten befehle in der Hilfe gibts leider nichts zum üben.
Mit Versuchen und den Beispielen aus der Hilfe bin ich leider gar nicht klar gekommen.
Hat jemand ne Ahnung wo´s´n Tutorial gibt?
Alles Gute wünsche ich dem Forum zum 4. Geburtstag !!!
Töörööö !!!
![]()
der TODESPLAYER funzt bei mir net.
Meldung:
C:\Users\xxxxxx\Desktop\AutoIt v3 Script (neu).au3 (554) : ==> Variable used without being declared.:
Case $showitem
Case ^ ERROR
System = Win7 64bittttt
aber die hundertstel-Sekunde in der ich ein GUI sehen konnte, hats mir gefallen ![]()
Hi,
ich hatte eigendlich die orginal dll gemeint.Wenn mindestens das .NET-Framework 2 installiert ist und das Skript und die Wrapper-dll im selben Verzeichnis liegen funktioniert diese definitiv. Es sei den du Startes das Skript als 64-Bit Skript. Es muss als 32Bit Skript ausgeführt werden (x86).
MFG. RAPTOR-ONE
OOoo!!! als x86er löppts !!!! ![]()
Hi,
du benötigst das .NET-Framework 2 für die Wrapper dll.
Nur zur Info was gibt die Out32 eigendlich für einen Wert zurück? Ist das 0 für erfolgreiches schreiben und -1 bei Fehler oder was?Derzeit schreibt er immer nur den Dezimalwert an den Port ohne 0 aber das kann man schnell ändern.
Wenn dann alles läuft änder ich die Wrapper noch mal schnell das sie die 0 sendet.MFG. RAPTOR-ONE
Ich stelle fest, der Call liefert in jedem Fall die 0 zurück. Erfolg und Misserfolg = 0.
Wieviel Arbeit steckt da bis jetzt drin, wenn ich mal fragen darf?
Moin moin! Und ein fettes Danke für das in meinen Augen GROßE Engagement!
Aber ich glaub da funzt wad nicht: AutoIt sagt dazu in beiden Fällen ( MultiOut32Test und MultiOut32 ) :
C:\Users\__\DllWrapper\DllWrapper\Wrapper.au3 (10) : ==> Subscript used with non-Array variable.:
MsgBox(0, "StringTest ,Test,", $result[0])
MsgBox(0, "StringTest ,Test,", $result^ ERROR
$Return ist kein Array und beinhaltet 0 .
Was tun? Ich kann die Sache in reality auch erst am Dienstag wieder an der Maschine testen.
Und noch was: Was macht die Funktion genau? Wird im Wechsel der $Zu_schreibender_DezimalWert und Null auf den Port geschrieben?
Das wär ja toll!!
sonst noch wer erfahrung in sachen DLL bearbeiten oder ne Alternative IDEE?
vielen Dank für die bisherigen Hilfen schonmal..!!
Lol !!
hmmkay
...lieber spät als nie...
hab mir jeden Tag seit seinem Post Gedanken Gemacht... und was ist der Dank?! SPOT und HOHN...
lol
LeichenschänderDas ist jezt schon fast 2 Jahre her
*duck*
//Edit: ich glaub, du hast den falschen Thread erwischt.
dad war für vivus ....
BITTESCHÖN!!
Zum lesen:
[autoit]
$DLL = DLLOpen("inpout32.dll")
$BCD1 = DllCall( $DLL, "short", "Inp32", "short", $ParallelPort1) ;Data-Register1
[/autoit][autoit][/autoit][autoit]$BCD2 = DllCall( $DLL, "short", "Inp32", "short", $ParallelPort1+1) ;Status-Register1
[/autoit][autoit][/autoit][autoit]$BCD3 = DllCall( $DLL, "short", "Inp32", "short", $ParallelPort1+2) ;Control-Register1
[/autoit][autoit][/autoit][autoit][/autoit]Der Return von diesem Call ist ein ARRAY !
Zum Schreiben:
[autoit][/autoit][autoit][/autoit][autoit]$DLL = DLLOpen("inpout32.dll")
[/autoit][autoit][/autoit][autoit]DllCall( $DLL, "int", "Out32", "int", $ParallelPort1, "int", $BCD) ;Data-Register
Wobei ich bei $ParallelPort immer den DezimalWert der Adresse verwende - so ist es einfacher die nächsthöhere Adresse anzusprechen.
bei mir: Basisadresse = 888 ( Data-Register ) ( = 0x378 in hex )
Statusregister = 889
Controlregister = 890
Wenn du die DLL ändern willst, musst du das aber in c++ machen, da sie damit geschrieben wurde und das ist noch viel schwieriger als FreeBasic. Aber HIER gibt es DLL und quellcode, falls du es wirklich versuchen willst.Einfacher ist auf jeden Fall, eine 2. DLL zu schreiben, die intern die Funktionen der normalen inpout32.dll verwendet und zusätzliche Funktionen zur Verfügung stellt.
So,.. hab mir den Quellcode und die Pjojektdateien angesehen. Bin leider genauso schlau wie vorher.
Das mit dem "einfach ne 2. DLL schreiben" krieg ich aber denke ich nicht gebacken... bin da wie schon erwähnt Jungfrau.
Hallo! Danke.
Sieht interessant aus. Aber ich glaube, wenn ich genau wüsste, was in der inpout32.dll drin steht, dann wäre ich in der Lage sie so zu verändern, wie ich´s gern hätte.
Das weiß ich aber leider nicht.
Damit tuh ich mich grad ein bischen schwer...
Kann ich die dll irgendwie auseinanderbauen um reinzusehen?
schreib dir ne wrapper-DLL in z.B. freebasic. Da machst du dann eine Funktion, die eine bestimmte Zahl von Schritten ausführt
Diese kannst du dann in AutoIt aufrufen.
klingt vielleicht wie vom Anfänger, aber.... UND WIE?!!?!?!
nehmen wir mal an, ich hätte keinen Plan, wie die inpout32.dll aussieht ... ich weis lediglich, wie ich die Funktionen in AI aufrufe.
...Dumm sein ist manchmal erniedrigend...
ich hoffe, ich muss mich nicht erst 1/2 Jahr einarbeiten, bovor ich das hier fertig bekomme..
ja das sind 100 Aufrufe der DLL / sek. Für manche Anwendungen mehr als genug.. Lauflicht.. Modelleisenbahn... Digitale eingänge... aber ein 200-Schritt-Motor... bäääää
Na klar,
es sind 1- 10 ms. Eher der Durchschnitt. Einmal per TimerDiff und einmal visuell. Mein LPT-gesteuerter Schrittmotor hat 200 Schritte. Und bei ca 5ms pro Schritt kann man beim zusehen einschlafen... Drehzahl kannst dir ja ausrechnen... (1 Umdr. / sek entspr. 60 /min. ) ... ZU_LANGSAM("viel")
Netter Vorschlag, Danke!
Wie/Womit kann ich denn die DLL einsehen, sodass sich die Nr. ergibt??
Danke
Gruß
Ok. Danke erstmal für´s Auslöschen meiner Hoffnungen...
Wofür wendet man denn die DLLStructCreate an?
Der Name dieser Funktion erklärt sich ja fast selbst. Klingt als soll hier sowas wie eine DLL-Function gebaut werden.
Aber ne Erklärung oder ne Anwendung wär schon nicht schlecht.
Hallo Leude...
Ich habe eine "inpout32.dll" mit der ich einzelne und/oder mehrere Bits aus den 3 Registern der Parallelen Schnittstelle schalte und/oder lese.
Beisp.:
[autoit]
$Dll = DLLOpen("inpout32.dll")
DllCall($DLL, "int", "Out32", "int", $EA_Adresse_des_Port, "int", $Zu_schreibender_DezimalWert)
[/autoit][autoit][/autoit][autoit][/autoit]Diesen DLLCall möchte ich so schnell wie möglich ausführen. Derzeit dauert der Aufruf bei mir etwa 10 ms, was für meine Bedürfnisse noch zu langsam ist.
Da ich in Sachen DLL noch fast NEWBE bin, frage ich: "Kann ich den Aufruf noch beschleunigen?
Bin durch " DLLStructCreate " & co. leider nicht durchgestiegen..
Danke
Gruß
AHH!! Verstehe... jetzt erst.. vielen Dank!
hab meinen Erfolg nun mit der Ini-Datei gehabt - also Problem gelöst!
Gruß
Chrischn
Ok - hab ne neue idee - werd mich mal mit INI- R/W beschäftigen...
danke für erhaltenen Infos an die Beteiligten...!!