SocketCAN und Interrupt ?
Verfasst: Mittwoch 21. August 2019, 16:20
Hallo zusammen,
ich möchte gerne aufm dem Raspberry Pi Display CAN Nachrichten darstellen.
Grundsätzlich funktioniert das soweit auch schon, allerdings würde ich gerne per Interrupt (oder vergleichbare Lösungen) den CAN auslesen und nicht wie in meiner Lösung alle 1ms.
Habt ihr eine Idee für mich?
Danke im voraus.
MfG
ich möchte gerne aufm dem Raspberry Pi Display CAN Nachrichten darstellen.
Grundsätzlich funktioniert das soweit auch schon, allerdings würde ich gerne per Interrupt (oder vergleichbare Lösungen) den CAN auslesen und nicht wie in meiner Lösung alle 1ms.
Habt ihr eine Idee für mich?
Danke im voraus.
MfG
Code: Alles auswählen
########----------import modules--------###########
from tkinter import *
from pyvit import can
from pyvit.hw import socketcan
########-------START CAN INTERFACE-----###########
dev = socketcan.SocketCanDev("can0")
dev.start()
########------------START GUI----------###########
fenster = Tk() #legt ein Fenster an
fenster.title("veh-speed") #bestimmt titel vom Fenster
fenster.geometry("400x700")
label_1 = Label(fenster, fg="black", bg="white", font="50")
label_1.pack()
########---------Define Functions-------###########
def f_veh_speed():
global v_veh_speed
v_veh_speed = int.from_bytes([frame.data[0],frame.data[1]], byteorder='big', signed=False)*0.01 #Factor is 0.01
label_1.configure(text=str(v_veh_speed))
def read_every_1ms():
global frame
frame = dev.recv()
canid = frame.arb_id # check CAN ID
print(canid)
if hex(canid) == '0x415':
f_veh_speed()
fenster.after(1, read_every_1ms)
read_every_1ms()
fenster.mainloop()