Die WiringPi-Bibliothek, die mit C-Programmen verwendet wird, hat keine Cleanup()Funktion. Es scheint, dass das GPIO.cleanup()verfügbar ist, da die Python-Funktionalität ein Protokoll der Änderungen führt, um diese Änderungen zu bereinigen. Siehe raspberrypi.stackexchange.com/questions/44807/…
RPi.GPIO bietet eine integrierte Funktion GPIO.cleanup (), um alle von Ihnen verwendeten Ports zu bereinigen. Aber sei dir ganz klar, was dies bewirkt. Dies betrifft nur die Ports, die Sie im aktuellen Programm festgelegt haben. Alle in diesem Programm verwendeten Ports werden in den Eingabemodus zurückgesetzt. Dies verhindert beispielsweise Schäden, wenn Sie einen Port auf HIGH als Ausgang eingestellt haben und ihn versehentlich an GND (LOW) anschließen, wodurch der Port kurzgeschlossen und möglicherweise gebraten würde. Die Eingänge können entweder 0 V (LOW) oder 3,3 V (HIGH) verarbeiten, daher ist es sicherer, Ports als Eingänge zu belassen.
Sie müssen die Bereinigungsmethode nicht verwenden.
Soweit mir bekannt ist, verfügen nur die Python-Module RPi.GPIO und RPIO.GPIO über eine Bereinigungsmethode. Die Bereinigungsmethode setzt alle gpios, die Sie als Eingaben verwendet haben, und deaktiviert die internen Pullups / 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.
@Human Ich glaube nicht, dass es einen Sinn gibt. Ich hätte eine solche Methode hinzugefügt, wenn ich gedacht hätte, dass sie gebraucht wird. Dastaan hat in seiner Antwort auf die Argumentation des RPi.GPIO-Autors hingewiesen. Es mag eher philisophisch sein, ich gehe davon aus, dass Benutzer einen Grund haben, das zu tun, was sie tun oder nicht tun. Wenn sie ein gpio als Eingabe hinterlassen möchten, nachdem das Programm beendet ist, sollten sie es als Eingabe festlegen.
Joan
1
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 beispielsweise manchmal ein Programm ausführe, das die Pins für die Ausgabe festlegt, und dann ein Programm, das die gleichen Pins für die Eingabe festlegt, ohne den pi neu zu starten, erhalte ich eine Reihe von Warnungen (z. B. "RunTimeWarning: Dieser Kanal ist bereits in" verwenden"). 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 Befehl cleanup entweder vor oder nach dem Ändern der GPIO-Einstellungen verwenden, werden die Warnungen beseitigt, und der Code kann problemlos ausgeführt werden, ohne dass Warnungen zu GPIO-Einstellungen auftreten.
Cleanup()
Funktion. Es scheint, dass dasGPIO.cleanup()
verfügbar ist, da die Python-Funktionalität ein Protokoll der Änderungen führt, um diese Änderungen zu bereinigen. Siehe raspberrypi.stackexchange.com/questions/44807/…Antworten:
Wie in diesem Artikel erwähnt, RPi.GPIO-Grundlagen 3 - So beenden Sie GPIO-Programme sauber, vermeiden Warnungen und schützen Ihren Pi . Richtige Verwendung von GPIO.cleanup ().
Hoffe, es klärt deinen Zweifel.
quelle
Sie müssen die Bereinigungsmethode nicht verwenden.
Soweit mir bekannt ist, verfügen nur die Python-Module RPi.GPIO und RPIO.GPIO über eine Bereinigungsmethode. Die Bereinigungsmethode setzt alle gpios, die Sie als Eingaben verwendet haben, und deaktiviert die internen Pullups / 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.
quelle
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 beispielsweise manchmal ein Programm ausführe, das die Pins für die Ausgabe festlegt, und dann ein Programm, das die gleichen Pins für die Eingabe festlegt, ohne den pi neu zu starten, erhalte ich eine Reihe von Warnungen (z. B. "RunTimeWarning: Dieser Kanal ist bereits in" verwenden"). 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 Befehl cleanup entweder vor oder nach dem Ändern der GPIO-Einstellungen verwenden, werden die Warnungen beseitigt, und der Code kann problemlos ausgeführt werden, ohne dass Warnungen zu GPIO-Einstellungen auftreten.
quelle