Python PyQt Minuterie Firmata
Question
Je suis assez nouveau à python et à travailler avec firmata je suis en train de jouer avec un arduino .
Voici ce que je veux:
- Ensemble arduino avec une LED digital out
Mettre le potentiomètre analogique 0
Jeu de PyQt minuterie de mise à jour potentiomètre de position dans
applicationDéfinir un seuil en PyQt à son tour DEL sur (Analogique en a 1 024 bits la résolution, donc, dis-800 comme l'
seuil)
Je me sers de ce firmata de la bibliothèque : Lien
Voici le code que j'ai de la difficulté avec:
import sys de PyQt4 import QtCore, QtGui de firmata importation *
# 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()
Je reçois le message d'erreur:
Traceback (most recent call last):Fichier "D:\Programming\Eclipse\IO Demo\src\control.py", la ligne 138, dans myapp = MainWindow() Fichier "D:\Programming\Eclipse\IO Demo\src\control.py", la ligne 56, dans init auto.appTimer.de l'événement(de soi.updateAppTimer()) Fichier "D:\Programming\Eclipse\IO Demo\src\control.py", la ligne 60, dans updateAppTimer auto.analogPosition = auto.un.analog_read(auto, 0) TypeError:analog_read() prend exactement 2 arguments (3)
Si je prends "moi", je reçois le même message d'erreur mais que seulement 1 argument est donné
Qu'est-ce que python faisant implicitement que je ne suis pas au courant?
Blockquote
La solution
Dans votre code 'a' est l'instance de classe, de sorte que toutes les méthodes, lié à elle, déjà auto pointeurs passés en premier params.Bienvenue à python, un jour vous le souhaitez :)
En contrepartie, vous pouvez appeler n'importe quelle méthode comme indépendant (et je suis sûr que vous le faites à chaque constructeur d'une classe dérivée).La syntaxe est:
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)
Autres conseils
L'auto n'a pas besoin d'être passé.Je n'ai aucune idée de pourquoi il a échoué la première fois, ou pourquoi l'autonomie est déjà inclus.