Sử dụng một chức năng lớp như gọi lại


7

Tôi muốn đặt chức năng gọi lại để chạy khi có sự kiện xảy ra trong GPIO. Tôi đang thiết kế một lớp và tôi cũng muốn có phương thức gọi lại bên trong nó. Đây là một đoạn trích của mã:

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

Và đây là đầu ra của việc gọi nó (từ một tệp khác):

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

Tôi không chắc nó có thể là gì.

Câu trả lời:


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.