Probleme d'affichage d'un CString

Probleme d'affichage d'un CString - C++ - Programmation

Marsh Posté le 26-05-2005 à 15:04:26    

Bonjour,  
 
 
voila étant en train de mettre en oeuvre une balance via une interface, je dois y recuperer la valeur du poids qu'elle me renvoi.
 
Pour cela je recuperer la donnée dans un tableau temporaire.
 
Voici ma fonction en question:
 

Code :
  1. CString CTestBalanceDlg::ValeurStable()
  2. {
  3. CarEnvoye='s';
  4. char ValeurStable[18];
  5. dwNbCarLus=18;
  6. if(WriteFile (m_hLiaisonSerie, &CarEnvoye, 1, &dwNbCarEcrits, NULL)==false)
  7.  MessageBox("Erreur d'ecriture", "Erreur" );
  8. ReadFile(m_hLiaisonSerie,      //Instance sur l'accès du port série   
  9.   &ValeurStable,               //Conteneur pour récupérer le byte lu   
  10.   dwNbCarLus,                   //Nombre de byte à lire   
  11.      &dwNbCarLus, //Pointer sur le nombre de byte lu, sert à   
  12.                         //la gestion propre de la fonction read.   
  13.   0);
  14. return ValeurStable;
  15. }


 
 
La variable Valeur stable recupere bien la donnée en question (le poids sous format 499.6g) mais lors de l'affichage j'obtient ceci:
 

Citation :

4ÌÌÌÌÌÌÌÌÌÌÌÌdþ


 
au lieu d'avoir 499.6g
 
Voici le code qu'il y a lorsque je clique sur le bouton:
 

Code :
  1. void CTestBalanceDlg::OnValeurStable()
  2. {
  3. // TODO: Add your control notification handler code here
  4. CEdit *pEdit=(CEdit *)GetDlgItem(IDC_EDIT_AFFICHE_POIDS);
  5. pEdit->SetWindowText(ValeurStable());
  6. }


 
le constructeur est celui-ci:
 

Code :
  1. CTestBalanceDlg::CTestBalanceDlg(CWnd* pParent /*=NULL*/)
  2. : CDialog(CTestBalanceDlg::IDD, pParent)
  3. {
  4. //{{AFX_DATA_INIT(CTestBalanceDlg)
  5.  // NOTE: the ClassWizard will add member initialization here
  6. //}}AFX_DATA_INIT
  7. // Note that LoadIcon does not require a subsequent DestroyIcon in Win32
  8. m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
  9. m_hLiaisonSerie = CreateFile ( _T("COM1:" ), // nom liaison
  10.  GENERIC_READ | GENERIC_WRITE,
  11.  0,
  12.  NULL,
  13.  OPEN_EXISTING,
  14.  0,
  15.  NULL );
  16. dwNbCarEcrits=1;
  17. }


 
 
 
Voila je tourne dessus depuis ce matin  10h sans en voir le bout :/
 
Merci d'avance pour vos réponses et bonne journée.


Message édité par Adriensau le 26-05-2005 à 15:06:13
Reply

Marsh Posté le 26-05-2005 à 15:04:26   

Reply

Marsh Posté le 27-05-2005 à 16:11:20    

Attention, je te conseille de définir dans les options de ton compilateur l'utilisation d'un char unsigned par défaut, car sinon ton code peut :
 
1° soit etre compilé en unsigned char ( et je pense que ça marchera ), qui donne des valeurs de 0 < 255  
 
2° soit etre compilé en signed char ( mode par défaut du vc++ ) qui donne des valeurs -127 < 127
 
soit tu modifies tes options de compilation, soit tu défini en unsigned char....

Reply

Marsh Posté le 27-05-2005 à 17:30:15    

Adriensau a écrit :


 

Code :
  1. CString CTestBalanceDlg::ValeurStable()
  2. {
  3. [...]
  4. char ValeurStable[18];
  5.     [...]
  6. return ValeurStable;
  7. }



t'as pas l'impression qu'il y a un souci là ?


Message édité par Harkonnen le 27-05-2005 à 17:31:26

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed