我目前正在使用Pi和Python开展项目。我在Java和C#中编写了更多代码,在从继承的类调用时,我无法调用父类的start方法。
这是我的主要文件:
import picamera
import time
import ConfigParser
import os
import RPi.GPIO as GPIO
from multiprocessing import Process
from datatrack import DataTracker
from datatrack import CameraTracker
camera = picamera.PiCamera()
config = ConfigParser.ConfigParser()
config.read('./config.ini')
tracker = CameraTracker(config)
tracker.start()
然后在datatrack文件中我有:
import RPi.GPIO as GPIO
import picamera
import time
class DataTracker():
def __init__(self, config):
self.buttonPressLast = False;
self.dataTracking = False;
self.totalTime = 0.0
self.timeBetweenData = float(config.get("Data", "TimeBetween"))
def loop(self):
while True:
self.buttonPress = False
if(GPIO.input(24) == 0):
self.buttonPress = True
if(self.buttonPress == True and self.buttonPressLast == False):
self.buttonPressLast = True
self.dataTracking = not self.dataTracking
if(self.dataTracking):
GPIO.output(7, GPIO.LOW)
else :
GPIO.output(7, GPIO.HIGH)
elif (self.buttonPress == False and self.buttonPressLast == True):
self.buttonPressLast = False
if(self.dataTracking and self.totalTime >= self.timeBetweenData):
self.capture_data()
self.totalTime = 0.0
self.totalTime += .1
time.sleep(.1)
def setup(self):
GPIO.setmode(GPIO.BCM)
GPIO.setup(7, GPIO.OUT)
GPIO.setup(24, GPIO.IN, pull_up_down = GPIO.PUD_UP)
def capture_data(self):
print ("Capture data")
def start(self):
self.setup()
GPIO.output(7, GPIO.HIGH)
self.loop()
def CameraTracker (DataTracker):
def __init__(self, config):
super(CameraTracker, self).__init__(config)
self.camera = False
def capture_data(self):
print("Take pictures here")
当主文件中的代码调用DataTracker构造函数时,我很好。但是,当我如上所述切换到CameraTracker时,我在控制台中获得以下输出。
Traceback (most recent call last):
File "camera_capture.py", line 17, in <module>
tracker.start()
AttributeError: 'NoneType' object has no attribute 'start'
非常感谢对这个问题的任何见解!