Python PyQt Timer Firmata - PullRequest
       71

Python PyQt Timer Firmata

3 голосов
/ 26 марта 2010

Я довольно новичок в Python и работаю с фирмами. Я пытаюсь поиграть с Arduino.

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

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

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

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

Я использую эту фирмату: Ссылка

Вот код, с которым у меня проблемы:

import sys из PyQt4 импорт QtCore, QtGui от фирмы импорт *

 # 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 (последний вызов был последним): Файл "D: \ Programming \ Eclipse \ IO Demo \ src \ control.py", строка 138, в myapp = MainWindow () Файл "D: \ Programming \ Eclipse \ IO Demo \ src \ control.py", строка 56, в init self.appTimer.event (self.updateAppTimer ()) Файл "D: \ Programming \ Eclipse \ IO Demo \ src \ control.py", строка 60, в updateAppTimer self.analogPosition = self.a.analog_read (self, 0) Ошибка типа: analog_read () принимает ровно 2 аргумента (дано 3)

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

Что неявно делает python, чего я не знаю?

Blockquote

Ответы [ 2 ]

0 голосов
/ 26 марта 2010

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

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

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 голосов
/ 26 марта 2010

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

...