Sobald ich als Keyboard usb_plain eintrage, funktionieren beim ersten Start die Eingänge des PiFace nicht.
Falls ich DoorPi beenden kann (funktioniert nicht immer) und DoorPi neu starte funzt alles.
Im Log vom ersten Start, sehe ich eine Fehlermeldung vom PiFace.

piface/usb_plain Keyboard Bug
-
- Bug / Problem
- in Arbeit
- Wal
- Erledigt
-
-
Als Workaround habe ich im Keyboard from_piface.py die Fehlerstelle deaktiviert.
Codedef event_detect(self, event): if self.status_input(event.pin_num): self._fire_OnKeyDown(event.pin_num, __name__) if self._pressed_on_key_down: # issue 134 self._fire_OnKeyPressed(event.pin_num, __name__) # else: # self._fire_OnKeyUp(event.pin_num, __name__) # if not self._pressed_on_key_down: # issue 134 # self._fire_OnKeyPressed(event.pin_num, __name__)
-
Ich kann nicht nachvollziehen, warum bei Dir schon während des DoorPi Starts ein Event für PiFace erkannt wurde. Theoretisch sollte das nichts mit dem usb_plain zu tun haben.
Die Fehlermeldung ist jaCode
Alles anzeigenException in thread Thread-1: Traceback (most recent call last): File "/usr/lib/python2.7/threading.py", line 810, in __bootstrap_inner self.run() File "/usr/lib/python2.7/threading.py", line 763, in run self.__target(*self.__args, **self.__kwargs) File "/usr/lib/python2.7/dist-packages/pifacecommon/interrupts.py", line 341, in handle_events function(event) File "/usr/local/lib/python2.7/dist-packages/doorpi/keyboard/from_piface.py", line 67, in event_detect self._fire_OnKeyUp(event.pin_num, __name__) File "/usr/local/lib/python2.7/dist-packages/doorpi/keyboard/AbstractBaseClass.py", line 106, in _fire_OnKeyUp def _fire_OnKeyUp(self, pin, name): self._fire_EVENT('OnKeyUp', pin, name) File "/usr/local/lib/python2.7/dist-packages/doorpi/keyboard/AbstractBaseClass.py", line 101, in _fire_EVENT doorpi.DoorPi().keyboard.last_key = self.last_key = self.keyboard_name+'.'+str(pin) AttributeError: 'NoneType' object has no attribute 'last_key'
Das Attribut 'last_key' ist Bestandteil der Klasse KeyboardAbstractBaseClass und die ist Grundlage für die Klassen PiFace, UsbPlain und KeyboardHandler. Somit ist dieses Attribut zur Laufzeit auf jeden Fall für jede dieser Klassen (bzw. deren abgeleiteten Objekte) vorhanden. Aber wenn auf dieses Attribut _vor_ Abschluss der Objekt-Initialisierung zugegriffen werden soll, kann es zu dem Laufzeitfehler kommen.
Führt alles wieder darauf zurück - warum wird bei Dir ein Event vom PiFace InputEventListener gemeldet, bevor die Initialisierung des Objektes abgeschlossen ist?
Flattert oder prellt Dein PiFace Input oder sind andere Störungen, die dazu führen können?
Hast Du den RPi in der Hand oder liegt er auf einem leitenden Untergrund?
Ist das Problem auch, wenn alle Komponenten rund um den RPi entfernt sind (also nur Strom + PiFace)?
Ist das Problem auch, wenn Du andere Eingänge für den PiFace definierst? -
Nein, es flattert nicht's.
dieser Fehler tritt auch nur auf, wenn usb_plain geladen wird, sonst nicht.
Es sind keine weiteren Komponenten geladen und am PiFace ist nichts beschaltet.
Am RPI3 hängt nur die Spannungsversorgung und der Arduino. Nach Beenden und Neustart vom DoorPi, tritt der Fehler nicht mehr auf.
Der RPI ist in einem Gehäuse.
Habe mir einen neuen Workaround in der AbstractBaseClass.py erstellt und suche weiter.Code
Alles anzeigendef _fire_EVENT(self, event_name, pin, name): try: if self.keyboard_name == '': doorpi.DoorPi().keyboard.last_key = self.last_key = pin else: doorpi.DoorPi().keyboard.last_key = self.last_key = self.keyboard_name+'.'+str(pin) doorpi.DoorPi().event_handler(event_name, name, self.additional_info) doorpi.DoorPi().event_handler(event_name+'_'+str(pin), name, self.additional_info) doorpi.DoorPi().event_handler(event_name+'_'+self.keyboard_name+'.'+str(pin), name, self.additional_info) except: print "Error"
-
Am Arduino liegt es auch nicht, habe eine USB/Seriell Wandler anstatt dem Arduino eingestöpselt, der Fehler bleibt bestehen.
Wäre schön , wenn das jemand bestätigen könnte.
Als Hardware braucht man einen RPI3, Piface ,(Arduino oder USB/Seriell Wandler).
Nicht das mein Piface ne Macke hat, obwohl es funzt. -
Kannst du mal alle Input_pins aus der config entfernen und dann eine nach der anderen wieder aktivieren?
Und wenn der Fehler wieder auftritt, dann einfach mal mit anderen Pins versuchen? -
Das habe ich schon getestet, egal welchen Pin (0-7) ich aktiviere der Fehler kam.
-
Guten Morgen,
diesen Fehler habe ich auch.
Sobald ich in der doorpi.ini eintrage bei keyboards:
test = usb_plainneu starte
Und dann geht nichts mehr.
System: Raspi 2 mit piface
mfg
-
Guten Morgen,
diesen Fehler habe ich auch.
Dann Teste bitte die AbstractBaseClass.py mit test = usb_plain und gib bescheid.
-
Dann Teste bitte die AbstractBaseClass.py mit test = usb_plain und gib bescheid.
Versteh ich nicht !
Genau das hab ich doch eingegeben.
test = usb_plain
siehe post 8
-
Hast du meine AbstractBaseClass.py verwendet und das piface funktioniert trotzdem nicht ?
siehe Post 4
oder hier der Download Post 44 -
Hast du meine AbstractBaseClass.py verwendet und das piface funktioniert trotzdem nicht ?
Wenn ich diese nehme funktioniert das piface nicht mehr.vergleiche:
Nextion Display als interaktives Namensschildmfg
-
Ok, bei mir funktioniert funktioniert das PiFace mit der Orginalen nicht, aber mit meiner geht es wieder.
Da kann ich erst einmal nicht mehr helfen.