Amikor egy programot Pythonban futtat, miért akarom a cleanup parancsot a GPIO-k használatakor?
Megjegyzések
Válasz
Mint említettük ez a cikk RPi.GPIO alapok 3 – Hogyan lehet tisztán kilépni a GPIO programokból, elkerülni a figyelmeztetéseket és védeni a Pi-t , a GPIO.cleanup () helyes használata,
A GPIO.cleanup () helyes használata
Az RPi.GPIO a GPIO.cleanup () beépített funkcióját biztosítja az összes használt portokat. De legyen nagyon világos, mit csinál ez. Csak af kijavítja az aktuális programban beállított összes portot. Az ebben a programban használt portokat visszaállítja beviteli módba. Ez megakadályozza a károkat mondjuk egy olyan helyzetben, amikor egy HIGH értékű portot állít be kimenetként, és véletlenül csatlakoztatja a GND (LOW) -hoz, ami rövidzárlatot okozna és esetleg megsütné. A bemenetek képesek 0 V (LOW) vagy 3,3 V (HIGH) kezelésére, ezért biztonságosabb a portokat bemenetként hagyni.
Remélem, hogy ez tisztázza kétségeit.
Válasz
Nem kell a takarítási módszert használni.
Csak annyi tudomásom szerint az RPi.GPIO és az RPIO.GPIO Python modulok tisztítási módszerrel rendelkeznek. A tisztítási módszer beállítja az összes gpios-t, amelyet korábban bevittként használt, és letiltja a belső pull-upokat / down-okat ezekhez a gpios-okhoz.
A pigpio Python modulom nem rendelkezik tisztítási módszerrel, és a wiringPi2 Python modul sem. tudtommal.
Megjegyzések
- Mi a célja akkor a cleanup parancsnak?
- @Human I don ' nem gondolom, hogy sok a célja, én ' d hozzáadtam egy ilyen módszert, ha úgy gondoltam, hogy szükség van rá. dastaan válaszában rámutatott az RPi.GPIO szerző által alkalmazott érvelésre. Lehet, hogy inkább filozófiai hajlításról van szó, feltételezem, hogy a felhasználóknak oka van arra, hogy azt tegyék, amit csinálnak, vagy nem tesznek ' t. Ha a program befejezése után be akarnak hagyni egy gpio-t bemenetként, be kell állítaniuk bemenetként.
Válasz
Néhány problémával szembesültem a GPIO használatával, elsősorban azzal, hogy megpróbáltam megváltoztatni az előző munkamenetben már beállított módokat és rögzíteni az irányokat. Például, ha futtatok egy programot, amely csapokat állít ki a kimenetre, majd futtatok egy programot, amely ugyanazokat a gombokat állítja be bemenetre anélkül, hogy a pi újraindulna, kapok egy csomó figyelmeztetést (például: “RunTimeWarning: Ez a csatorna már használat”). Ez különösen akkor problémás, ha a GPIO-val kapcsolatos különféle funkciókat egyetlen programból hívják meg, mivel néha a program összeomlik.
A cleanup parancs használata a GPIO beállításainak módosítása előtt vagy után megváltozik a figyelmeztetésektől, és lehetővé teszi a kód zökkenőmentes futtatását anélkül, hogy bármilyen GPIO-beállítással kapcsolatos figyelmeztetés történne.
Cleanup()
függvénnyel. Úgy tűnik, hogy aGPIO.cleanup()
azért érhető el, mert a python funkcionalitás naplót vezet a változásokról a változások megtisztítása érdekében. Lásd: raspberrypi.stackexchange.com/questions/44807/ …