Python PyQt计时器Firmata

时间:2010-03-25 21:55:59

标签: python pyqt arduino firmata

我对python很新,并且与firmata一起工作我正在尝试使用arduino。

以下是我想要发生的事情:

  • 用一个LED设置arduino 数字输出
  • 将电位计设为模拟0

  • 将PyQt计时器设置为更新 电位器位置 应用

  • 在PyQt中设置一个阈值来转 LED亮(模拟输入有1024位 决议,所以说800作为 阈值)

我正在使用这个firmata库: Link

以下是我遇到问题的代码:

导入系统 来自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()

我收到错误消息:

  

追踪(最近一次通话):     文件“D:\ Programming \ Eclipse \ IO Demo \ src \ control.py”,第138行,in       myapp = MainWindow()     文件“D:\ Programming \ Eclipse \ IO Demo \ src \ control.py”,第56行, init       self.appTimer.event(self.updateAppTimer())     在updateAppTimer中输入文件“D:\ Programming \ Eclipse \ IO Demo \ src \ control.py”,第60行       self.analogPosition = self.a.analog_read(self,0)   TypeError:analog_read()只需要2个参数(给定3个)

如果我将'self'取出,我会收到相同的错误消息,但只给出了一个参数

什么是python隐含地做我不知道的?

  

块引用

2 个答案:

答案 0 :(得分:0)

自我不需要通过。我不知道为什么它第一次失败,或为什么已经包括自我。

答案 1 :(得分:0)

在你的代码中'a'是类实例,所以绑定到它的所有方法都已经将自指针作为第一个参数传递。 欢迎来到python,总有一天你会喜欢它:)

相反,你可以将任何方法称为未绑定(我确信你在任何派生类的每个构造函数中都这样做)。语法是:

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)