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 averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    29
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2004
    Messages : 29
    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 �prouv� 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
    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

  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 : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    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 Expert
    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 : 46
    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
    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