我对python很新,并且与firmata一起工作我正在尝试使用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隐含地做我不知道的?
块引用
答案 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)