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

  • Netztraffic mit WMI

    • Andy
    • 27. Januar 2015 um 22:05

    Probiert mal
    Win32_PerfFormattedData_Tcpip_NetworkInterface
    statt
    Win32_PerfFormattedData_Tcpip_NetworkAdapter


    @AspirinJunkie, dein System?

    Bei mir, Win7-64 Home edition, ist die WMI_CLASS Win32_PerfFormattedData_Tcpip_NetworkInterface, damit funktioniert dein Script und auch das des TE einwandfrei

    AutoIt Scriptomatic ftw :rock:

  • Netztraffic mit WMI

    • Andy
    • 27. Januar 2015 um 20:31

    @Raupi,
    Ganz ehrlich gesagt verstehe ich den Sinn dieser Websites nicht, ein Bit ist ein Bit und ein Byte ist ein Byte. Kilo ist 1000 und damit hat es sich!
    Wer rechnet Mega(Giga)Bytes in Bits um und umgekehrt?
    Und wo ist der Bus mit den Leuten drin die DAS interessiert?
    Irgendwelche Jungs mit zu wenig Ego und zu kurzem Bippes haben dem armen und genialen Leibnitz (1646-1716) in die Schuhe geschoben, dass 2^10 ein KILO ist! Leibnitz hat das aber imho nie gesagt! Übrigens wird auf der zzt. aktuellen Wikipedia-Website zum dualen Zahlensystem das Wort KILO nicht verwendet!
    Von daher...pffffff.... 8)

  • Netztraffic mit WMI

    • Andy
    • 27. Januar 2015 um 19:29

    8 / 7.8125 = 1.024
    damit wird direkt von bps in kBps umgerechnet

  • _ArrayDisplayConsole v0.92 build 2015-01-25 beta

    • Andy
    • 25. Januar 2015 um 23:06

    Sehr fein! :thumbup:

  • Screenshot Desktop Hintergrund

    • Andy
    • 25. Januar 2015 um 13:50

    zu 1+2: http://www.pctipps.de/wo-ist-das-aktuelle-hintergrundbild/

  • WinInet

    • Andy
    • 25. Januar 2015 um 13:42

    Genau, daher debugge dein Script selbst und poste hier die Lösung!
    Du bist nicht mal in der Lage, die Rückgaben deiner Funktionen abzufragen, geschweige denn die Inhalte deiner Variablen.
    Das ist hier ein Supportforum für Scripter und nicht für CopyPaster!
    Wenn du willst, dass dir jemand hilft, halte dich an die gängigen Konventionen und poste dein Script incl. sämttlicher erforderlicher Dateien!

  • Hardware Baukasten Tinkerforge

    • Andy
    • 25. Januar 2015 um 09:59
    Zitat von chrisatack

    Noch eine Frage.
    Warum ist das mit dem Blocken so?
    Es klappt eigentlich alles in den Events bis auf _ArrayDisplay() warum?


    Windows besteht eigentlich nur aus Events und Messages, für jeden Tastendruck, Mausbewegung, Fensteraktualisierung, Netzwerktätigkeit, für alles gibt es ein Event.
    Du hängst jetzt dein Event in diese Kette mit ein. Windows arbeitet nun pausenlos diese Kette ab und sobald eine Aktion registriert wird, wird sofort die entsprechende Funktion aufgerufen. Dabei ist es Windows herzlich egal, was in dieser Funktion passiert, denn die oberste Windows-Direktive lautet: "Jedes Fenster ist für seinen Inhalt selbst verantwortlich!".
    Die Funktion meldet lediglich ein "OK" beim Verlassen an den Event-Handler. Um die Systemstabilität bei nicht erfolgreich beendeten Funktionen zu gefährden, werden diese nach einer bestimmten Zeit aus der Kette "ausgehängt".
    Wenn du jetzt innerhalb der Funktion bspw. eine Messagebox oder das Arraydisplay aufrufst, bleibt der Ablauf hängen. Deine Funktion wird nicht mehr aufgerufen, da beim Beenden kein erfolgreiches "OK" registriert wurde. Für Windows ist das ein Fehler, die Funktion wird aus der Kette gelöscht! Wenn jetzt bspw. bei der Msgbox auf "Weiter" geklickt wird, passiert....nichts!
    Daher auch am Ende deiner Funktion Event() die Info FD_READ an den TCP-Handler, dass nun eine neue Nachricht empfangen werden kann!

  • Debugger einstellung

    • Andy
    • 24. Januar 2015 um 10:32

    schau mal in meine Signatur...

  • Hardware Baukasten Tinkerforge

    • Andy
    • 24. Januar 2015 um 07:43

    Hi,

    so funktioniert das jedenfalls bei mir

    Spoiler anzeigen
    [autoit]

    Global Const $FD_READ = 1
    Global Const $FD_WRITE = 2
    Global Const $FD_OOB = 4
    Global Const $FD_ACCEPT = 8
    Global Const $FD_CONNECT = 16
    Global Const $FD_CLOSE = 32
    Global $hWs2_32 = -1

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

    TCPStartup()
    $iListenSocket = TCPListen ( '127.0.0.1', 4222 )

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

    Do
    $iSocket = TCPAccept($iListenSocket)
    Until $iSocket <> -1
    TCPCloseSocket($iListenSocket)

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

    $__TCP_WINDOW = GUICreate("GUIRegisterMsg")
    $hWs2_32 = DllOpen( "Ws2_32.dll" )
    DllCall( $hWs2_32,"int", "WSAAsyncSelect", "uint", $iSocket, "hwnd", $__TCP_WINDOW, "uint", 0x0400, "int", $FD_READ )
    GUIRegisterMsg( 0x0400, "Event" )

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

    While 1
    Sleep(5)
    WEnd

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

    Func Event($hWnd, $iMsgID, $WParam, $LParam)
    $sDataBuff = TCPRecv($iSocket, 1024)
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $sDataBuff = ' & $sDataBuff & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    MsgBox(0,"",$sDataBuff,1)
    DllCall( $hWs2_32,"int", "WSAAsyncSelect", "uint", $iSocket, "hwnd", $__TCP_WINDOW, "uint", 0x0400, "int", $FD_READ )
    EndFunc

    [/autoit]


    Keinesfalls darfst du Events blocken!
    Schon die Msgbox mit einer Sekunde delay ist grenzwertig.
    Weiterhin wartet der Receiver natürlich nur auf READ-Events. Zzt. bekommt er nichts davon mit, dass bspw. der Sender die Verbindung beendet hat!
    Das ist die Hausaufgabe fürs Wochenende ;)

  • Hardware Baukasten Tinkerforge

    • Andy
    • 23. Januar 2015 um 19:29
    Zitat von chrisatack

    Anscheinend wird aber hier irgendwas anders gemacht als das Hauseigene TCP von Autoit

    Da wird nichts anders gemacht...
    https://msdn.microsoft.com/de-de/library/…6(v=vs.85).aspx bzw.
    https://msdn.microsoft.com/de-de/library/…0(v=vs.85).aspx
    meldet bspw. das FD_READ (also das "es-kann-jetzt-etwas-aus-dem-Puffer-gelesen-werden"-Event) an ein Dummy-Fenster.
    Daraufhin wird per TCPRecv der Puffer ausgelesen. Der Rest ist Array-Gedöns aufgrund des "Multi"-TCP-Ansatzes (mehrere gleichzeitige Verbindungen)
    Wenn du nur eine Verbindung "überwachen" willst, ist das in ~10 Zeilen erledigt.

  • PixelGetColor - 60 Pixel in 1.8 Sekunden?

    • Andy
    • 17. Januar 2015 um 23:01

    Hi,
    ich verarbeite Full-HD 32Bit-Bitmaps (1920 × 1080 Pixel = 2,07 Megapixel) in einer Handvoll Millisekunden...
    Um einzelne Pixel einzulesen, braucht ein Prozessor nur einige Takte.

    Zitat von .spyne

    Alles was ich tue, ist 64 Pixel auszulesen.
    Wieso dauert das 1,8 Sekunden?


    Weil dein Script besch***** ist!
    Ansonsten hättest du es doch gepostet.

    Zitat von .spyne

    Danke :0


    Gern geschehen....

  • Private Datensicherung

    • Andy
    • 15. Januar 2015 um 18:54

    Hi,
    ich habe, da Sicherungskopieneurotiker, alles doppelt und dreifach gespiegelt.
    D.H. alle Rechner im Netz sichern sich gegenseitig ihre Daten inkrementell in nur eine Richtung. Keine Backupsoftware, nur simples Filecopy. Wer einmal richtig Geld für eine professionelle Backuplösung ausgegeben hat und nach 10 Jahren kein Restore mehr machen konnte, weil die aktuelle Software die "alten" Backups nicht mehr einlesen konnte, speichert nur noch raw!
    Allerdings habe ich auch keine Terabytes an sicherungswürdigen Daten.
    Zusammen mit sämtlichen digitalisierten Schallplatten und Analogfotos der letzten 40 Jahre passt alles (zzt. noch) locker auf eine (externe) Terabyteplatte. Auf die externe Platte gesichert wird 1x in der Woche.
    Diese Platte liegt alternierend im Schließfach in der Bank, d.h. alle 3-4 Monate geht die Hausplatte ins Schließfach und die Bankplatte wird zur Hausplatte.

    Wer sich Gedanken über Sicherungskopien macht, sollte sich fragen, was im Fall von Rechnertotalverlust (Brand/Einbruch/Blitzschaden) passiert.
    Wer davor keine Angst hat, für den sind NAS die optimale Lösung!
    Im Schadensfall ist dann natürlich Sense! DAS ist der imho einzige Vorteil einer "Cloudlösung".

  • Achterrandom = 50

    • Andy
    • 15. Januar 2015 um 07:55
    Zitat von AspirinJunkie

    Die Zahlen sind zwar doof verteilt aber zufällig und in ihrer Summe immer 50:

    :D
    Die (ersten 2-3) Zahlen sind (meistens) zwar (innerhalb der mathematischen Grenzen) zufällig, aber doof verteilt und in ihrer Summe immer 50. Vier bis fünf Einsen sind nicht ungewöhnlich!

    Imho ist die Fragestellung bzw. die Anforderung schon gelinde gesagt fragwürdig!
    Wie AspirinJunkie in seinem Script deutlich gezeigt hat! (Ich denke, das war deine Absicht, du Fuchs :thumbup: )
    Man könnte mit minimalem Aufwand die Doppelten nicht zulassen, am Ergebnis würde sich nicht viel ändern!


    Zitat von ShitDown

    ...Script...Das müsste allerdings noch optimiert werden da dein Ergebnisraum zu groß ist.

    Der "Ergebnisraum" ist nicht zu groß, sondern aufgrund der Aufgabenstellung viel zu klein, s.o.


    @Alina, woher kommt diese Aufgabenstellung?

  • Hilfe mit Aufruf von dll Funktion(en)

    • Andy
    • 12. Januar 2015 um 21:37

    zeig mal bitte den AutoIt-Code der Funktionen
    trxPS
    trxEON_PS
    trxLoadRDS

    ggf. ist es nur ein typo...

  • Animiertes GIF in einzelne Frames splitten?

    • Andy
    • 12. Januar 2015 um 13:30

    Hier ist eine Funktion enthalten, um einzelne Frames zu erhalten
    http://www.autoitscript.com/forum/topic/96132-gif-animation/

  • Gefilterte Eingabe: InputFilter.au3 (1.1)

    • Andy
    • 11. Januar 2015 um 11:08
    Zitat von chesstiger

    Im Falle der Callback-Funktion könnte man das ganze Problem auf den Programmierer abwälzen,

    Dann wälz das ganze Problem doch auf den Programmierer ab! Sind doch schlimmstenfalls nur zusätzliche Parameter der Funktion!
    Eine schicke Fehlermeldung bzw. der Hinweis, was der Anwender falsch gemacht hat, bzw. was er besser anders machen sollte, edelt JEDE Anwendung und "separates the boys from the men". :thumbup:
    Dann bekommt der Anwender eine Info, mit der er etwas anfangen kann:
    Return "Hier muss eine gültige Handynummer im Format +49 6684 98765432 eingegeben werden."

  • Error Managment

    • Andy
    • 11. Januar 2015 um 10:55
    Zitat von nuts

    Naja "msgbox" hat imho in "includes" nichts verloren.


    Wer Lesen kann, ist klar im Vorteil, ich schrieb "im FEHLERFALL".
    Jetzt kommt der Einwand, mit @error doch sowieso nur Fehler abzufangen. FALSCH!
    @error gibt keinesfalls Fehlercodes zurück, sondern ausschließlich ( DAS ist der Punkt ! ) selbstdefinierte Zustandsflags des Programmcodes. Viel schlimmer noch, irgendwelche Fehlercodes der internen Funktionen.
    Und diese Flags abzufragen ist die Kunst.

    Ich löse das in AutoIt-Scripten so, dass in globalen Variablen der Funktions- und Modulname gesetzt wird. Wenn man das auf die Spitze treiben will, auch das Programmsegment innerhalb des Moduls/Funktion.
    Bei jedem Funktionseinsprung und innerhalb der Funktion werden diese Variablen entsprechend gesetzt.

    Spoiler anzeigen
    [autoit]


    ;includefile blablub.au3

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

    Func _Funktion_123(..., $Dateiname, ..);funktion
    $NAME_MODUL = "blablub.au3" ;modulname
    $NAME_FUNCTION = "_Funktion_123";funktionsname
    ..
    ..
    $NAME_SEGMENT = "Datei einlesen";segmentname
    $dateiinhalt = _FileREAD($Dateiname) ;eigene Funktion, mit FEHLERMELDUNG, nicht mit Errorcode!
    ..
    $NAME_SEGMENT = "Dateiinhalt auswerten";segmentname
    For ... To ...
    $bla_array = StringSplit(...)
    $blub_string &= StringMid($bla_array...)
    Next
    ..
    $NAME_SEGMENT = "Auswertung" ;segmentname
    While $wum
    If $wendelin Then
    $return = ...
    Else
    $return = ...
    EndIf
    WEnd

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

    Return $return ;rückgabe

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

    EndFunc ;==>_Funktion_123

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

    Func _Funktion_456(..., $Dateiname, ..);funktion
    $NAME_MODUL = "blablub.au3" ;modulname
    $NAME_FUNCTION = "_Funktion_456";funktionsname
    ..
    $NAME_SEGMENT = "abcde"
    ..
    $NAME_SEGMENT = "xyzuvw"
    ..
    EndFunc

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

    Func _Funktion_789(..., $Dateiname, ..);funktion
    $NAME_MODUL = "blablub.au3" ;modulname
    $NAME_FUNCTION = "_Funktion_789";funktionsname
    ..
    $NAME_SEGMENT = "abcde"
    ..
    $NAME_SEGMENT = "xyzuvw"
    ..
    EndFunc

    [/autoit]

    Hat den unermesslich großen Vorteil, dem ANWENDER eine Fehlermeldung in einer Msgbox präsentieren zu können:
    "Die Datei qwerty.txt kann nicht bearbeitet werden." Im unteren Teil der Msgbox steht dann:
    "Der Fehler /Die Datei qwerty.txt kann nicht geöffnet werden/ ist aufgetreten in Modul blablub.au3 in Funktion _Func_123() im Segment xxxxx. Funktionsparameter sind aaa,bbb,ccc,ddd ".

    Diese Infos kann der Anwender dem Programmierer dann am Telefon mitteilen. Mittlerweile handhabe ich es so, dass ich in der Firma im FEHLERFALL automatisiert eine e-mail mit dieser Beschreibung und vom Arbeitsplatz bzw. Anwender bekomme. Inclusive die letzten 50 Zeilen Logfile (von diesem Arbeitsplatz).

    DAS nenne ich Fehlermanagement, und nicht ein "Error 28 in Line 43841". Die der Anwender einfach nur wegklickt und dann 20 mal versucht, die Anwendung nochmal laufen zu lassen und entnervt anruft und "DEIN PROGRAMM FUNKTIONIERT NICHT" ins Telefon schreit!

    Und bzgl. MsgBox in Includes....geh mal ganz tief in dein Inneres und frag dich dann mal in welcher Form AutoIt einen FEHLER wirft!


    Letztendlich kommt es darauf an, dem Anwender eine Information zukommen zu lassen, mit der er die Möglichkeit hat zu entscheiden, was er weiter tun muss!
    Ich habe innerhalb eines Produktionsunternehmens u.a. ein selbstgeschriebenes, scannergestütztes Monitoring- und Ablauforganisationssystem eingeführt und vorgehabt, dieses mit AutoIt umzusetzen. Da stehen Mitarbeiter vor Maschinen und haben (Takt-)Zeitvorgaben von unter einer Minute. Das ist ein Unterschied zu einem Bürobetrieb, wo du nach der Anzeige einer "Fehlermeldung" erstmal einen Kaffee holen gehst und dann "nochmal probierst" ob sich der Fehler in Luft aufgelöst hast....
    Mittlerweile verwende ich AutoIt in der Firma NUR NOCH zur "Fernsteuerung" bestehender Branchensoftware, und das mit dem Hintergrund, dass imho das AutoIt-Errormanagemend (und nicht nur das ! ) für meine professionellen Zwecke unzureichend ist!

  • Gefilterte Eingabe: InputFilter.au3 (1.1)

    • Andy
    • 10. Januar 2015 um 22:33

    Sehr nice! :thumbup:

    Ich würde in den Balloon beim Fehlerfall noch die erlaubten, bzw unerlaubten Buchstaben anzeigen. "Es sind nur folgende Zeichen erlaubt: ABCDE" bzw. "Es sind folgende Zeichen nicht erlaubt: ABCDE"

  • StringRegExp und grosse Website Pages

    • Andy
    • 10. Januar 2015 um 22:09

    so?

    [autoit]


    #include <Array.au3>
    $file = "127.0.0.1" & @CRLF & "123.123.123.123:12345" & @CRLF
    $found = StringRegExp($file, "(?m)((?:\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})(?::(?:\d{1,5})|\s))", 3)
    _ArrayDisplay($found)

    [/autoit]
  • Hilfe mit Aufruf von dll Funktion(en)

    • Andy
    • 10. Januar 2015 um 21:43

    Hi,
    wenn die Funktionen trxPS und trxEON_PS funktionieren, dann ist auch deine Übergabe in Ordnung.
    Also könnte es direkt der Datei liegen. Hast du eine Referenzdatei die fehlerfrei arbeitet? Ggf. auch von einem anderen User. Das verwendete Dateiformat wäre dann natürlich auch noch hilfreich.
    Liegt die dll im Scriptverzeichnis?
    Hast du getestet, ob ggf. nur der Dateiname, ohne den Pfad bzw. der komplette Dateipfad verwendet wird?

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™