Terminal log und CAN

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Mechanic
User
Beiträge: 3
Registriert: Dienstag 12. Februar 2019, 17:23

Hallo zusammen,
ich habe auf meinem Raspberry Pi ein CAN-Interface laufen. Die CAN-Befehle kann ich im Terminal ausführen allerdings bekomme ich es nicht auf die Reihe die Terminal-Ausgabe mit Python zu loggen. Kennt ihr eine Befehls-Kombination mit der ich das Terminal von Linux anzapfen kann? Oder sogar mit Python auf den CAN-Bus zugreifen kann? Aktuell nutze ich die CAN-Utils und versuche die mit os. Befehlen in Python das Linux-Terminal abzulesen.
Gruß
Mechanic
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Hast du mal gesucht? https://python-can.readthedocs.io/en/2.1.0/

Und ohne Code kann man nur raten, aber ich vermute mal du benutzt os.system? Tu das nicht. Benutz das subprocess-Modul, da kannst du stdout-Ausgeben abgreifen.
Mechanic
User
Beiträge: 3
Registriert: Dienstag 12. Februar 2019, 17:23

__deets__ hat geschrieben: Dienstag 12. Februar 2019, 17:48 Hast du mal gesucht? https://python-can.readthedocs.io/en/2.1.0/

Und ohne Code kann man nur raten, aber ich vermute mal du benutzt os.system? Tu das nicht. Benutz das subprocess-Modul, da kannst du stdout-Ausgeben abgreifen.
Die Python-Can Library klappt leider nicht wie sie soll, ich bin da blutiger Anfänger. Ich komme mit den Python Befehlen nicht an das Modul dran. Die Anleitung die du gepostet hast nutze ich auch. Ich habe leider kein explizites Code-Beispiel da ich diverse Ansätze versucht habe. Am einfachsten fände ich die Lösung über die Terminal Ausgabe, da die Linux Befehle anstandslos funktionieren.
__deets__
User
Beiträge: 14494
Registriert: Mittwoch 14. Oktober 2015, 14:29

Dann rufst du die Befehle wie schon erwaehnt eben ueber das subprocess-Modul auf. Ab Python 3.7 zB subprocess.run:

https://docs.python.org/3/library/subpr ... rocess.run
Mechanic
User
Beiträge: 3
Registriert: Dienstag 12. Februar 2019, 17:23

Habs jetzt hinbekommen, danke!
Antworten