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

MFC Discussion :

Lecture à partir du port série et écriture dans une textbox


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 126
    Par défaut Lecture à partir du port série et écriture dans une textbox
    Bonjour!! (encore moi mais pour la question inverse)

    alors voila je souhaite recevoir des valeurs envoyées sur mon port série et les écrire dans un textbox lorsque je clique sur un bouton receive.

    J'ai fait ca :
    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
     
    void CComIHMDlg::OnBnClickedReceive()
    {
    	// TODO: Add your control notification handler code here
     
     
    	TCHAR cBuffer[512];
    	DWORD *pnb_lus [2];
     
     
    	ReadFile(hcom, cBuffer, 2 , (LPDWORD)pnb_lus, NULL);
     
     
    	// recuperation l'edit box.
    	CEdit* edit=(CEdit*) GetDlgItem(IDC_EDIT2);
     
    	edit->SetWindowTextW((LPCTSTR)cBuffer);
     
     
    }
    Bon alors quand je clique sur le bouton receive je ne reçois que des carrés quelque soit la valeur envoyé. Je crois qu'en unicode cela correspond à une ligne vide non ?? je suis un peu perdue ...
    Si vous pouvez m'aider je suis preneuse!!

    Merci d'avance!!

  2. #2
    Membre chevronné Avatar de stephdim
    Profil pro
    Inscrit en
    Août 2007
    Messages
    462
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 462
    Par défaut
    salut,

    tu mélanges les TCHAR, les char et les wchar_t ....

    déjà de ta ligne série, tu reçois quoi comme type de caractères ? un char (1 octet = 1 caractère) ou un wchar_t (2 octets = 1 caractère)

    parce que là, dans ton code, ça va dépendre de la compilation de ton programme (le fait que _UNICODE soit défini ou pas) et non de ton partenaire de communication ...

    a mon humble avis, ta ligne série reçois que du "char".

    @+

  3. #3
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 126
    Par défaut
    Oui t'as tout compris je suis trop perdue entre les wchar_t, les char et tout.

    Parce que en fait je reçois de l'unicode... je comprends pas pourquoi ...

    Si tu veux j'aimerai utiliser les fonctions du type SetWindowTextA et non pas SetWindowTextW mais je peux pas.

    Pourtant je n'ai pas fait de define Unicode ni rien. Est ce par défaut ?
    Quand je fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #define SetWindowTextA SetWindowText
    j'ai le message d'erreur suivant à la compilation : SetWindowText is not a member of Cedit

    Peux tu m'éclairer un peu ?

  4. #4
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 126
    Par défaut
    Je l'ai refait en un peu plus clair :
    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
     
    void CComIHMDlg::OnBnClickedReceive()
    {
    	// TODO: Add your control notification handler code here
    	char *buffer;
    	DWORD *pnb_lus;
    	BOOL retour;
     
    	pnb_lus = 0;
    	buffer = 0;
     
    	retour = ReadFile( hcom , buffer , 10 , pnb_lus , NULL );
     
    	// recuperation l'edit box.
    	CEdit* edit=(CEdit*) GetDlgItem(IDC_EDIT2);
     
    	edit->SetWindowText((LPCTSTR)buffer);
     
    	if (retour != 1)
    	edit->SetWindowText(_T("noob"));	
    }
    je reçois bien noob :/ :/ je vois pas ce qui peut clocher !!

  5. #5
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    ton code doit planter (du moins en release)
    tu fournis a ReadFile un pointeur qui n'adresse aucun bloc de mémoire....
    buffer être déclarer comme un tableau de char avec une taille fixée.

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2006
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 126
    Par défaut
    Même si je déclare buffer de cette façon je ne reçois rien .

    Tu pensais le déclarer d'une autre façon ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 7
    Dernier message: 10/11/2014, 10h56
  2. Lecture de donnée à partir de port série
    Par Sonda09 dans le forum MATLAB
    Réponses: 2
    Dernier message: 25/09/2011, 15h38
  3. Problème d'écriture dans une TextBox
    Par jeremy5490 dans le forum C#
    Réponses: 6
    Dernier message: 09/06/2011, 11h28
  4. Réponses: 0
    Dernier message: 05/04/2011, 01h09
  5. [Kylix] Lecture sur le port série en C++
    Par MD Software dans le forum EDI
    Réponses: 1
    Dernier message: 08/05/2004, 12h52

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