2010-03-25 3 views
3

Я довольно новичок в python и работаю с фирмой. Я пытаюсь поиграть с ардуино.Python PyQt Timer Firmata

Вот что я хочу, чтобы это произошло:

  • Набор Arduino с светодиодом как цифровой выход
  • Установить потенциометр на аналоговый 0

  • Набор PyQt таймер до обновления положение потенциометра в
    применение

  • Установите порог в PyQt, чтобы включить светодиод (Analog в имеет разрешение 1024bit , так сказать, 800 как порог
    )

Я использую эту firmata библиотеку: Link

Вот код что у меня возникли проблемы с:

импорт SYS из PyQt4 импорта QtCore, QtGui из firmata импорта *

# 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() 

Я получаю сообщение об ошибке:

Traceback (most recent call last): File "D:\Programming\Eclipse\IO Demo\src\control.py", line 138, in myapp = MainWindow() File "D:\Programming\Eclipse\IO Demo\src\control.py", line 56, in init self.appTimer.event(self.updateAppTimer()) File "D:\Programming\Eclipse\IO Demo\src\control.py", line 60, in updateAppTimer self.analogPosition = self.a.analog_read(self, 0) TypeError: analog_read() takes exactly 2 arguments (3 given)

Если я «себя», что я получаю то же сообщение об ошибке, но это только один аргумент дается

Что питон делает неявно, что я я не знаю?

Blockquote

ответ

0

В вашем коде 'a' есть экземпляр класса, поэтому все методы, привязанные к нему, уже имеют собственные указатели, переданные в качестве первых параметров. Добро пожаловать в python, когда-нибудь вам понравится :)

В любом случае вы можете вызывать любой метод как unbound (и я уверен, что вы делаете это в каждом конструкторе любого производного класса). Синтаксис:

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) 
+0

Спасибо за ваш вклад –

0

Самостоятельно не нужно передавать. Я не знаю, почему это не удалось в первый раз, или почему я уже включен.