IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++ Discussion :

BTS IRIS Module CAN BUS


Sujet :

C++

  1. #1
    Nouveau candidat au Club
    Homme Profil pro
    Inscrit en
    Janvier 2014
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2014
    Messages : 1
    Par défaut BTS IRIS Module CAN BUS
    Bonjour, voilà je suis en BTS IRIS 2, et je dois envoyer une Data trame sur un module de sortie FRAS4/21 via le bus CAN.
    On m'a donnée la classe, je n'ai plus qu'a l'utiliser, le probleme c'est que je n'y arrive pas.
    Classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    // Classe CAN pour MODULE VMOD-ICAN3OS1.9 sur BAB40
     
    // Constantes symboliques a utiliser pour la vitesse
    #define BTR_1MB		0x2300	/* 1 MBaud */
    #define BTR_800KB	0x2500	/* 800 KBaud */
    #define BTR_500KB	0x1c00	/* 500 KBaud */
    #define BTR_250KB	0x1c01	/* 250 KBaud */
    #define BTR_125KB	0x1c03	/* 125 KBaud */
    #define BTR_100KB	0x34c7	/* 100 KBaud */
    #define BTR_62_5KB	0xbac7	/*  62.5 KBaud */
    #define BTR_50KB	0x34cf	/*  50 KBaud */
    #define BTR_20KB	0x7fcf	/*  20 KBaud */
    #define BTR_10KB	0x7fdf	/*  10 KBaud */
     
    class Can
    {
       protected:
       int fd; // descripteur CAN
       public:
     
       // constructeur
       // initialise le module VMOD-ICAN3OS1.9 sur BAB40
       // connecte une resistance de 120 ohms sur le bus 
       // initialise la vitesse a celle passee en argument
       // prepare le module pour l'envoi et la reception 
       // de trames CAN 20.A ou CAN 20.B de type data ou remote
       Can(int vitesse);
     
       // destructeur
       // deconnecte le module VMOD-ICAN3OS1.9 du bus CAN
       // ferme le peripherique et libere les zones allouees
       ~Can();
     
       // Methodes Out_data (2.0A et 2.0B
       // Envoi d'une trame de donnees (data frame) sans echo ni confirmation
       // id est l'identifiant de la trame
       // P_donnees pointe les donnees a envoyer
       // len est le nombre de donnees maxi (len de 0 a 8) 
       // renvoie 0 pour OK -1 pour erreur
       int Out_data_0A(int id, unsigned char* P_donnees, int len); 
       int Out_data_0B(int id, unsigned char* P_donnees, int len); 
     
       // Methodes Out_remote (2.0A et 2.0B
       // Envoi d'une trame de requete (remote frame)
       // id est l'identifiant de la trame
       // len est le nombre de donnees attendues (0 a 8) 
       // renvoie 0 pour OK -1 pour erreur
       int Out_remote_0A(int id,int len);  
       int Out_remote_0B(int id,int len);  
     
       // Methode In
       //attend toute trame
       //renvoie 0 pour OK -1 pour erreur
       //si OK, retourne :
       //     le type dans type (0 pour 2.0A, 1 pour 2.0B)
       //     l'identifiant dans id
       //     la nature de la trame dans rem (0 pour data, 1 pour remote)
       //     le nombre de donnees dans len 
       //     les donnees a partir de l'adresse pointee par P_data
       int In(int *type,int*id,int*rem ,unsigned char*P_data,int*len);
    };
    mon programme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    #include <iostream.h>
    #include <lyc.h>
    #include <stdio.h>
    #include <string.h>
    #include "canlib.h"
     
     
    int main ()
    {
     Can can (0x1c03);
     
     int ret;
     int* type;
     int* id;
     int *rem;
     unsigned char* P_data;
     int* len;
     char* data;
     unsigned char* P_donnees;
     int a;
     
     strcpy ((char*)data,"0x148"); // 0x150 l'adresse du module 
     strcpy ((char*)P_donnees, (char*)data);
     
     cout << P_donnees << endl;
     
     
     ret = can.Out_data_0A(df,P_donnees,7);
     if (ret == -1)
     {
    	cout << "Erreur envoie de dataframe " << endl; 
     }
    Je dois envoyer une donnée afin que le module le reçoit, et ensuite le bouton rouge qui se trouve sur le module, s'éteindra, afin de me dire qu'il a bien reçu la donnée. Mais je ne sais pas qu'elle sorte de donnee je dois lui envoyer.
    Merci d'avance

  2. #2
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    176
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 176
    Par défaut
    Bon ton code, c'est plus du C que du C++... mis à part l'utilisation d'une classe et les "cout"

    Tu veux faire quoi exactement là?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strcpy ((char*)data,"0x148"); // 0x150 l'adresse du module 
     strcpy ((char*)P_donnees, (char*)data);
    1- tu n'as pas alloué de mémoire à l'adresse 'data' pour stocker "0x148" --> segmentation fault
    2- idem pour 'P_donnees', tu n'as fait que déclarer un pointeur, tu n'as pas alloué de mémoire --> segmentation fault

    ça compile ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ret = can.Out_data_0A(df,P_donnees,7);
    A moins d'avoir mal vu, j'ai pas vu de déclaration de 'df'.

Discussions similaires

  1. [ETUDES] Quel job je peux trouver après un BTS iris ?
    Par pepper18 dans le forum Etudes
    Réponses: 44
    Dernier message: 28/08/2010, 16h55
  2. Réponses: 25
    Dernier message: 25/03/2008, 04h08
  3. L'E-CML à Marseille, après mon BTS IRIS...
    Par Etanne dans le forum Etudes
    Réponses: 5
    Dernier message: 03/08/2006, 12h46
  4. Formation post BTS IRIS
    Par theanswerdu40 dans le forum Etudes
    Réponses: 1
    Dernier message: 06/02/2006, 18h36
  5. [Etude] Orientation aprés un BTS IRIS
    Par ArkAng3 dans le forum Etudes
    Réponses: 3
    Dernier message: 22/01/2006, 19h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo