Bonjour, cliquez-ici pour vous inscrire et participer au forum.
  • Login:



+ Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

Liaison série en C

  1. Francois06

    Date d'inscription
    avril 2012
    Messages
    27

    Liaison série en C

    Bonjour,
    Je souhaite établir une liaison série entre un microcontrôleur et le PC. N'ayant plus de port USB sur PC, j'utilise un câble, USB->DB9. Je l'ai branché et ai installé le driver fourni avec. Très bien, le port COM3 est reconnu par le PC. J'ouvre un hyperterminal sur COM3, je relie la broche RX et TX pour tester la bonne fonctionnalité du port, et en effet quand je tape au clavier dans l'hyperterminal, les données me sont renvoyées. Donc jusque là tout va bien, niveau hardware tout est en place.
    Maintenant je m'attaque au programme en C et j'utilise simplement le bout de code suivant sous Visual C++ pour initialiser le port :

    HANDLE g_hCOM = NULL;

    /* construction du nom du port, tentative d'ouverture */
    g_hCOM = CreateFile("COM3", GENERIC_READ|GENERIC_WRITE, 0, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_SYSTEM, NULL);
    if(g_hCOM == INVALID_HANDLE_VALUE)
    {
    printf("Erreur lors de l'ouverture du port COM\n");
    }

    Seulement la console me renvoie le message d'erreur et donc la fonction n'aboutit pas
    Quelqu'un saurait-il de quoi il s'agit ?
    Merci d'avance.
     


    • Publicité



  2. Jack

    Date d'inscription
    avril 2003
    Localisation
    Metz
    Messages
    12 162

    Re : Liaison série en C

    Hyperterminal est-il bien fermé?

    A+
     

  3. Francois06

    Date d'inscription
    avril 2012
    Messages
    27

    Re : Liaison série en C

    Oui oui l'hyperterminal est bien fermé :/
     

  4. Francois06

    Date d'inscription
    avril 2012
    Messages
    27

    Re : Liaison série en C

    Je précise que lorsque je mets un GetLastError() l'erreur retournée est l'erreur 2 qui signifie ERROR_FILE_NOT_FOUND
     

  5. Francois06

    Date d'inscription
    avril 2012
    Messages
    27

    Re : Liaison série en C

    OK parfait je viens de trouver !
    Il faut écrire en réalité :

    g_hCOM = CreateFile(TEXT("COM3"), GENERIC_READ|GENERIC_WRITE, 0, NULL,OPEN_EXISTING, 0, NULL);

    Il ne faut pas oublier de faire le cast TEXT. Apparemment le problème ne se posait pas avant puisque dans tous les exemples que j'ai pu trouver sur le net, ce cast n'était pas nécessaire. Ça doit peut-être venir des dernières versions de windows ou de Visual C++.
    Avis aux prochains qui tomberont sur ce problème ^^
     


    • Publicité



  6. Jack

    Date d'inscription
    avril 2003
    Localisation
    Metz
    Messages
    12 162

    Re : Liaison série en C

    Ah, j'arrive trop tard puisque tu as trouvé. Tant mieux finalement.

    Je voulais dire que ça pouvait effectivement venir du nom du port.
    Ça doit peut-être venir des dernières versions de windows ou de Visual C++.
    Ca vient en fait du type de caractère utilisé. Pour Visual studio, dans mes programmes je mets:
    Code:
        char buf[10] = "COM1";
    // ...
        //--- Ouverture du port série en lecture / écriture.
        hcom=CreateFileA((LPCSTR)buf, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING , 0, 0);
        if (hcom==0 || hcom==INVALID_HANDLE_VALUE)
            return false;
    Avec C++ builder, c'est:
    Code:
        char buf[] = "COM1";
    //...
    
    
        //--- Ouverture du port série en lecture / écriture.
        hcom=CreateFile(buf, GENERIC_READ | GENERIC_WRITE, 0, 0, OPEN_EXISTING , 0, 0);
        if (hcom==0 || hcom==INVALID_HANDLE_VALUE)
            return false;
    Note l'utilisation de CreateFile et de CreateFileA.

    A+
    Dernière modification par Jack ; 08/05/2012 à 15h58.
     


    • Publicité




Poursuivez votre recherche :




Sur le même thème :




 

Discussions similaires

  1. Liaison ethernet via série
    Par Nathand dans le forum Électronique
    Réponses: 6
    Dernier message: 13/09/2009, 18h23
  2. liaison série et hyperterminal
    Par bonhommr dans le forum Électronique
    Réponses: 1
    Dernier message: 08/09/2009, 23h11
  3. Vitesse liaison série
    Par quentennis dans le forum Électronique
    Réponses: 32
    Dernier message: 10/06/2008, 17h07
  4. Liaison Serie
    Par ibrakanet dans le forum Électronique
    Réponses: 0
    Dernier message: 03/06/2007, 09h53
  5. PYTHON: liaison série
    Par perchman dans le forum Logiciel - Software - Open Source
    Réponses: 13
    Dernier message: 05/12/2006, 12h44