Seite 1 von 1
CAN Nachricht nach Bytes abfragen
Verfasst: Dienstag 14. Juni 2022, 15:46
von johann1976
Hey Leute ,
Ich kommuniziere im Moment mit einer C basierten Hardware (MRS Modul) mit meinem Python Programm auf meinem Rechner.
Die CAN Nachrichten die von der C Hardware gesendet werden kann ich mit Hilfe der CAN Library einlesen.
Nun suche ich schon seit längerem eine Möglichkeit auf Daten die in einem bestimmten Byte hinterlegt sind zu Reagieren.
die CAN Nachricht besteht aus
CAN ID , ID type (11 oder 29Bit), DLC (Länge der Nachricht), byte0, byte1, byte2......byte7)
mein Ansatz war (Restlicher Code zum epmfangen funktioniert)
Code: Alles auswählen
if can_nachricht[0] == 1:
print("Byte beschrieben mit 1")
Leider klappt dies nicht. Kennt jemand zufällig eine Lösung zum abfragen einzelner Bytes?
LG Johann1976
Re: CAN Nachricht nach Bytes abfragen
Verfasst: Dienstag 14. Juni 2022, 15:50
von __deets__
Na das ist schon richtig so, und fuer mich funnktioniert das auch einwandfrei:
Code: Alles auswählen
can_nachricht = bytes([0,1, 2, 3, 4])
if can_nachricht[1] == 1:
print("Byte beschrieben mit 1")
Re: CAN Nachricht nach Bytes abfragen
Verfasst: Dienstag 14. Juni 2022, 17:27
von __blackjack__
@johann1976: Was heisst denn „klappt nicht“? Weclhen Wert hat denn ``can_nachricht[0]``? Gib den doch vorher zur Kontrolle mal aus. Den Typ vielleicht auch, nicht das Du da eine Zeichenkette hast wo die Ziffer "1" an Index 0 steht.
Re: CAN Nachricht nach Bytes abfragen
Verfasst: Mittwoch 15. Juni 2022, 10:24
von johann1976
Moin Moin aus Oldenburg,
Ich stell hier mal den Code und die Fehlermeldung rein. Dieser can.Message type ist wohl nicht indexierbar hmm
Code: Alles auswählen
import can
interface = 'socketcan'
channel = 'can0'
bitrate = 250000
bus = can.interface.Bus(bustype=interface, channel=channel, bitrate=bitrate)
while True:
msg = bus.recv()
print(msg) # Klappt
byte0 = msg[0]
print(type(byte0))
Fehlermeldung:
Traceback (most recent call last):
....line 40
byte0 = msg[0]
TypeError: 'Message' object ist not subscriptable
wenn ich von msg[4] usw. abfrage erscheint das gleiche
LG Johann
Re: CAN Nachricht nach Bytes abfragen
Verfasst: Mittwoch 15. Juni 2022, 10:54
von __deets__
Das ist ja auch ein Message-Objekt, und kein bytes-Objekt. Und um rauszufinden, wie man damit arbeitet, kann man die Dokumentation bemuehen:
https://python-can.readthedocs.io/en/ma ... ssage.html
Und da steht dann ja auch drin, wie man an die Bytes kommt.
Re: CAN Nachricht nach Bytes abfragen
Verfasst: Mittwoch 15. Juni 2022, 12:06
von johann1976
Danke, dies werde ich nachher mal durchgehen.
Ich habe sowas gesucht , war sogar auf der Website aber ich habe nicht explizit diese Seite aufgemacht -.-
LG Johann
Re: CAN Nachricht nach Bytes abfragen
Verfasst: Mittwoch 15. Juni 2022, 14:03
von __deets__
Wenn du gleich von Anfang an den echten Code und die echte Fehlermeldung gepostet haettest, statt irgendwelche vagen Umschreibungen, haettest du dir und uns ne Menge Zeit erspart. Vielleicht fuer's naechste mal.