Wenn ich ein Programm in Python ausführe, warum sollte ich den Bereinigungsbefehl verwenden, wenn ich die GPIOs verwende?

Kommentare

  • Als Randnotiz hat die mit C-Programmen verwendete wiringPi-Bibliothek keine Cleanup() -Funktion. Es scheint, dass die GPIO.cleanup() ist verfügbar, da die Python-Funktionalität ein Protokoll der Änderungen führt, um diese Änderungen zu bereinigen. Siehe raspberrypi.stackexchange.com/questions/44807/ …

Antwort

Wie in erwähnt Dieser Artikel RPi.GPIO-Grundlagen 3 – So beenden Sie GPIO-Programme sauber, vermeiden Warnungen und schützen Ihren Pi , korrekte Verwendung von GPIO.cleanup (),

Richtige Verwendung von GPIO.cleanup ()

RPi.GPIO bietet eine integrierte Funktion GPIO.cleanup () zum Bereinigen aller Ports, die Sie verwendet haben. Aber seien Sie sehr klar, was dies tut. Es nur af wirkt sich auf alle Ports aus, die Sie im aktuellen Programm eingestellt haben. Alle in diesem Programm verwendeten Ports werden auf den Eingabemodus zurückgesetzt. Dies verhindert Schäden beispielsweise durch Situationen, in denen Sie einen Port als Ausgang auf HIGH gesetzt haben und ihn versehentlich an GND (LOW) anschließen, wodurch der Port kurzgeschlossen und möglicherweise gebraten wird. Eingänge können entweder 0 V (LOW) oder 3,3 V (HIGH) verarbeiten, daher ist es sicherer, Ports als Eingänge zu belassen.

Ich hoffe, dies klärt Ihre Zweifel.

Antwort

Sie müssen die Bereinigungsmethode nicht verwenden.

Soweit mir nur bekannt ist Die Python-Module RPi.GPIO und RPIO.GPIO verfügen über eine Bereinigungsmethode. Die Bereinigungsmethode legt alle gpios fest, die Sie als Eingaben verwendet haben, und deaktiviert die internen Pull-Ups / Downs für diese gpios.

Mein pigpio Python-Modul verfügt weder über eine Bereinigungsmethode noch über das wiringPi2 Python-Modul Soweit mir bekannt ist.

Kommentare

  • Was ist dann der Zweck des Bereinigungsbefehls?
  • @Human I. ' glaube nicht, dass es einen großen Zweck gibt, ich ' hätte eine solche Methode hinzugefügt, wenn ich sie für nötig gehalten hätte. Dastaan hat in seiner Antwort auf die Argumentation des RPi.GPIO-Autors hingewiesen. Es mag eher eine philisophische Neigung sein, ich gehe davon aus, dass Benutzer einen Grund haben, das zu tun, was sie tun, oder ' nicht tun. Wenn sie ein GPIO nach Abschluss des Programms als Eingabe belassen möchten, sollten sie es als Eingabe festlegen.

Antwort

Bei der Verwendung von GPIO sind einige Probleme aufgetreten, hauptsächlich im Zusammenhang mit dem Versuch, Modi und Pin-Richtungen zu ändern, die bereits in einer früheren Sitzung festgelegt wurden. Wenn ich zum Beispiel manchmal ein Programm ausführe, das Pins für die Ausgabe setzt, und dann ein Programm, das dieselben Pins für die Eingabe setzt, ohne den Pi neu zu starten, erhalte ich eine Reihe von Warnungen (z. B. „RunTimeWarning: Dieser Kanal ist bereits vorhanden“ benutzen“). Dies ist besonders problematisch, wenn verschiedene GPIO-bezogene Funktionen von einem einzigen Programm aus aufgerufen werden, da das Programm manchmal abstürzt.

Wenn Sie den Bereinigungsbefehl entweder vor oder nach dem Ändern der GPIO-Einstellungen verwenden, werden die Warnungen entfernt und der Code kann reibungslos ausgeführt werden, ohne dass Warnungen zu GPIO-Einstellungen auftreten.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.