Filtrer les ID du réseaux Can étendu d'un véhicule de loisir

Le problème exposé dans ce sujet a été résolu.

Bonjour à tous,

Je suis débutant en python(première fois que je le pratique). Voici mon problème, pour mon projet de licence, je dois récupérer les données du réseaux Can d’un camping-car, puis filtrer les ID pour obtenir que ceux qui sont intéressante. Il y a la bibliothèque can sur python, j’ai déjà réussi à récupérer les données sauf que je n’arrive pas du tout à filtrer les iD. Je tiens à précisé aussi que le Can n’est pas standard mais c’est le Can étendu. Voici le lien de l’API du can https://python-can.readthedocs.io/en/stable/index.html

Voici mon programme :

import can

while(1):

can_ID = 0x0814C201

bus = can.interface.BusABC(channel='can0', bustype = 'socketcan_native')
msg = bus.set_filters(can_ID)

print(msg)

Ce qui me donne ce résultat sur le terminal :

image.png
image.png

le matériel que j’utilise et un Raspberry Pi 3b+ et son écran tactil et un module PiCan qui permet de lire le Can (https://www.elektor.fr/pican-2-can-bus-board-for-raspberry-pi)

En espèrent que vous allez pouvoir m’aider car la je bloque et testé pas mal de chose avant. Merci d’avance.

non je n’ai pas essayé can.viewer mais c’est une ligne de commande à exécuter dans le terminal non ?

jul0xx

C’est cela. Je l’ai vu en consultant le lien que tu donnes dans ton post initial.

+0 -0

C’est cela. Je l’ai vu en consultant le lien que tu donnes dans ton post initial.

etherpin

Le problème c’est que je ne veux pas taper de ligne de commande, je veux un programme qui vient lire et filtrer les données continuellement car après avoir récupéré les ID, il faut que je filtre aussi certaines données, pour ensuite les convertir et une fois convertie les envoyer dans un serveur. J’ai déjà fais les programmes pour la conversion et la lecture du réseau mais je n’arrive pas à réaliser le programme pour les filtrés. A moins qu’on puisse par programme utiliser la ligne de commande et récupérer les infos dans une variable. Mais sinon je ne vois pas comment.

Comme son nom l’indique, can.viewer est destine a observer ce qui passe dans le réseau CAN. A ta place, je ferais usage de can.viewer pour essayer de trouver les bons paramètres.

+0 -0

On peut, mais c’est affreux comme façon de faire et ça n’est pas optimal du tout.

Vanadiae

D’accord, le programme est juste un programme teste, qui ne sera utilisé que pendant ma phase de projet. Normalement, un module fait déjà tout le travail mais il n’a pas pu être mis en place. Donc c’est pas si grave si il est pas optimal, dès l’instant que cela fonctionne et qu’on peut poursuivre des tests en réel, c’est ce que veut l’entreprise. Comment je peux utiliser une ligne de commande dans un programme en Python ?

Je me suis mal explique.
Tu as fait un programme, mais il ne fait pas ce que tu veux. Probablement du fait d’un mauvais paramétrage.
Il faut donc trouver les bonnes valeurs: Pour cela, tu pourrais utiliser can.viewer. Une fois que tu as des valeurs qui marchent, tu peux écrire un programme qui marche.

+0 -0

Je me suis mal explique.
Tu as fait un programme, mais il ne fait pas ce que tu veux. Probablement du fait d’un mauvais paramétrage.
Il faut donc trouver les bonnes valeurs: Pour cela, tu pourrais utiliser can.viewer. Une fois que tu as des valeurs qui marchent, tu peux écrire un programme qui marche.

etherpin

Je n’arrive pas utiliser can.viewer avec le terminal rien ne s’affiche me concernant.

J’ai trouvé une autre façon de faire, j’ai enregistrer dans un fichier ce que je réception avec la commande suivante: ./candump can0 -l et ensuite je viens split() chaque ligne de mon fichier et je filtre mon ID. La commande provient de python can-utils. Sauf que cette commande peut s’exécuter que dans mon dossier can-test_pi2, avec pour chemin Documents/Can/can-test_pi2. Maintenant je cherche à savoir comment je peux me déplacé dans mon dossier et exécuter ma commande dans un terminal via un programme python ? J’ai fais des recherches sur ce sujet mais sans succès.

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte