Python PyQt Timer Firmata
Domanda
Sono abbastanza nuovo a Python e lavorare con FIRMATA sto cercando di giocare con un Arduino.
Ecco quello che voglio che accada:
- Imposta Arduino con un LED come digital out
-
Imposta il potenziometro analogico 0
-
Imposta timer PyQt fino a aggiornare potenziometro di posizione in
applicazione -
impostare una soglia in PyQt a girare LED (Analogico a ha 1024bit risoluzione, così dicono 800 come il
soglia)
io sto usando questa libreria FIRMATA: collegamento
Ecco il codice che sto avendo problemi con:
import sys da PyQt4 importazione QtCore, QtGui da FIRMATA import *
# Arduino setup
self.a = Arduino('COM3')
self.a.pin_mode(13, firmata.OUTPUT)
# Create timer
self.appTimer = QtCore.QTimer(self)
self.appTimer.start(100)
self.appTimer.event(self.updateAppTimer())
def updateAppTimer(self):
self.analogPosition = self.a.analog_read(self, 0)
self.ui.lblPositionValue.setNum()
Sto ottenendo il messaggio di errore:
Traceback (chiamata più recente scorso): File "D: \ Programmazione \ Eclipse \ IO Demo \ src \ control.py", linea 138, in myapp = MainWindow () File "D: \ Programmazione \ Eclipse \ IO Demo \ src \ control.py", linea 56, in init self.appTimer.event (self.updateAppTimer ()) File "D: \ Programmazione \ Eclipse \ IO Demo \ src \ control.py", linea 60, in updateAppTimer self.analogPosition = self.a.analog_read (self, 0) TypeError: analog_read () batte esattamente 2 argomenti (3 data)
Se prendo 'sé' fuori ottengo lo stesso messaggio di errore, ma che è dato solo 1 argomento
Qual è python facendo implicitamente che io non sono a conoscenza?
Blockquote
Soluzione
Nel codice 'a' è l'istanza della classe, in modo che tutti i metodi, legati ad esso, hanno già Puntatori self passati come primi params. Benvenuti a python, un giorno ti piacerebbe:)
In contropartita, è possibile chiamare qualsiasi metodo come non legato (e sono sicuro di farlo in ogni costruttore di qualsiasi classe derivata). La sintassi è:
instance = Type()
#bound method.
instance.methodName(params)
#unbound method call, 'instance' is the instance of some object, pointer to witch
#you want to pass to method. These calls are similar.
Type.methodName(instance, params)
Altri suggerimenti
Auto non aveva bisogno di essere passato. Non ho idea perché non è riuscito per la prima volta, o perché Sé è già incluso.