DYP-ME007Y Version TX bzw. "serial" mit Python auslesen?

  • Hallo.


    Ich habe gegenwärtig Schwierigkeiten den US-Sonsor DYP-ME007Y in Betrieb zu nehmen. Ich bin mir 100%-sicher die TX-Version und nicht PWM-Version des Sensors zu besitzen.

    PWM oder Serial + weitere Informationen.


    Mir erscheint der von kaiserem verfasste Pyhton-Code (#19) mit der Abfrage des seriellen Ports (GPIO 15 RX) daher passend für meine Sensor. Leider habe ich keinerlei Erfahrung mit Python und meine algemeinen Programmierkenntnisse sind mitlerweile auch mehr als verstaubt.

    Beim Versuch den Code auszuführen, tauchen verschidene Fehler auf, die ein Einrücken (Tab/4Spaces) erfordern. Ich habe versucht die Logik nachzuvollziehen um passende "indent" zu setzen, aber nö...ich bekomme keinen ausführbaren Code zustande.


    Kann mir jemand helfen den Code zum Ausführen zu bringen?


    Die Verdrahtung erflogt nach folgendem Schaltplan, nur das der 470 Ohm Widerstand durch eine 10 KOhm Widerstand getauscht wurde und RX/Trig. nicht (auf GPIO 18) verschaltet wird.


    Ich habe IDLE zur Systax-Kontrolle verwendet und dies ist mein letzter Stand. Im #Abbruch sind immernoch indents abkömmlich, sagt IDLE:


    Ich bin für jeden Tipp dankbar.


    Viele Grüße.


    Yabow

    Einmal editiert, zuletzt von yabow ()

  • Ja, der Operator <> wurde ab Python3 durch != ersetzt. Ich verwende Python 2.7.13, sollte also noch funktionieren.

    Habe die Einrückungen ab Zeile 49 im Eingangspost korrigiert: Nun gibt es: 'break' outside loop line 38.
    Ich verstehen den Code einfach noch nocht zur Gänze und kann ihn entsprechend nicht richtig einrücken.

  • Aber schon damals sollte man != nehmen, steht doch in der Doku. Dass überhaupt noch jemand Python 2 verwendet, wundert mich, 3 hat so viele tolle Features dazu bekommen. Naja, bald ists eh vorbei mit Python zwei ;) https://pythonclock.org


    Ach ja: es ist genau wie es da steht: Du hast ein break außerhalb einer Schleife, das geht natürlich nicht. Egal ob Du den Code verstehst oder nicht, an die formale Syntax von Python musst Du Dich schon halten ;)


    Ich werde den Code nicht für dich einrücken, wenn du noch nicht einmal selbst den Algorithmus weißt... Versuchs halt mal mit Pseudocode.

  • Wie auch immer, die Python-Version ist default im gegenwertige Raspbian und weder die Version noch <> oder != sind Teil meiner Schwierigkeiten.

    Ich verstehe, dass man als ambitionierter Raspberry und/oder Pythonentwickler auf "best practice" und Dergleichen gesteigerten Wert legt. Aber mir geht es hier nur um die Sache an sich...ja "quick'n'dirty" und gefährliches Halbwissen - ist mir bewusst und hätte ich auch gene anders.

    Aber leider gibt es Situationen in denen es nicht anders geht.


    Ich habe in diesem Forum ein Stück Code gefunden, dass offenbar als funktionierend und für meine Fragestellung zielführend/passend erscheint.

    Der Code (#19) ist nicht ausführbar. Leider kann ich mir nicht selber helfen, da ich die Sprache nicht verstehe...daher bat ich hier um Hilfe.


    Falls sich dennoch ein anderes Mitglied dieses Forums erbamt mir, und eventuell Anderen in dieser Situation zu helfen, freue ich mich sehr.

    Ansonsten hat mich Hr. Pareto mit seinen 80%-Arbeitsanteil am Arsch ;-) 

  • Ich denke einfach daran, was mir hyle sagte. Versuch's mal damit:


    Im Grunde warst du schon ganz nah am Ziel, try und except müssen halt auf der selben ebene sein, das break eine Ebene weiter eingerückt als die Schleife, die es beenden soll.


    Da die äußere Schleife ja unendlich bis Ctrl+C gedrückt wird laufen soll, denke ich, dass (bei meinem Code-Schnipsel Zeile 10-16 eine Ebene weiter eingerückt werden sollen, als bei dir. Natürlich alles ungetestet.

  • Vielen Danke Linus. Der Code läuft!

    Macht zwar noch nicht was er soll, aber ich habe eine Arbeitsgrundlage um vorran zu kommen.

    Jetzt kann ich mir mit gezielten print()-Ausgaben wieder selber weiter helfen :-)
    Super.