Interrupt

  • Morgen,


    Ich probiere während ich mir ein hochfrequentes PWM Signal generiere einen Interrupt einzufügen... Erstmal als KeyboardInterrupt... Besser wäre es später durch meine Oberfläche... Zuerst ist es allerdings wichtig überhaupt einen Interrupt zu haben..


    Das ganze passiert in folgender Funktion:



    Da kommt aber kein Interrupt... HAt jemand eine Idee wieso das so ist?? Der Pi ist auch sehr ausgelastet in dem Moment..


    MfG

    Rede wenig, rede wahr, trinke mäßig, zahle bar.:angel:

    Edited once, last by Kornfeld ().


  • Erstmal als KeyboardInterrupt... Besser wäre es später durch meine Oberfläche... Zuerst ist es allerdings wichtig überhaupt einen Interrupt zu haben..


    Ich glaube da kommt es zu einem Missverständnis.


    "try:" und "except" hat erst mal nicht zwingend etwas mit einem Interrupt zu tun. Normalerweise fängt man durch ein "try & except" Konstrukt ein Event ab wie zum Beispiel ein Fehler, oder in Deinem Fall das auslösen eines KeyboardInterrupts ( STRG + C ).
    Siehe dazu auch:
    https://docs.python.org/2/tutorial/errors.html
    https://docs.python.org/2/library/exceptions.html


    Quote


    exception KeyboardInterrupt
    Raised when the user hits the interrupt key (normally Control-C or Delete). During execution, a check for interrupts is made regularly. Interrupts typed when a built-in function input() or raw_input() is waiting for input also raise this exception. The exception inherits from BaseException so as to not be accidentally caught by code that catches Exception and thus prevent the interpreter from exiting.


    Die while " durch meine Oberfläche " zu unterbrechen solltest du also nicht durch solch ein "try & except" Interrupt unterbrechen, das wäre ziemlich dirty und so nicht vorgesehen. Besser wäre es wenn du entweder durch verändern der while Bedingung diese unterbrichst, oder zum Beispiel durch ein signal_handler ... Siehe dazu: FAQ --> Nützliche Links / Linksammlung --> python: Script sauber/sanft beenden


    Demzufolge wäre auch fraglich ob es in Deinem Fall sinnvoll ist die while dadurch zu beenden indem es durch ein "try except" umschlossen wird... Sicherlich ist das so wie mobby zeigte möglich und durch aus auch üblich, was aber nicht bedeutet das es immer Sinnvoll ist :fies:




    PS: Tu dir selbst ein Gefallen und benenne deine Variablen vernünftig, nicht sowas wie Freigabe1, FFreigabe1 ; FSchr12, FSchr13, FSchr14, FSchr21, FSchr22.... Und nutze anstatt TAB oder 8 Leerzeichen lieber die Standard 4 Leerzeichen. Und am aller besten wärs wenn du Python3 statt Python2 verwendest, da das "echter" ist aber vor allem auch schneller.

  • @meigrafd:


    Ich stimme dir vollkommen zu, dass es bei weitem bessere und schönere Wege gibt ein Python Program zu beenden. Mein Vorschlag war quick and dirty darauf ausgerichtet die Frage im Beispiel zu beantwerten.


    Quote

    Erstmal als KeyboardInterrupt...