Hallo,
ich habe hier ein offenbar generelles Problem mit dem PiFace und dessen Initialisierung.
Folgender Fehler erscheint gelegentlich welcher dann zum Abbruch des python-Scripts führt:
ZitatAlles anzeigenTraceback (most recent call last):
File "../home/pi/script.py", line 405, in <module>
File "/usr/lib/python2.7/dist-packages/pifacedigitalio/core.py", line 162, in init
File "/usr/lib/python2.7/dist-packages/pifacedigitalio/core.py", line 53, in __init__
File "/usr/lib/python2.7/dist-packages/pifacecommon/mcp23s17.py", line 91, in __init__
File "/usr/lib/python2.7/dist-packages/pifacecommon/spi.py", line 32, in __init__
File "/usr/lib/python2.7/dist-packages/pifacecommon/spi.py", line 44, in open_fd
pifacecommon.spi.SPIInitError: I can't see /dev/spidev0.0. Have you enabled the SPI module? (http://piface.github.io/pifacecommon/i…-the-spi-module)
Die Meldung bzgl. Zeile 405 bezieht sich auf das "pfio.init()" innerhalb der while-Schleife. Hier der entsprechende Auszug vom Script:
if __name__ == "__main__":
pfio.init()
pfd = pfio.PiFaceDigital()
pfd.leds[0].turn_off()
pfd.leds[1].turn_off()
while(True):
sleep(0.1)
if pfd.input_pins[4].value == 1:
if pfd.input_pins[0].value == 1:
IN_0 = 1
else:
IN_0 = 0
if pfd.input_pins[1].value == 1:
IN_1 = 1
else:
IN_1 = 0
if pfd.input_pins[2].value == 1:
IN_2 = 1
else:
IN_2 = 0
if pfd.input_pins[3].value == 1:
IN_3 = 1
else:
IN_3 = 0
if pfd.input_pins[4].value == 1:
IN_4 = 1
else:
IN_4 = 0
Trigger = str(IN_0) + str(IN_1) + str(IN_2) + str(IN_3) + str(IN_4)
sleep(0.1)
subProg(Trigger)
sleep(0.5)
pfio.init()
sleep(0.5)
Alles anzeigen
Das Script prüft alle 100ms ob Eingang 4 anliegt, ist dies der Fall werden alle Eingänge abgefragt und entsprechend dann das supProgramm für die eigentliche Arbeit aufgerufen. Abschließend erfolgt das betreffende Init des PiFace. Grund dafür ist dass gelegentlich Eingänge hängenbleiben, sprich, Eingang auf High (=Status 1) und nimmt man den Eingang wieder auf Low blieb, ohne das erneute init, der Status gelegentlich auf 1 statt auf 0 zu wechseln - fatal bei einer SPS-Steuerung.
Das Script arbeitet grundsätzlich tadellos nur dass gelegentlich (1-2mal täglich) der Abbruch des Scripts an besagter Stelle erfolgt. Bislang wird mittels "nohub"-Befehl in einem Shellscript das py-Script wieder neu gestartet wenn es abbricht - nicht schön aber mein derzeitiger work-around.
Hat jemand eine Idee wie der Fehler zu beheben wäre?
Wie gesagt, grundsätzlich funktioniert es, das Script samt Initialisierung läuft mehrmals die Stunde sauber durch... nur gelegentlich kommt der Abbruch.
---
Raspberry Pi B Rev.2 (512MB) mit Raspbian und PiFace