Domanda

Sono abbastanza nuovo a Python e lavorare con FIRMATA sto cercando di giocare con un Arduino.

Ecco quello che voglio che accada:

  • Imposta Arduino con un LED come digital out
  • Imposta il potenziometro analogico 0

  • Imposta timer PyQt fino a aggiornare potenziometro di posizione in
    applicazione

  • impostare una soglia in PyQt a girare LED (Analogico a ha 1024bit risoluzione, così dicono 800 come il
    soglia)

io sto usando questa libreria FIRMATA: collegamento

Ecco il codice che sto avendo problemi con:

import sys da PyQt4 importazione QtCore, QtGui da FIRMATA import *

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

Sto ottenendo il messaggio di errore:

  

Traceback (chiamata più recente scorso):     File "D: \ Programmazione \ Eclipse \ IO Demo \ src \ control.py", linea 138, in       myapp = MainWindow ()     File "D: \ Programmazione \ Eclipse \ IO Demo \ src \ control.py", linea 56, in init       self.appTimer.event (self.updateAppTimer ())     File "D: \ Programmazione \ Eclipse \ IO Demo \ src \ control.py", linea 60, in updateAppTimer       self.analogPosition = self.a.analog_read (self, 0)   TypeError: analog_read () batte esattamente 2 argomenti (3 data)

Se prendo 'sé' fuori ottengo lo stesso messaggio di errore, ma che è dato solo 1 argomento

Qual è python facendo implicitamente che io non sono a conoscenza?

  

Blockquote

È stato utile?

Soluzione

Nel codice 'a' è l'istanza della classe, in modo che tutti i metodi, legati ad esso, hanno già Puntatori self passati come primi params. Benvenuti a python, un giorno ti piacerebbe:)

In contropartita, è possibile chiamare qualsiasi metodo come non legato (e sono sicuro di farlo in ogni costruttore di qualsiasi classe derivata). La sintassi è:

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)

Altri suggerimenti

Auto non aveva bisogno di essere passato. Non ho idea perché non è riuscito per la prima volta, o perché Sé è già incluso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top