Bonjour à tous,
J'ai voulu poser une question concernant la récupération de données d'une trame CAN avec matlab.
Ci-dessous une figure qui explique l'organisation de données dans la trame CAN.
En fait, cette trame contient 64 bits, numérotés dans la figure de 1 à 64.
J'aurais besoin seulement de bits qui sont en bleu (17 à 22 et 30 à 32), sachant que le bit 30 est le LSB et le bit 22 est le MSB.
Pusique je n'ai pas trouvé comment faire les opérations logiques et la concaténation de bits (and, or...) en matlab, j'ai essayé avec cette méthode
Alors qu'est ce que vous en pensez ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 D1=int16(0); % Initialisation d'un entier sur 16 bit pour l'operation de shift D2=int16(0); D3=int16(0); D1 = int16(messagein.Data(5)); % quelques opérations pour récuperer les données, messagein.Data(5) est uint8 (sur 8 bits) D2 = int16(messagein.Data(6)); D1 = bitshift(D1,3); % shift les bits de 17 à 22, 3 bits à gauche D2 = bitshift(D2,-5); % shift les bits de 30 à 32, 5 bits à droite D3 = D1 +D2; % faire la somme , concaténation de données
Merci.
Partager