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 :

liaison série


Sujet :

MFC

  1. #1
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Points : 5
    Points
    5
    Par défaut liaison série
    salut a tous.

    Je voudrais savoir comment lire des données arrivant sur un port série com1 et les stocker dans un fichier texte(pour les visualiser)

    Merci

  2. #2
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    on lit les données reçues d'un port série comme dans un fichier : avec CreateFile() puis ReadFile().
    Cela peut être très simple si tu fais du mono-directionnel et que tu sais ce que tu attends, mais cela peut devenir nettement plus compliqué si tu communiques en asynchrone...

    Il existe des composants sur CodeProject, je crois.

  3. #3
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Points : 5
    Points
    5
    Par défaut liaison serie
    Merci pour le tuyau. J'ai étudié l'API ReadFile(). En fait je cherche a recuperer les donnees arrivant d'une télécommande infrarouge a travers la liaison série. tu pourrais m'indiquer le protocole intégralement stp.
    C'est à dire : -Type de projet(MFC, API Win32 ,..... ????)
    -initialisation des handles demandés par ReadFile() , ....

    Merci encore

  4. #4
    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
    Points : 17 323
    Points
    17 323
    Par défaut Gestion Port serie
    salut ,pour les liaisons series tu peux utiliser sans pb un project mfc ou api win32 aucun pb de ce cote la .
    je te conseille neanmoins de faire un petit tour du cote de codeguru pour voir des classes de com déjà faites .
    parcque il y a quand meme des écueils :
    reglages du port serie ;:vitesse, flux ,parite ,bit de data.
    methode de reception des caracteres :
    style thread en attente d'un event sur la reception etc...
    envoye un car c'est le plus simple la reception est plus complexe.
    exemple :
    http://codeguru.earthweb.com/network/CSerialPort.html
    ou encore
    http://codeguru.earthweb.com/network/Serial_Communication.html
    qui montre l'utilisation d'un thread pour la reception.

  5. #5
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    quand au protocole de communication (l'organisation des trames échangées) ça dépend de ta télécommande : voir la doc constructeur...

  6. #6
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Points : 5
    Points
    5
    Par défaut telecommande
    J utilise la telecommande pinnacle pctv en fait. Tu sai ou trouver une doc???

  7. #7
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    bonsoir ,ta regarde sur le site de pinnacle ?

  8. #8
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Points : 5
    Points
    5
    Par défaut serie
    ouai mais g rien trouvé de spécial. Quelqu'un aurait t il trouvé quelque chose???

  9. #9
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    si la doc technique n'est pas disponible, il va te falloir faire du reverse ingeneering avec un espion de liaison série :
    Tu fais fonctionner le système à espionner et avec un autre PC tu espionnes ce qui transit sur le port série : connectes les Rx et Tx du port à espionner sur le Rx de Com1 et Rx de Com2 des ports du PC espion, et avec un terminal RS 232 quelconque tu vois les trames qui s'échange entre le PC espionné et ton système (la télécommande en l'occurrence).
    Bon courage, c'est pas évident, mais c'est rigolo à faire.

  10. #10
    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
    Points : 17 323
    Points
    17 323
    Par défaut
    ouais à mon avis t'es pas sortie de l'auberge....
    ou essaye d'envoyer un mail à un service technique ou support .

  11. #11
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Points : 5
    Points
    5
    Par défaut espion
    Avec un readfile n'est il pa possible de voir ce qui arrive sur le port série , sans se fatiguer a utiliser un autre PC et des connections.??

  12. #12
    tut
    tut est déconnecté
    Membre averti
    Avatar de tut
    Inscrit en
    Juillet 2002
    Messages
    373
    Détails du profil
    Informations forums :
    Inscription : Juillet 2002
    Messages : 373
    Points : 394
    Points
    394
    Par défaut
    c'est clair que ce que je t'ai expliqué est à utiliser en dernier recours, mais c'est faisable : je l'ai fait plusieurs fois sur du matériel industriel.
    Expliques-nous ce que tu veux fair, en détails; parce qu'il doit bien éxister des logiciels pour cette télécommande.

  13. #13
    Membre du Club Avatar de benoitB
    Profil pro
    Inscrit en
    Août 2002
    Messages
    78
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 78
    Points : 68
    Points
    68
    Par défaut voila ce que je fais :
    OUVERTURE DU PORT :
    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
     
    bool FONCTION_COM_COM1(void)
    {
    	DCB dcb;
    	BOOL fSuccess;
    	char *pcCommPort = "COM1";
    	hComm = CreateFile( pcCommPort,
    		GENERIC_READ | GENERIC_WRITE,
    		0,
    		NULL,
    		OPEN_EXISTING,
    		0,
    		NULL);
    	if (hComm == INVALID_HANDLE_VALUE)
    		return false;
    	fSuccess = GetCommState(hComm, &dcb);
    	if (!fSuccess)
    		return false;
    	dcb.BaudRate    = 9600;
    	dcb.ByteSize    = 8;
    	dcb.Parity      = NOPARITY;
    	dcb.StopBits    = ONESTOPBIT;
    	fSuccess = SetCommState(hComm, &dcb);
    	if (!fSuccess)
    		return false;
    	return true;
    }
    LECTURE DU PORT :
    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
     
    bool FONCTION_COM_ClearError(void)
    {
    	DWORD   ErrorMask;
    	COMSTAT comstat;
    	DWORD   NumberOfBytesToRead;
    	DWORD   NumberOfBytesRead;
    	if( ClearCommError(hComm, &ErrorMask, &comstat) != 0 )
    	{
    		if( unsignedint_Position >= 5100 )
    			unsignedint_Position = 0;
    		NumberOfBytesToRead = comstat.cbInQue;
    		if( NumberOfBytesToRead )
    		{
    			ReadFile(hComm, pc_Buffer, NumberOfBytesToRead, &NumberOfBytesRead, NULL);
    			for( unsigned int ui_=0 ; ui_<NumberOfBytesRead ; ui_++ )
    				pc_Trame[unsignedint_Position++] = pc_Buffer[ui_];
    			pc_Trame[unsignedint_Position] = '\0';
    		}
    	}
    	if( pc_Trame[unsignedint_Position - 1] == __ETX )
    	{
    		bool_Trame = true;
    	}
    	return bool_Trame;
    }
    La trame reçue est dans pc_Trame
    bool_Trame me permet de savoir si cette dernière est entière (son dernier caractère vaut __ETX chz moi). Il faut donc traiter le contenu de la chaîne de caractères pc_Trame (char* pc_Trame)

    FERMETURE DU PORT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void FONCTION_CLOSE(void)
    {
    	CloseHandle(hComm);
    }

  14. #14
    Futur Membre du Club
    Inscrit en
    Juillet 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juillet 2003
    Messages : 24
    Points : 5
    Points
    5
    Par défaut
    merci je vai voir ca

Discussions similaires

  1. Optimisation sur liaison série
    Par clem1313 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 05/03/2006, 18h02
  2. liaison Série avec kernell32
    Par Emcy dans le forum Windows
    Réponses: 8
    Dernier message: 31/08/2005, 09h58
  3. Réponses: 7
    Dernier message: 21/06/2005, 17h56
  4. [Debutant(e)] Liaison série RS232 et servlet
    Par bourack dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 07/01/2005, 15h50
  5. Réponses: 29
    Dernier message: 11/05/2004, 14h18

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