creation cpp et h

Bonsoir,

je ne sais pas si c est possible ou pas, j ai fait des essais mais j ai des erreurs :

je souhaiterai
dans le fichier pde, une ligne où je puisse saisir une valeur qui serait reprise dans les fichiers h et cpp, c est pour pouvoir saisir le numéro de port tx/rx d une 2560, et ainsi paramétrer les serial en fonction de

exemple :

fichier pde :
_Serialnum(3);

dans fichier h:
_Serial=('Serial' & uint8_t _Serialnum);

dans fichier ccp :

_Serial.print (.....) qui correspondrait à Serial3.print

j ai essayé en utilsant void _serial(....)

je dois loupé quelque chose

cdt

stef

Bonjour,
Aie aie aie ... effectivement il y a comme un probléme :~

_Serial=('Serial' & uint8_t _Serialnum);

Bien essayer mais ce genre de chose n'est pas valable quelque soit le langage de programmation utilisé (sauf php et python ou il serait presque possible de faire quelque chose dans le genre)

La technique c'est d'utiliser un pointeur de type HardwareSerial et une fonction s'occupant de la gestion.

Exemple :

HardwareSerial *_port;
#define _serial (*_port) // mise en forme plus "user friendly" du pointeur.

void selectPort(int port)
{
  switch(port)
  {
  case 1:
    _port = &Serial1;
    break;
  case 2:
    _port = &Serial2;
    break;
  case 3:
    _port = &Serial3;
    break;
  }
}

void setup(){
  selectPort(1);
}

void loop()
{
  _serial.println("Yo");
  delay(1000);
}

merci pour la réponse, j essaie cà :wink:

Il y a pas moyen de mettre çà dans le cpp

car dedans celui-ci, j ai des serial3.print(.....) qui m envoient des fonctions écrans ( pour prédéfinir les tracées de l ecran)

Avec le #include <Wprogram.h> en entête du cpp il est tout à fait possible d'inclure le morceau de code dans n'importe quel cpp.

J avais essayé ça mais j ai un message d erreur :

#include "ulcd32pt.h"
#include <stdio.h>
#include <string.h>
#include <inttypes.h>
#include "WProgram.h"
HardwareSerial _port;
#define _serial (
_port)

ulcd32pt::ulcd32pt() {
}

void selectPort(int port)
{
switch(port)
{
case 1:
_port = &Serial1;
break;
case 2:
_port = &Serial2;
break;
case 3:
_port = &Serial3;
break;
}
}

et en déplaçant les deux lignes de l entête après la construction

et en mettant avant le void setup du pde :

selectPort(1);

je recopie le message d erreur et je le met en citation

le message est :
en le mettant avant void setup()

leed:8: error: expected constructor, destructor, or type conversion before '(' token

et dans le void setup()

leed.cpp: In function 'void setup()':
leed:11: error: 'selectport' was not declared in this scope

un ptit coup de pouce ne serait pas de refus

tu dois ajouter dans le .h que tu include dans le .cpp et dans le .pde les lignes :

#define _serial (*_port)
void selectPort(int port);

C est ce que j avais fait mais j ai quand même vérifier :

pour le ccp

#include "WProgram.h"
#include "ulcd32pt.h"
HardwareSerial _port;
#define _serial (
_port)

// Constructor
ulcd32pt::ulcd32pt() {
}

void selectPort(int port)
{
switch(port)
{
case 1:
_port = &Serial1;
break;
case 2:
_port = &Serial2;
break;
case 3:
_port = &Serial3;
break;
}
}

pour le h :

#ifndef ulcd32pt_h
#define ulcd32pt_h
#define _serial (*_port)
#include "WProgram.h"
#include <inttypes.h>

// Units

class ulcd32pt
{....
private:
...
void selectPort(int port);

};

Dans le .h passe la fonction en public, en private elle ne sera pas disponible depuis le pde.

toujours pareil, je vais le faire à la mano le changement si j y suis obligé merci quand même