GPIO output an GPIO Input anschließen

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!
  • Guten Tag euch,

    Ich habe das Problem, dass ich ein Python Programm habe das nur in Python 2 Funktioniert und eins welches nur in Python 3 läuft.

    Mit Möglichkeiten aus einem 3er Programm das 2er Programm auf zu rufen und zu starten ist es immer wieder zu Fehlern gekommen. Deshalb dachte ich mir das ich mit dem GPIO Pins die zwei Programme kommunizieren lasse, also P2 verarbeitet die Daten und gibt die Signale vom GPIO Output an einen direkt mit dem Pin verbundenen GPIO Input, welcher vom P3 Programm erfasst wird.


    Zur Vereinfachung und zum ausprobieren habe ich das Programm dan auf diese Grundelemente heruntergebrachten:


    P2 - Code: P3 - Code:

    try: try:

    while True: while True:

    GPIO.output(19, True). if GPIO.input(26) == True:

    except KeyboardInterrupt: print(„Yes“)

    GPIO.cleanup() else:

    print(„No“)

    except KeyboardInterrupt:

    GPIO.cleanup()

    Soweit der Plan.

    Aber jetzt ist meine Frage ob das überhaupt möglich ist einen GPIO Output, direkt an einen GPIO Input an zu schließen, den bis jetzt habe ich es noch nicht geschafft das so zu bewerkstelligen.

    Eine andere Möglichkeit wäre noch das ganze mittels eines Transistors zu realisieren.


    Hat vielleicht jemand eine Idee warum das nicht Funktioniert oder weiß wie ich das realisieren könnte ?

  • Hat vielleicht jemand eine Idee warum das nicht Funktioniert oder weiß wie ich das realisieren könnte ?

    Ganz einfach - du portierst das Python 2 Programm zu Python 3 (mit 2to3 sollte das ja flink gehen), denn für ersteres ist in 381 Tagen eh Schicht im Schacht.


    Des weiteren realisiert man so eine IPC besser über einen Socket oder eine Pipe - nicht über die GPIO:shy:.

  • Hallo,


    Quote

    Ich habe das Problem, dass ich ein Python Programm habe das nur in Python 2 Funktioniert und eins welches nur in Python 3 läuft.

    Mal so rein Interesse halber: was läuft denn Ende 2018 nur auf Python 2 und nicht auf Python 3?


    Zum Problem: das über GPIO zu machen ist so ziemlich der komplizierteste Weg... Neben den genannten Möglichkeiten ginge auch noch RPC, ein REST-API, ein Pub-Sub System, ...


    Gruß, noisefloor

  • Das Programm ist für einen RFID Scanner.

    Mein Problem ist das unter Python 3 es eine Fehlermeldung gibt mit: no module named SPI (unter P2 kommt das nicht da funktioniert alles einwandfrei)

    Und in ein paar Foren habe ich gelesen das SPI Probleme mit SPI hat.


    Vielleicht wisst ihr da aber auch etwas genaueres.


    Da ich noch recht am Anfang stehe, wie würden ich die oben genannten Möglichkeiten wie z.B. 2to3 den realisieren ?

  • Hallo,


    zeigt mal bitte das _genau_ import Statement.


    Wenn hast du das Modul für Python 3 überhaupt installiert? Das muss man _separat_ machen, Python 3 sieht P2 Module nicht und umgekehrt.


    Ansonsten gibt es das Modul `spidev` für Python 2 und Python 3. AFAIK ist spidev ziemlich gängig, wenn es um Python und SPI Kommunikation geht.


    Gruß, noisefloor

  • Hier ist der Code und die Fehlermeldung:

    Unteres Bild

    Und im oberen Bild ist der Import vom in der Shell gemeinten MFRC522 Programm, welches für meinen Scanner benötigt wird.

  • Wie würde ich das den separat nochmal für Python 3 Installieren, also was müsste ich anders machen.

  • Hallo,


    wie hast du es denn für Python installiert? Paketquellen? pip? Wenn Paketquellen: P3 Pakete haben in der Regel das `python3-` Präfix. Wenn pip: pip3 install xxx installiert für P3.


    Hast du das Programm selber geschrieben? Wenn ja solltest du die Installation locker hinbekommen. Wenn nein bist du jetzt halt an die Grenze gestoßen, wo Copy&Paste gepaart mit der Hoffnung, dass es fehlerfrei läuft, am Limit ist.


    Gruß, noisefloor

  • Danke auf jeden Fall für eure Unterstützung.

    Also ich habe es mit pip installiert.

    Ich werde es auf jeden Fall nochmal Probieren.

    Ich habe das Programm auch nicht selber geschrieben, verstehe es aber soweit.

    Naja die Hoffnung stirbt zuletzt.

  • Hallo,


    bei mir läuft SPI unter Python 3 tadellos.


    Hab es installiert mit: "sudo apt-get install phyton3 spidev"


    Bei Netzmafia gibt es aber eine gute Anleitung dazu.


    Dann muss natürlich auch "import spidev" im Python 3 Programm stehen.


    Hier das Testprogramm meiner 7 Segmentanzeige.



    Viele Grüße

    Thotaa

  • Hallo,


    wobei soidev ja nicht die direkt Lösung des Problems ist. Ja, spidev ist das aktuelle Modul und nein, spidev kann das spi-Modul nicht 1:1 ersetzen. Im Sinne von, dass man nur das import-Statement ändern muss.


    Wahrscheinlich bekommt man das Skript des TE mit spidev zum laufen, WENN man die Zeit, Muße und Python-Kenntnis hat, das Skript passende für spidev umzuschreiben.


    Girni: wenn du das Skript verstehst, ist das ja schon mal ein guter Ausgangspunkt, um das Skript an spidev und Python 3 anzupassen


    Gruß, noisefloor

  • Also ich wollte euch nur kurz mitteilen, dass uch jetzt eine Lösung für mein Problem gefunden habe.

    Hier ist eine Seite und mit diesem Tutorial hat es bei mir super Funktioniert.

    LG und hoffe somit anderen helfen zu können.