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 :

Pb Invalid Conversion "char" to "char*"


Sujet :

C++

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    Points : 17
    Points
    17
    Par défaut Pb Invalid Conversion "char" to "char*"
    Bonjour tout le monde ! Voilà, je galère un peu et bêtement .. En fait au départ j'arrivais à récupéré des trames envoyer par un anémometre via une liaison RS232 (donc une classe RS232 associé) mais seulement des bouts de trames .. Il faut donc que je récupère la trame en entier .. Ce que je sais c'est qu'elle commence par un "$" et se termine juste avant le 4e "$" rencontré. Pas spécialement compliqué, cependant j'ai un soucis .. Mon char bufferTmp doit contenir un caractère de la trame pour vérifier si oui ou non il y a un "$" mais bon j'ai l'erreur : Invalid Conversion "char" to "char*" (Car l'argument que demande getTrame est un char*). Bref, je suis un peu perdu, si quelqu'un a 5 minutes à me consacrer, je le remercie d'avance.

    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
     
    void Anemometre::demarrerAcquisition()
    {
    	PortRS232 * portAnemometre = new PortRS232();
    	vector<char> buffer;
    	char bufferTmp;
    	int len, init = 0;
    	init = portAnemometre->initialiserCom();
    	if(init == 1)
    	{
    		buffer.clear();
    		while(1)
    		{	
    			/* capture de caractere sur la liaison RS232 */
    			while (portAnemometre->getTrame(bufferTmp) != "$")
    			{
    				// On continue la lecture sur portAnemometre sans incrémenter buffer
    				portAnemometre->getTrame(bufferTmp);
    			}
    		}
    		cout << "> Fermeture de la communication" << endl;
    		portAnemometre->closeCom();
    		cout << "> Communication terminé" <<endl;
    	}

  2. #2
    Membre habitué Avatar de PINGOUIN_GEANT
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 149
    Points : 155
    Points
    155
    Par défaut Re: Pb Invalid Conversion "char" to "char*&am
    Citation Envoyé par kazarn
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     
    while (portAnemometre->getTrame(bufferTmp) != "$")
    cette ligne ce n'est pas très bon, $ devrait être entre simple quote '
    et si gettrame renvoie un char * tu n'as qu'à déférencer.

    Note: pour comparer des tableaux de caractères, c'est strcmp
    " Tout homme est digne d'un parapluie." Stavroguine dans Les Démons de Dostoïevski.

  3. #3
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    getTrame demande un char*, mais est-ce que cela doit correspondre à l'adresse d'un char (pour le modifier) ou bien à une chaîne de caractères ? Et qu'est-ce que cette fonction renvoie ?

  4. #4
    Membre émérite
    Avatar de Ti-R
    Homme Profil pro
    Ingénieur R&D
    Inscrit en
    Avril 2003
    Messages
    1 683
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 683
    Points : 2 568
    Points
    2 568
    Par défaut
    Si

    alors

    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
     
    char s_capture[255];
    char *pt_s_capture=s_capture;
    while(1) 
    {    
    	/* capture de caractere sur la liaison RS232 jusqu'a ce qu'il trouve un '$' */ 
    	do 
    	{ 
    		// On continue la lecture sur portAnemometre sans incrémenter buffer 
    		portAnemometre->getTrame(bufferTmp); 
    	}
    	while(bufferTmp != '$')
     
    	// prend tout le contenu jusqu'au 4 eme '$'
    	int t_i=3;
    	while(t_i)
    	{
    		portAnemometre->getTrame(bufferTmp); 
    		if(bufferTmp == '$')
    			--t_i;
    		*(pt_s_capture++)=bufferTmp;
    	}
    	// le 4eme '$' est atteind, "l'effacer"
    	*(--pt_s_capture)='\0';
     
    	// La réponse est dans la variable "s_capture" :)
    	break;
    }
    Bon si j'ai bien compris ton problème

    ps: le code est pas testé

Discussions similaires

  1. Réponses: 16
    Dernier message: 29/10/2008, 14h33
  2. Réponses: 4
    Dernier message: 15/10/2008, 21h30
  3. Réponses: 7
    Dernier message: 16/02/2008, 07h30
  4. error: invalid conversion from `const wxChar*' to `CHAR*'
    Par barbarello dans le forum wxWidgets
    Réponses: 16
    Dernier message: 31/01/2006, 11h28

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