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 :

lecture port série


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2002
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 27
    Par défaut lecture port série
    Bonjour je n'arrive pas à lire le port serie de mon pc voila le code

    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
    29
    30
    31
    32
     
    		// Variable de communication
    	HANDLE v_h_Comm;
    	CString v_str_PortName = "//./COM1";	
    	DWORD v_lp ;
    	DCB v_dcb;
    	BOOL v_b_fSuccess;
    	char v_str_Trame[MAX];
    	char *v_pstr_Temp = v_str_Trame;
    	char v_str_Transmit[MAX];
    	char v_str_Retour[1];
     
    		//========== Ouverture du Port série ====================================================
    	v_h_Comm = CreateFile(v_str_PortName,GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
    	v_b_fSuccess = GetCommState(v_h_Comm,&v_dcb);
    	v_dcb.BaudRate = 9600;
    	v_dcb.ByteSize = 8;
    	v_dcb.Parity  = EVENPARITY;
    	v_dcb.StopBits = TWOSTOPBITS;
    	v_b_fSuccess = SetCommState(v_h_Comm, &v_dcb);
    	LPSTR e_str_Dest = "Dest";
    	LPSTR e_str_Message = "toto";
    	OVERLAPPED m_Ov;
     
    		//Lecture du port
     
     
     
    			BOOL etat = ReadFile(v_h_Comm,&v_str_Retour,3,&v_lp,&m_Ov);
     
     
    			CloseHandle(v_h_Comm);

  2. #2
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Phrase sans ponctuation, code non-compilable...

    Et aucune vérification intermédiaire (aucun contrôle sur v_h_Comm, v_bSuccess, etc.)
    De plus, pourquoi une OVERLAPPED dans le ReadFile() ? Tu vois un FILE_FLAG_OVERLAPPED dans ton CreateFile() ?
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  3. #3
    Membre averti
    Inscrit en
    Mars 2002
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 27
    Par défaut
    bah je n'ai pas mis tout le code, mais avant j'ecris sur le port et ça se passe bien donc v_h_Comm, v_bSuccess sont bons.
    Pour le OVERLAPPED c'est que j'ai repris un ancien code qui étais comme ça et qui fonctionne.

  4. #4
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Comme tu peux le voir, ça ne fonctionne pas ici.

    Soit tu fait TOUT en overlapped, soit tu ne fais RIEN en overlapped.
    Windows n'offre pas la possibilité de faire CERTAINES lectures en overlapped et pas d'autres.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

  5. #5
    Membre averti
    Inscrit en
    Mars 2002
    Messages
    27
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 27
    Par défaut
    voila mon nouveau code
    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
    29
    30
    31
    // Variable de communication
    	HANDLE v_h_Comm;
    	CString v_str_PortName = "//./COM1";	
    	DWORD v_lp ;
    	DCB v_dcb;
    	BOOL v_b_fSuccess;
    	char v_str_Trame[MAX];
    	char *v_pstr_Temp = v_str_Trame;
    	char v_str_Transmit[MAX];
    	char v_str_Retour[1];
     
    		//========== Ouverture du Port série ====================================================
    	v_h_Comm = CreateFile(v_str_PortName,GENERIC_WRITE,0,0,OPEN_EXISTING,0,0);
    	v_b_fSuccess = GetCommState(v_h_Comm,&v_dcb);
    	v_dcb.BaudRate = 9600;
    	v_dcb.ByteSize = 8;
    	v_dcb.Parity  = EVENPARITY;
    	v_dcb.StopBits = TWOSTOPBITS;
    	v_b_fSuccess = SetCommState(v_h_Comm, &v_dcb);
    	LPSTR e_str_Dest = "Dest";
    	LPSTR e_str_Message = "toto";
     
     
    		//Lecture du port
     
     
     
    			BOOL etat = ReadFile(v_h_Comm,&v_str_Retour,3,&v_lp,NULL);
     
     
    			CloseHandle(v_h_Comm);
    tu me croiras ou pas mais ça ne marche pas

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    On est d'accord, le problème, c'est bien que ReadFile() renvoit FALSE ?
    Erreurs que j'ai vues dans ton code:
    1. Tu ouvres le port sans demander un accès en lecture. <-- Le problème est sans doute ici
    2. Tes LPSTR devraient être des LPCSTR.
    3. v_str_Retour fait 1 caractère, et tu cherches à en lire 3.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

Discussions similaires

  1. lecture port série
    Par moustiqu3 dans le forum C#
    Réponses: 29
    Dernier message: 13/04/2010, 23h19
  2. Lecture port série
    Par mickael.be dans le forum Composants VCL
    Réponses: 2
    Dernier message: 19/07/2008, 09h49
  3. lecture port série
    Par alex2395 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/03/2007, 15h59
  4. [API Win32 sans MFC] Lecture port série: thread bloqué
    Par dacid dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 24/05/2006, 13h34
  5. Pb de lecture port série
    Par amalis dans le forum Bibliothèques tierces
    Réponses: 1
    Dernier message: 18/03/2006, 16h21

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