Go Down

Topic: Plusieurs fichiers (Read 5786 times) previous topic - next topic

Touf2638

Bonjour,
Je voudrais decouper mon programme en plusieurs fichiers et d'après ce que j'ai vu dans les tutos et forums, j'ai crée un .C et un .H
J'arrive du programme principal à accéder aux structures mais pas à mes fonctions. Pouvez vous m'indiquer où je me plante.
Le message d'erreur est:
CODA_V1.cpp.o: In function `loop':
D:\SOFTS\arduino-1.0.3-windows\arduino-1.0.3/CODA_V1.ino:39: undefined reference to `Generation_Prepa_sinusoide(Parametres_courbe_type, int)'

Merci

Le main :

Code: [Select]

#include "Generation.h"
#define Nbre_pts_courbes 360  // Nombre de points pour la courbe (résolution)


/*********************************************/
/***                 INIT                  ***/
/*********************************************/

void setup()
{


}


/*********************************************/
/***                 MAIN                  ***/
/*********************************************/

void loop()
{
  Parametres_courbe_type Parametres_courbe;
  delay(1000);
  Generation_Prepa_sinusoide(Parametres_courbe,0);
 
}



Le .H

Code: [Select]
#ifndef Generation_h

#define Generation_h

      #include "Arduino.h"
     
      //*********************************************************************************************************************************
      //   VARIABLES ET STRUCTURES
      //*********************************************************************************************************************************
     
      // Structure des parametres recus par ethernet
      typedef struct Parametres_courbe_type
      {
          byte type;
          byte angle;
          byte redresse;
          int amplitude;
          int frequence;
          int Nbre_periodes;
          int offset;
          float pas;
          boolean checksum_ok;
         
      }  Parametres_courbe_type;
     
      // Structure de generation de la courbe
      typedef struct Courbe_type
      {
          int amplitude;
          float pas;
          int nombre_periode;
          int points_courbes[360];
          int Nbre_points;
     
      }  Courbe_type;

      //*********************************************************************************************************************************
      //   PROTOTYPES DE FONCTIONS
      //*********************************************************************************************************************************
     
      // Fonction de création des points de la courbe
      Courbe_type Generation_Prepa_sinusoide(Parametres_courbe_type Parametres_courbe,int Nbre_pts_courbes);
     
      // Fonction de génération de la courbe
      void Generation_signal(Courbe_type Courbe, int Decalage_zero,int Point_en_cours,int pas_ec, int Periode_en_cours);
     
       
#endif


Le .C

Code: [Select]



/**********************************************************************************************************************/
/**********************************************************************************************************************/


#include "Generation.h"
#include "Arduino.h"



/**********************************************************************************************************************/
/**********************************************************************************************************************/


/*********************************************/
/***         PREPARATION SINUSOIDE         ***/
/*********************************************/

Courbe_type Generation_Prepa_sinusoide(Parametres_courbe_type Parametres_courbe,int Nbre_pts_courbes)
{

}
             
       
/**********************************************************************************************************************/
/**********************************************************************************************************************/

/*******************************************************/
/***               GENERATION SIGNAL                 ***/
/*******************************************************/
       

void Generation_signal(Courbe_type Courbe, int Decalage_zero,int Point_en_cours,int pas_ec, int Periode_en_cours)
{
       
}       
       
/**********************************************************************************************************************/
/**********************************************************************************************************************/




Touf2638

Autre question sur ce sujet, j'ai essayé de mettre un include d'un .H ("Test.h") dans mon programme principal.
Ce .H contient lui même un.H (<Ethernet.h>)
Si j'utilise des elements de la librairie Ethernet dans mon programme principal, ils ne sont pas reconnus.
Je dois mettre #include <Ethernet.h> dans mon programme principal à la place de #include "Test.h"
Mon "Test.h" n'inclut il pas mon <Ethernet.h>

Désolé pour ces questions qui doivent être simples mais j'ai un peu du mal à m'y retrouver... =(

skywodd

Bonjour,

Fait un zip de ton dossier de projet pour qu'on regarde de plus prés où est le problème ;)
Des news, des tutos et plein de bonnes choses sur http://skyduino.wordpress.com !

Touf2638

Merci c'est vraiment sympa   XD
J'espere pouvoir aider à mon tour quand je serais meilleur !!!



68tjs

Je n'arrive pas à décompresser cette archive   :
Voila ce que j'obtiens quand je veux la décompresser.
Code: [Select]
b@zeus:~/telechargement$ 7z x CODA_V1.7z

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
p7zip Version 9.20 (locale=fr_FR.UTF-8,Utf16=on,HugeFiles=on,2 CPUs)

Processing archive: CODA_V1.7z

Error: Can not open file as archive


Idem avec "e" à la place de "x" et "7za" à la place de "7z".

Touf2638

Pareil chez moi quand je la reprend du forum. Sur mon PC celle d'origine marche ...
Je ressaye de la mettre


Touf2638

Non ca veut pas  =(

Y'a juste à aller dans Attach et puis parcourir ?

68tjs

Essaye un autre logiciel pour créer l'archive.
Tu as peut-être une configuration "particulière" sur ton PC.

Touf2638

J'essaye zip et rar

Touf2638

Le .rar a l'air de marcher

jfs

Pas d'aide par MP !!!

Concernant le fonctionnement du forum tout se trouve dans les messages épinglés en tête de page.

Touf2638

Vous avez pu telecharger et l'ouvrir correctement ?

jfs

Pas d'aide par MP !!!

Concernant le fonctionnement du forum tout se trouve dans les messages épinglés en tête de page.

68tjs

J'ai lu que pour partager des variables globales entre plusieurs fichiers il faut les déclarer "extern" dans chaque fichier:
Code: [Select]
extern int GLOBAL;

Peut-être que de plus grosses pointures en programmation pourront-en dire davantage.
En attendant un coup de gogole sur les déclarations "extern" pourra peut-être te donner une solution.

Touf2638

Ok merci pour les variables globales.
Par contre pour mes fonctions qui m'empechent de compiler et pour le "#include ethernet" qui n'est pas pris en compte

Go Up