Verwenden einer Klassenfunktion als Rückruf


7

Ich möchte eine Rückruffunktion festlegen, die ausgeführt wird, wenn ein Ereignis in einem GPIO auftritt. Ich entwerfe eine Klasse und möchte auch die Rückrufmethode darin haben. Hier ist ein Auszug aus dem Code:

import RPi.GPIO as gpio

class WheelEncoder:
  'Encapsulates the attributes and methods to use a wheel encoder sensor'

  inputPin = 0
  ticks = 0

  def __init__(self, inputPin):
    self.inputPin = inputPin

    gpio.setmode(gpio.BOARD)
    gpio.setup(self.inputPin, gpio.IN, pull_up_down=gpio.PUD_UP)
    gpio.add_event_detect(self.inputPin, gpio.RISING, event_callback)

  def getTicks(self):
    return self.ticks

  def resetTicks(self):
    self.ticks = 0

  def event_callback(channel):
    self.ticks += 1

Und hier ist die Ausgabe des Aufrufs (aus einer anderen Datei):

Traceback (most recent call last):
  File "test-WheelEncoder.py", line 5, in <module>
    sensor = WheelEncoder(3, 10, 3)
  File "/home/pi/codes/sensors/WheelEncoder.py", line 20, in __init__
    gpio.add_event_detect(self.inputPin, gpio.RISING, event_callback)
NameError: global name 'event_callback' is not defined

Ich bin mir nicht sicher, was es sein könnte.

Antworten:


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.