När du kör ett program i Python, varför skulle jag vilja ha rensningskommandot när jag använder GPIO? s?

Kommentarer

  • Som en sidoanteckning har lednings-Pi-biblioteket som används med C-program ingen Cleanup() -funktion. Det verkar som att GPIO.cleanup() är tillgänglig eftersom pythonfunktionaliteten håller en logg över ändringar för att rensa upp dessa ändringar. Se raspberrypi.stackexchange.com/questions/44807/ …

Svar

Som nämnts i den här artikeln Grundläggande om RPi.GPIO 3 – Hur man avslutar GPIO-program rent, undvik varningar och skyddar din Pi , korrekt användning av GPIO.cleanup (),

Korrekt användning av GPIO.cleanup ()

RPi.GPIO ger en inbyggd funktion GPIO.cleanup () för att städa upp alla portar du har använt. Men var mycket tydlig vad det här gör. Det är bara en påverkar alla portar du har ställt in i det aktuella programmet. Den återställer alla portar som du har använt i det här programmet till inmatningsläge. Detta förhindrar skador från, till exempel, en situation där du har en port inställd HÖG som utgång och du av misstag ansluter den till GND (LOW), vilket skulle kortsluta porten och eventuellt steka den. Ingångar kan hantera antingen 0V (LOW) eller 3.3V (HIGH), så det är säkrare att lämna portar som ingångar.

Hoppas att det rensar ditt tvivel.

Svar

Du behöver inte använda saneringsmetoden.

Såvitt jag bara känner till RPi.GPIO och RPIO.GPIO Python-modulerna har en saneringsmetod. Rensningsmetoden ställer in alla gpios som du har använt för att vara ingångar och inaktiverar de interna pull-ups / downs för dessa gpios.

Min pigpio Python-modul har ingen rensningsmetod, och inte heller kablingen Pi2 Python-modulen så vitt jag vet.

Kommentarer

  • Vad är syftet med rensningskommandot då?
  • @Human I don ' t tror att det finns mycket av ett syfte, jag ' d har lagt till en sådan metod om jag trodde att det behövdes. dastaan i sitt svar har pekat på resonemanget som används av RPi.GPIO-författaren. Det kan vara mer en filosofisk böjning, jag antar att användare har en anledning att göra vad de gör eller inte ' t gör. Om de vill lämna en gpio som en ingång när programmet är klart ska de ställa in det som en ingång.

Svar

Jag har stött på några problem med GPIO, främst relaterat till att försöka ändra lägen och sätta riktningar som redan har ställts in i en tidigare session. Till exempel, ibland om jag kör ett program som ställer in stift till utdata och sedan kör jag ett program som ställer in samma stift för ingång utan att starta om pi, får jag en massa varningar (som ”RunTimeWarning: Den här kanalen är redan i använda sig av”). Detta är särskilt problematiskt när man ringer till olika GPIO-relaterade funktioner från ett enda program, eftersom programmet ibland kraschar.

Med hjälp av rensningskommandot antingen före eller efter ändring av GPIO-inställningar avskaffas varningarna och låter koden gå smidigt utan att några GPIO-inställningsvarningar uppstår.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *