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

Windows Discussion :

liaison série attente de trame


Sujet :

Windows

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Mars 2006
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut liaison série attente de trame
    slt
    j'aurais voulu savoir comment faire pour attendre l'arrivée d'une trame sur le port série. Pour le moment j'utilise ReadFile en synchrone mais le prog lis directement sur le port sans attendre l'arrivée d'une trame.

  2. #2
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 19
    Points : 14
    Points
    14
    Par défaut
    Salut,

    Fait une recherche sur developpez.com, il y a des tutos qui traitent des ports série. (Si tu utilises Borland C++ Builder, il y a le composant TComPort)

    Je ne suis pas sur mais je pense que si tu passes en mode asynchrone, tu devrais resoudre ton problème en testant la broche qui indique si une donnée est présente.

    A+

  3. #3
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 704
    Points
    10 704
    Billets dans le blog
    3
    Par défaut
    ReadFile va attendre un certain temps en fonctions de comment est réglé le timeout du port série.
    http://msdn.microsoft.com/library/en-us/devio/base/setcommtimeouts.asp

  4. #4
    Membre régulier
    Inscrit en
    Février 2006
    Messages
    83
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 83
    Points : 71
    Points
    71
    Par défaut
    COMMTIMEOUTS Timeout;

    Timeout.ReadTotalTimeoutConstant=(1000*seconde);
    if(!SetCommTimeouts("handle retourner par le create file",&Timeout))

    tu met tout ca avant le readfile et c'est parti

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    j'utilise moi aussi visual C++ 6.0, et votre méthode sur les timeouts ne fonctionne pas.
    Voici mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
       COMMTIMEOUTS Timeout; 
    
    	Timeout.ReadTotalTimeoutConstant=(100); 
    	if(SetCommTimeouts(hComDevice,&Timeout))
    		return false;
    	ret= ReadFile(*hComDevice,c,1,&dwBytesReaden,NULL);
    normalement ça devrait marcher, mais mon prog reste bloqué à la façon d'une attente active. J'ai pensé à la valeur de retour, mais si je met
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     if(!SetCommTimeouts(hComDevice,&Timeout))
    ça me dit toujours que ça ne réussit pas à initialiser le timeout[/code]

  6. #6
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 704
    Points
    10 704
    Billets dans le blog
    3
    Par défaut
    Il faut initialiser correctement toute la strcuture COMMTIMEOUTS. Il y a plusieurs timeouts, lis la doc:
    http://msdn.microsoft.com/library/en-us/devio/base/commtimeouts_str.asp

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    bon, maintenant je fais cela
    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
       COMMTIMEOUTS Timeout; 
    
    	Timeout.ReadIntervalTimeout=100;    
    
    	Timeout.ReadTotalTimeoutMultiplier= 10;
    
    	Timeout.WriteTotalTimeoutMultiplier = 10;
    
    	Timeout.ReadTotalTimeoutConstant = 100;
    
    	Timeout.WriteTotalTimeoutConstant = 100;
    
    	if(SetCommTimeouts(hComDevice,&Timeout))
    		return false;
    	
    	ret= ReadFile(*hComDevice,c,1,&dwBytesReaden,NULL);
    mais j'ai toujours le même problème.
    y aurait-il une fonction pour activer les timeouts, à part SetCommTimeouts, ou pour les autoriser?
    merci d'avance

  8. #8
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    une autre question qui n'a strictement rien à voir, personne ne connaîtrais un moyen d'installer un prog fait avec visual c++ sur un pc qui en est dépourvu, histoire que mon PC arrête de communiquer avec lui même, parce qu'il finira par se sentir seul .
    @++

  9. #9
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 704
    Points
    10 704
    Billets dans le blog
    3
    Par défaut Re: liaison série attente de trame
    Citation Envoyé par Ben8585
    j'utilise ReadFile en synchrone mais le prog lis directement sur le port sans attendre l'arrivée d'une trame.
    qu'est-ce qu'il lit ? Je comprends pas comment il lit sans trame reçue.

    Pour installer un exe, si tu l'as compilé en /MT tu peux le copier directement sur l'autre PC.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    j'ai essayé le /MT, mais le compilo me dit qu'il faudrait /MDd, or quand je tape /MT, cela supprime /MDd, je ne comprends pas J'ai du mal avec les compilations à rallonge, car jusqu'à maintenant j'ai surtout codé sur des microcontrôleurs.
    Merci d'avance pour la réponse

  11. #11
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 704
    Points
    10 704
    Billets dans le blog
    3
    Par défaut
    Compile en release.
    Dans les options du projet, C/C++->génération de code, choisi /MT (release).

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    quand tu dit /MT, c'est pour MultiThread? Je suis peut être un boulet mais ça marche pas

  13. #13
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 704
    Points
    10 704
    Billets dans le blog
    3
    Par défaut
    Oui, c'est donné en parenthèse
    Multithread (/MT)
    c'est quoi qui marche pas ? Quelle est l'erreur ?

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    voici le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    c:\program files\microsoft visual studio\vc98\mfc\include\afxver_.h(130) : fatal error C1189: #error :  Please use the /MD switch for _AFXDLL builds
    Error executing cl.exe.
    mais mon soucis premier reste les timeouts qui ne marche pas et bloque le programme

  15. #15
    Expert éminent sénior

    Homme Profil pro
    pdg
    Inscrit en
    Juin 2003
    Messages
    5 753
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : pdg

    Informations forums :
    Inscription : Juin 2003
    Messages : 5 753
    Points : 10 704
    Points
    10 704
    Billets dans le blog
    3
    Par défaut
    Dans les options générales, faut utiliser les MFC/ATL en static.

Discussions similaires

  1. [Débutant] Reception de données + Attente avec une Liaison Série (VSB2010)
    Par loicb38 dans le forum VB.NET
    Réponses: 5
    Dernier message: 19/05/2015, 08h21
  2. Envoi d'une trame via liaison série
    Par Fabien50 dans le forum C++
    Réponses: 48
    Dernier message: 29/04/2009, 09h59
  3. Problème de reception de trame liaison série
    Par SylvainClip dans le forum Delphi
    Réponses: 1
    Dernier message: 15/05/2007, 11h37
  4. liaison série
    Par elodie escande dans le forum MFC
    Réponses: 13
    Dernier message: 14/01/2004, 17h57

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