J'essaye d'écrire du code pour un pi de framboise. Le code est censé établir une connexion pour obd sur ma voiture. Ce que le code est censé faire est d'attendre que j'appuie sur une broche GPIO et l'enregistrement s'arrête. Cette broche (27) agit comme une bascule, je peux donc démarrer/arrêter en appuyant dessus.Boutons GPIO: AttributeError: l'objet 'int' n'a pas d'attribut 'var1'
J'ai écrit le code à l'origine en dehors d'une classe juste pour le faire fonctionner, mais je l'ai réécrit à partir de zéro pour l'adapter à une classe, mais les événements GPIO ne se comportent pas.
Voici le code:
import RPi.GPIO as GPIO
import time
import obd
import numpy as np
class obdScan:
rec_loop = 0
key_listen = 1
rec_freq = 2 # per second
my_data = []
def __init__(self):
try:
self.conn = obd.OBD()
except:
print("connection failed")
def stop_loop(self):
self.rec_loop = (self.rec_loop +1)%2
def closeall(self):
self.rec_loop, self.key_listen = 0,0
def measurement(self,val):
device = obd.commands[1][val]
value = self.conn.query(device).value.magnitude
return value
def record(self,devices):
value=[]
for i in range(len(devices)):
value.append(self.measurement(devices[i]))
self.my_data.append(value)
time.sleep(1/self.rec_freq)
print(["recording:", self.my_data[-1]])
if __name__ == "__main__":
dat_file = "data.csv"
GPIO.setmode(GPIO.BCM)
GPIO.setup(27, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(22, GPIO.IN, pull_up_down=GPIO.PUD_UP)
try:
my_data = np.genfromtxt(dat_file, delimiter=',')
except:
my_data = [[], []]
obd_connection = obdScan()
GPIO.add_event_detect(27, GPIO.FALLING, callback=obd_connection.stop_loop)
GPIO.add_event_detect(22, GPIO.FALLING, callback=obd_connection.closeall)
print("ready")
while obd_connection.key_listen:
while obd_connection.rec_loop:
obd_connection.record([13,7])
else:
print("done")
try:
data = np.append(my_data,obd_connection.my_data,axis=0)
except:
data = obd_connection.my_data
np.savetxt(dat_file, data, delimiter=",")
L'erreur que je reçois:
"TypeError: stop_loop() prend 1 argument de position, mais 2 ont reçu"
Note: en collant le code, une indentation se est foiré, donc supposer indentation correcte –