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

Beiträge von Andy

  • COM Objekt für RS232 Kommunikation

    • Andy
    • 27. April 2011 um 13:53

    Hi,
    HextoString() verwendet intern Binarytostring, das hat nichts mit dem zu tun, was ihr senden wollt....

    Wenn also, wie im vorliegenden Fall, BYTES gesendet werden sollen, dann setzt man diesen string z.B. so zusammen:

    Spoiler anzeigen
    [autoit]

    #include <String.au3>
    Global Const $Byte1 = 0x01
    Global Const $Byte2 = 0x02
    Global Const $Byte3 = 0xFF
    Global Const $Byte4 = BitXOR($Byte1, $Byte2, $Byte3)

    [/autoit] [autoit][/autoit] [autoit]

    $string=chr($byte1)&chr($byte2)&chr($byte3)&chr($byte4)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $string = ' & $string & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    ;oder
    $string=binarytostring("0x0102FFFC") ;hardkodiert
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $string = ' & $string & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    ;oder
    $string=binarytostring("0x"&hex($byte1,2)&hex($byte2,2)&hex($byte3,2)&hex($byte4,2))
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $string = ' & $string & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;FALSCH!!!
    $string=_HexToString($Byte1 & $Byte2 & $Byte3 & $Byte4)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $string = ' & $string & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    For $i=1 to stringlen($string)
    $x=asc(stringmid($string,$i,1));asciicode der einzelnen zeichen
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $x = ' & $x & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    next

    [/autoit]
  • Dateien aus DLL

    • Andy
    • 27. April 2011 um 12:44

    Hi,

    Zitat

    Hoffe mir kann da jemand helfen.

    Da google absolut keine Ergebnisse ausspuckt (nur 1800 ist echt viel zu wenig bei "bild dll site:https://autoit.de/www.autoit.de") und die Forensuche auch nichts bei "Bilder dll" (3 Treffer) kann dir hier niemand weiterhelfen
    Man sollte den Thread daher schliessen....

  • dynamisch erstelle Buttons ... klick abfragen??

    • Andy
    • 27. April 2011 um 08:59

    Hi,
    es gibt mehrere Möglichkeiten:
    [ gelöst ] Variable Funktionen!?
    oder "zu Fuss"
    [ gelöst ] Automatische Variablennamen

  • [offen] Aufruf externer Datei aus LUA - CMD-Window unterdrücken

    • Andy
    • 25. April 2011 um 08:29

    Hi,
    Win XP32, es erscheint folgende Fehlermeldung sowohl beim Drücken von ALT+L (die alte Funktionsliste) als auch bei CTRL+ALT+L

    Zitat

    C:\Programme\AutoIt3\SciTE\Lua\AutoItTools.lua:97: bad argument #1 to 'gmatch' (string expected, got nil)
    >Lua: error occurred while processing command


    Was hat das Script bei CTRL+ALT+L in der "normalen" functionslist zu suchen, oder verwendest du diese mit?

    Wenn ich den Shortcut auf CTRL+ALT+O setze, dann bekomme ich als Fehlermeldung

    Zitat

    > Lua: error checking global scope for command

  • DeskStream 2 Release Candidate 1.8

    • Andy
    • 23. April 2011 um 18:22
    Zitat

    Oder einfach unten und rechts zwei balken setzen, zum hin und herschieben

    Gute Idee, mach das doch einfach!

  • [Teamspeak 3] Autoit.de - Online Community

    • Andy
    • 23. April 2011 um 15:42

    Hi,
    ich kann keine Sprachaktivierung benutzen, wird das vom Server geblockt bzw. nicht für neue User aktiviert?

  • StringBetween Breich eingrenzen

    • Andy
    • 23. April 2011 um 14:43

    Hi,
    lies dir nochmal mal die Hilfe zu stringbetween() durch

    [autoit]

    $Ergebnis =_StringBetween($Suchtext,'<a href="#','"><span class')

    [/autoit]

    findet alle Strings, die zwischen dem Startstring und dem Stopstring stehen, und schreibt diese in ein Array

    Zitat

    2. und anschließend suchen?

    stringbetween() findet die Strings alleine^^

  • DeskStream 2 Release Candidate 1.8

    • Andy
    • 23. April 2011 um 14:14

    Hi,

    Zitat

    Könnte man die Auflösungsverhältnisse (4:3 ; 16:9 ; etc) beibehalten bzw. eine Checkbox dafür zu machen?

    Ist für die nächste Version vorgesehen :rolleyes:

    Zitat

    Was zeigt der erste Zahlenwert der an dem Cursor fest ist an (links neben der FPS) ? -> Button zum deaktivieren, da selbst auch die FPS im Fenstertitel angezeigt werden

    Das ist ein Tooltip im Server, der die zzt übermittelte Anzahl der Bytes anzeigt. Such im Serverscript nach Tooltip und kommentier die Zeile aus....

    Zitat

    Eine möglichkeit, nach dem Zoom den Focus zu verschieben (Per Pfeiltasten; Inlay oder sonstwas), sodass man nicht jedesmal rauszoomen muss, um an eine andere Stelle zu kommen

    schaumamal...die Bedienung mit dem Mausrad ist imho sehr schnell.

    Zitat

    Anstelle der sichtbaren Mausbewegung eine Schnellere. (MouseMove Speed nahe 1)

    Einfach im Serverscript nach Mouseclick suchen (im case-zweig) und dort den Geschwindigkeitsparameter angeben, das hat auch den großen Vorteil, nun doppelklicks zeitnah weiterzugeben

    [autoit]

    Case "M" ;linke maustaste angekommen
    MouseClick("left", $x, $y,1,0);klickt ohne verzögerung
    Case "D" ;rechte maustaste angekommen
    MouseClick("right", $x, $y,1,0)

    [/autoit]
    Zitat

    Unterstützung für ein 2Bildschirmsystem (Wieder ein Inlay oder Button zum wechseln? / Per Pfeiltasten bewegen)

    noch nicht vorgesehen^^...kann ohne weiteres eingebaut werden...

    Zitat

    Nachträglich die fenstergröße verändern (Per klick-ziehen am FensterRand)

    gabs schon in einer der vorherigen Versionen, jedenfalls auf meiner Platte :whistling: , kann eingebaut werden...

  • TCP Client connect to Server Problem

    • Andy
    • 22. April 2011 um 08:01

    Hi,
    ich glaube, für einige Postings würde sich ein Sticky lohnen.....
    z.B. für den hier: [ gelöst ] Clien sendet an Server nicht übers Inet
    Der Threadersteller dort *husthust* wollte es jedenfalls mal ausprobieren, ob es funktionierte, hat er uns nicht mitgeteilt!

  • Array eingelesen - wo ist es?

    • Andy
    • 20. April 2011 um 10:32

    Hi,
    ja, ich hatte das Vorhaben, die Strukturen eines universellen Arrays herauszufinden, aufgegeben. War sowieso nur interessehalber eine Beschäftigung für lange Winterabende :P

    Das Problem hängt nicht zuletzt mit dem meiner Meinung nach sehr guten Feature von Autoit zusammen, keine Variablentypen definieren zu müssen.
    Man kann ein Array ohne weiteres als

    [autoit]

    dim $a[3]=[3.1415926,"blablub",chr(0)]

    [/autoit]

    beschreiben.
    Um jetzt einen String, ein Float und einen Verweis in einem "Array" unterzubringen, gibt es mehrere programmtechnische Möglichkeiten und deren Kombinationen. Sehr einfach wären z.B. verkettete Listen.
    Allerdings ist das RE alles andere als trivial...
    Mal einen x-beliebigen Wert in ein "Array" zu schreiben und diesen dann im Speicher zu suchen um daraufhin den Pointer auf den Wert zu erhalten, der wiederum ja auch irgendwo im Speicher auf das "Array" verweist, ist nicht das Problem. Das Problem ist, die "Struktur" (struct ...sic) im Speicher zu finden bzw. den Einsprungpunkt in diese verkettete Liste (wenn es überhaupt eine ist ^^)

    Zitat von Scritch

    Wenn ich ein Array in Autoit erstelle, dann muss es sich ja auch irgendwo im Speicher befinden, richtig?

    :o), wenn DU ein "Array" erstellst, und es nicht aus wahllosen Datentypen besteht, dann frag dich mal, wieso du ein "Array" erstellst, statt einer Struct, bei der du einen Pointer auf die Daten bekommst!

    Zitat von Scritch

    Ist es möglich dieses Array mit anderen Programmen, oder mit einem anderen Autoit-Script auslesen? Man müsste ja eig. nur die Speicheradresse wissen, oder ist das so einfach nicht?

    s.o, den per dllstructgetptr() erhaltenen Pointer kannst du selbstverständlich per einfacher Message an andere Programme schicken.

    Zitat von UEZ

    Wenn du den Pointer des Arrays kennst und es ist genauso aufgebaut wie in AutoIt, dann kannst du es bestimmt "anzapfen".

    genau DAS ist das Problem. AutoIt verwendet imho nicht die Pointer direkt, sondern erstellt eine Kopie der Daten. Schau mal was passiert, wenn du bei einem dllcall einen Pointer in Form von "int*", "ptr*" oder "str*" verwendest. Dann wird clevererweise eine Kopie der Daten verwendet, denn sollte der dllcall aus irgendwelchen Gründen nicht ordendlich funktionieren, wird nur die temporäre Kopie der Daten zerstört, aber nicht das Orginal.
    Man muss schon eine gehörige Portion Enthusiasmus mitbringen, um als AutoIt-Entwickler hunderte bis tausende Zeilen Code zu schreiben und RICHTIG viel Gehirnschmalz einzusetzen, um eine einzige "einfache" Funktion umzusetzen.


    Zusammenfassend:
    Schreibe deine Daten in eine Struct, dann hast du auch einen Pointer. Und btw., Daten in einer Struct zu verändern (schreiben/lesen) ist in etwa genau so schnell wie das Arbeiten mit Arrays.

  • Eine Frage zu Potentiometern

    • Andy
    • 18. April 2011 um 11:39

    Hi,

    Zitat

    Wenn ich 9 LED's parallel schalte, kann ich
    dann einen 470Ohm Widerstand für alle benutzen?


    die Frage kannst du dir einfach selbst beantworten.
    Bei der Parallelschaltung addieren sich die Ströme durch jede der LED´s. Das heisst, bei 9 LED´s, welche jeweils 20mA zum Leuchten brauchen, ergibt das Iv=9*20mA=180mA
    Die Spannung über den parallel geschalteten LED´s bleibt gleich, also ca. 2V
    Somit ergibt sich die Spannung über dem Vorwiderstand zu Uv=15V-2V=13V
    Rv=Uv/Iv=13V/180mA= 13V/0,18A=72 Ohm

  • Happy Birthday i2c :)

    • Andy
    • 18. April 2011 um 11:31

    Na, aber auch einen glücklichen Herzwunsch zum Geburtstag von mir!
    Lass es dir gutgehen!

  • GDI+ Diffusions Demo

    • Andy
    • 16. April 2011 um 23:09

    Fein^^
    Allerdings hat das nichts mit Diffusion zu tun, da fehlt die "Trennebene"(Membran) für den Ausgleich.
    Lass doch die Teilchen nur in den oberen Teil des Glases rutschen, der vom unteren durch eine Membran getrennt ist. (Deine waagrechte Linie wäre die Membran)
    Dann würden aus dem oberen Teil die Teilchen durch "Löcher" in den unteren Teil des Glases diffundieren.

  • Hex Code eines Programmes auslesen

    • Andy
    • 16. April 2011 um 13:47
    Zitat

    da man hier dann Doppeltsolange braucht übereinstimmungen zu finden


    Dann nochmal langsam,
    BINÄR=HEX=2 ZEICHEN PRO BYTE=LANGSAM

    BYTE=1 ZEICHEN= HALBE GRÖSSE= SCHNELL

    Oder willst du mir erzählen, dass man 100 MB Daten schneller durchsuchen kann als 50 MB?
    Weiterhin ist zumindest bei kurzen Suchstrings die Fehlermöglichkeit doppelt so hoch!
    Gesetzt den Fall, ich suche die 4 Bytes 0xAABBCCDD in einem (Binär)String mit 24 Bytes, also in 0x1A2B3C4D5AABBCCDD1234567, dann wird eine falsche Fundstelle gefunden!
    In dem String 0x1A 2B 3C 4D 5A AB BC CD D1 23 45 67 sind nämlich mitnichten die 4 Bytes AA BB CC DD enthalten!

    Lädt man aber die Bytes, dann erhält man den 12Byte langen String +<MZ«¼ÍÑ#Eg (entspricht 0x1A2B3C4D5AABBCCDD1234567)
    und in diesem werden die 4 Bytes ª»ÌÝ (entspricht 0xAABBCCDD) eben NICHT gefunden...
    Mal abgesehen davon, dass die Suche aufgrund "halber" Größe doppelt so schnell abläuft....

  • Berechnung der Nachkommastellen der Eulerschen Zahl

    • Andy
    • 15. April 2011 um 18:11
    Zitat

    Diese gibt als Ergebnis für z.B. 1/3! nicht 0.1666... sondern 0.16 zurück.

    Das liegt daran, dass in der Bignum.UDF die Anzahl der Dezimalstellen standardmässig mit 0 angesetzt ist....
    Wenn du

    [autoit]

    $ergebnis = _BigNum_Add($ergebnis, _BigNum_Div(1, _BigNumFak($i),1000))

    [/autoit]

    einsetzt, gibts reichlich (richtige) Nachkommastellen

  • Hex Code eines Programmes auslesen

    • Andy
    • 15. April 2011 um 18:01

    Das geht einfacher, lade deine Datei einfach mit fileread() (nicht binär)
    Dort kannst du dann mit StringInstr() schnell nach Übereinstimmungen suchen.
    Stringinstr() verarbeitet wie die meisten anderen Stringfunktionen auch Steuerzeichen und Nullbytes.
    Vorteil: doppelt so schnell, da nur halb so viele Daten wie bei HEX verglichen werden müssen....

  • Eine Frage zu Potentiometern

    • Andy
    • 14. April 2011 um 14:12
    Zitat

    Aber wenn man das Poti nur 1mm dreht, ist der Widerstand ja schon 50kOhm, oderso...

    kommt auf den poti an :D , da ist dann Suchen angesagt, ggf einen Widerstand parallel schalten...

    Zitat

    Wie würde das denn mit dem gepusten Signal funktionieren? Kann man sich sowas auch selber bauen
    mit ein paar Bauteilen?

    da gibts sogar fertige Bausteine, Erklärung hier auf der Seite bei PWM und hier http://www.led-treiber.de/html/lineare_t…tml#Poti-Dimmer

  • Eine Frage zu Potentiometern

    • Andy
    • 14. April 2011 um 12:04

    Hi,
    die (Vor)Widerstände begrenzen nur den Strom. Eine LED wird idR nicht über die Spannung, sondern über den Strom "gefahren".
    Je nach LED(Farbe) hat diese eine geknickte Kennlinie, das heisst, dort gilt das lineare ohmesche Gesetz NICHT!

    Vorwiderstandsbestimmung:
    Gehen wir mal von einer roten LED mit ULED=1,9V und ILED=20mA aus. Spannungsversorgung U=12V
    Dann addiert sich U=Uled+Uv(orwiderstand)=12V

    Uv=12V-1,9V =10,1V
    Der durch die LED fließende Strom ist auf 20mA zu begrenzen.
    Dann ist der Vorwiderstand Rv=Uv/ILED=10,1V/20mA=500 Ohm

    Willst du nun eine LED über den Strom "dimmen", dann musst du ihre Kennlinie sehr genau kennen, denn wie schon oben beschrieben, ist der Strom/Spannungsverlauf keineswegs linear mit der Helligkeit!
    LED´s werden daher idR per gepulstem Signal (z.B. Sägezahn) "gedimmt", quasi durch an- und ausschalten.

    Aber für ein "An und Ausschalten" per Poti braucht man nur die dementsprechende Einschaltspannung (und Strom) der LED, nehmen wir einfach mal an, mit 1,6V und 5 mA würde die LED schon schwach leuchten.
    Wie gesagt, der Strom/Spannungsverlauf bei einer LED ist NICHT linear!
    => ULED=1,6V ILED=5mA
    Vorwiderstand=500 Ohm Strom=5ma Spannung daher am Vorwiderstand 2,5V

    Vor dem Vorwiderstand wird ein Poti geschaltet:
    Rpoti=(12V-1,6V-2,5V)/5mA=1,6 KOhm

    Und jetzt kommts^^
    Gewählt wird ein Poti mit 100 Ohm(bis 1MOhm) und ein Vorwiderstand von 400 Ohm, dann ist bei völlig heruntergedrehtem Poti der Vorwiderstand+Poti=500 Ohm und die LED wird mit dem max. Strom von 20mA gefahren. Dreht man den Poti, erhöht sich der Widerstand, der Strom sinkt und somit auch die Helligkeit der LED.
    Ob der Poti linear, oder (a)logarithmisch ist, merkt man bei dieser Anwendung sowieso nicht.

  • Hardeware emulation

    • Andy
    • 12. April 2011 um 22:36

    Ja, die Fährte ist richtig^^
    Fehlen nur noch die rund 1800 Zeilen restlicher Code^^ :thumbup:

  • Hardeware emulation

    • Andy
    • 12. April 2011 um 20:49

    chip
    dann dürftest du nirgendwo mehr ein Küchenmesser zulassen, und Autos wären auch gegen das Gesetz, da man damit sehr einfach Leute umbringen kann....

    @Sortoc
    Ein Emulator ist eigendlich nichts weiter als ein "Übersetzungsprogramm". Es liest eine Codesequenz des zu emulierenden Programms ein und übersetzt diese in entsprechenden Code auf der ausführenden Maschine.
    Um den Emulator zu realisieren, muss man BEIDE Architekturen gut kennen :rolleyes:
    Die "Übersetzungstabelle" ist dabei das einfachste, schwierig wird ein universeller Parser, der den Code zeilenweise liest und auseinanderklabustert.
    Weiterhin muss die gesamte Peripherie des zu emulierenden Geräts/Architektur/Plattform bekannt sein. Incl. des Inhalts von ROM´s, der Funktion von I/O-Chips und deren Ports, Interrupts uswusf....

    Sagen wir mal so, wenn du ein GAMEBOY-Freak bist, der die Funktionsweise sämtlicher Innereien dieses Geräts im Schlaf vorwärts und rückwärts beten kann und für den ROM-Listings zur täglichen Lektüre gehören, dann wäre die Emulation dieses Geräts sicherlich eine Herausforderung....Vorausgesetzt, du hast genausoviel Ahnung von PC´s.
    Mal eben ein Buch lesen (oder zwei) reicht da nicht, da sind einige lange Nächte mit dem Lötkolben in der Hand sicher auch nicht falsch investiert.

    Ich habe vor einigen Jahrzehnten mal an einem i4004-Emulator (4-Bit-Prozessor für Taschenrechner) herumgewurstelt, der emulierte den 4004 auf einem 8088 bzw 80(2)86. Das war eine Heidenarbeit, nach ca. einem halben Jahr war das Ding sogar lauffähig, er konnte kleinere Programme ablaufen lassen. Der Vorteil war, dass fast alle (der ca. 40) Assemblerbefehle des 4004 recht einfach im 8086 nachzubilden waren^^. Der Takt des 4004 war ca. 500 KILOHertz :rofl: Ohne den Vater eines Freundes, der mir sowohl mit Hardware, als auch mit Infos weiterhelfen konnte wäre das alles nix geworden.
    Die ausgedruckten Listings des Emulators habe ich (wie so viele andere auch) jahrelang aufgehoben, bevor sie irgendwann im NUL-Device verschwunden sind....

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™