Blue Screen nach beenden des Scrips

  • Hallo Leute,

    Ich habe folgendes Script, nach dem beenden bekomme ich auf jedem rechner einen Bluescreen, hat da jemand evtl eine Idee?

    Als Anhang noch die UDF für den Com Anschluss.....

    Danke schon mal für eure hilfe

    Rene

    3 Mal editiert, zuletzt von Rene_RNI (12. April 2012 um 03:05)

  • Hallo Rene_RNI,

    in der Hoffnung dass du ein eigenes Spiel ansteuerst folgender Tipp: der Fehler liegt warscheins in der UDF bzw. der dort angesprochenen DLL. Hast du ein 64-Bitsystem?

    mfg autoBert

  • Hallo Autobert,

    das war auch meine Vermutung, aber ich habe es unter beidem versucht, Unter W2k8(64bit) und unter WinXP(32bit), bei beidem der gleiche fehler.

  • Das Einzige, was mir auffällt ist, dass Du keine Abbruchbedingung für die While Schleife hast. Dadurch wird die Funktion _CloseCOMPort nie ausgeführt. Und in dieser wird eben auch am Schluss die Kernel32.dll wieder geschlossen......

    Aber abgesehen davon: Ich konnte mit Deinem Script auf keinem Rechner hier (XP x86 / XP x64 / W7x86 / W7x64 / Server 2008 R2) einen Bluescreen provozieren. - Weder wenn ich die von Dir angehängte (etwas ältere) UDF verwende, noch wenn ich meine eigene (etwas erweiterte) verwende.

    Ich habe aber auch keine Textfile aus denen er etwas lesen könnte.
    Wenn Du die Textfiles noch anhängst, kann ich es mal mit diesen laufen lassen. Aber ich denke, dass wird auch klappen.....

    Edit
    Was ich mir noch vorstellen könnte ist, dass die Karte etwas an den PC zurücksendet. Und ich habe schon Geräte erlebt, welche ganz vermurkste Kommandos senden können, welche den PC zum Absturz bringen. Das waren dann aber Kommandos, die zum PC HINEIN kommen!

  • Hallo, gier die Dateien die gelesen werden,

    kannst mir ja wenn du willst mal deine UDF rein hängen, dann probier ich das mal

    Wie mach ich das am besten, dass ich die schleife beende??

    Ich habe noch ein anderes Problem, vieleicht kannst du mir da auch helfen

    Ich habe auch den zustand 2 und 3 in den files, bei diesen soll das Relais (blinken)

    Das blinken an sich kann ich mit einer while schleife oder mit einer Do schleifen machen, blos wie schaffe ich es dass das Script nicht in der Schleife gesthängt und die anderen Dateien weiter bearbeitet.

    Gruß Rene

  • Hi Fliwatt, das liegt warscheinlich daran, dass du keinen Com3 hast, der sagt dass er den Port nicht öffnen kann

  • Auch mit den Dateien hier kein Bluescreen. Funktioniert wie designt!
    Das mit dem Blinken:
    Wenn Du den entsprechenden "Blinkbefehl" erhältst, dann setze ein Flag (Variable: $fBlink1s = True)
    Und in deiner Hauptschleife frage jeweils immer das Flag ab. Wenn es auf True steht und seit der letzten Abfrage (Timer setzen!) mindestens die Blinkzeit vergangen ist, dann kannst Du den Status der LED "toggeln"!

    Ich programmiere Dir das nun extra nicht pfannenfertig, da dies einfach ist und eine gute Übung darstellt.

  • Danke Veronesi, das verstehe ich jetzt nicht ganz wie du das meinst,
    also die Variable (Flag) setzen ist klar, in der Hauptschleiche abfragen ist auch klar, aber wie geht das toggle´n ohne in der schleife hängen zu bleiben...

  • zusätzlich noch die frage, wie beende ich das script richtig, so dass auch der comport geschlossen wird??? ich hab da nix dazu gefunden...

    Danke schon mal

  • Hallo,

    in der UDF befindet sich folgende Funktion:

    [autoit]


    ;====================================================================================
    ; Function Name: _CloseCOMPort($CommSerialPort)
    ; Description: Closes serial port
    ; Parameters: $CommSerialPort - value returned by _OpenComm
    ; Returns: on success, returns 1
    ; on failure returns -1 and sets @error to 1
    ; Note:
    ;====================================================================================
    Func _CloseCOMPort($CommSerialPort)
    Local $closeerr = DllCall($commDll, "int", "CloseHandle", "hwnd", $CommSerialPort)
    DllClose($commDll)
    If @error Then Return SetError(1, 1, -1)
    Return ($closeerr[0])
    EndFunc ;==>_CloseCOMPort

    [/autoit]

    Gruß stay

  • Hi stayawayknight,

    das ist mir klar, die habe ich auch im script ganz ans ende gebaut, aber wie sage ich dem Script das er das auch machen soll wenn es einfach beendet wird.

  • Anscheinend bin ich da zu doof dafür

    habe an anfang des scripts

    Code
    OnAutoItExitRegister("Ende")


    das hier, und am ende des Scripts

    Code
    Func Ende()
        MsgBox(64, "Exit Ergebnis 1", 'Exit Nachricht von MyTestFunc()')
    	FileClose($DF0)
    	FileClose($DF1)
    	_CloseCOMPort($SendPort)
    EndFunc

    das hier, da ist aber irgend etwas falsch oder, denn es geht nicht

  • Also gut, nun habe ich das Blinken eingebaut, aber irgendwie habe ich da einen fehler,
    sobald ich pauf Player A (DF0.txt) den wert 2 habe, wird DF1 nicht mehr bearbeitet.

    Wie könnte ich das lösen??

    hat jemand eine idee??

    hier mein script: