Når jeg kører et program i Python, hvorfor vil jeg så have oprydningskommandoen, når jeg bruger GPIOerne?
Kommentarer
Svar
Som nævnt i denne artikel Grundlæggende om RPi.GPIO 3 – Sådan afslutter du GPIO-programmer rent, undgår advarsler og beskytter din Pi , korrekt brug af GPIO.cleanup (),
Korrekt brug af GPIO.cleanup ()
RPi.GPIO giver en indbygget funktion GPIO.cleanup () til at rydde op i alle porte, du har brugt. Men vær meget klar over, hvad dette gør. Det er kun af rammer alle porte, du har indstillet i det aktuelle program. Det nulstiller alle porte, du har brugt i dette program, tilbage til inputtilstand. Dette forhindrer skader fra f.eks. En situation, hvor du har en port indstillet HIGH som output, og du ved et uheld forbinder den til GND (LOW), som ville kortslutte porten og muligvis stege den. Indgange kan håndtere enten 0V (LOW) eller 3.3V (HIGH), så det er sikrere at lade porte være som input.
Håber det rydder din tvivl.
Svar
Du behøver ikke bruge oprydningsmetoden.
Så vidt jeg kun ved RPi.GPIO og RPIO.GPIO Python-modulerne har en oprydningsmetode. Oprydningsmetoden indstiller alle de gpios, du har brugt til at være input, og deaktiverer de interne pull-ups / downs for disse gpios.
Mit pigpio Python-modul har ikke en oprydningsmetode, og heller ikke wiringPi2 Python-modulet så vidt jeg ved.
Kommentarer
- Hvad er formålet med oprydningskommandoen så?
- @Human I tror ikke ' der er meget af et formål, jeg ' d har tilføjet en sådan metode, hvis jeg troede, det var nødvendigt. dastaan i sit svar har peget på den begrundelse, der blev brugt af RPi.GPIO-forfatteren. Det kan være en mere filosofisk bøjning, jeg antager, at brugerne har en grund til at gøre, hvad de gør, eller ikke ' t gør. Hvis de vil efterlade en gpio som input, når programmet er færdigt, skal de indstille det som input.
Svar
Jeg har stødt på et par problemer med at bruge GPIO, hovedsageligt i forbindelse med forsøg på at ændre tilstande og pinretninger, der allerede er indstillet i en tidligere session. For eksempel, nogle gange hvis jeg kører et program, der indstiller stifter til output, og så kører jeg et program, der indstiller de samme stifter til input uden at genstarte pi, får jeg en masse advarsler (såsom “RunTimeWarning: Denne kanal er allerede i brug”). Dette er især problematisk, når du ringer til forskellige GPIO-relaterede funktioner fra et enkelt program, da programmet undertiden går ned.
Brug af oprydningskommandoen enten før eller efter ændring af GPIO-indstillinger slipper advarslerne og giver kode mulighed for at køre problemfrit uden at der opstår advarsler om GPIO-indstillinger.
Cleanup()
-funktion. det ser ud til, atGPIO.cleanup()
er tilgængelig, fordi python-funktionaliteten fører en log over ændringer for at rydde op i disse ændringer. Se raspberrypi.stackexchange.com/questions/44807/ …