Port serie sous c++
Répondre à la discussion
Affichage des résultats 1 à 19 sur 19

Port serie sous c++



  1. #1
    bypbop

    Port serie sous c++


    ------

    Bonjour à tous je suis debutant en C++ pour l'instant je n'ai fait que des application console je developpe sous visual studio 2005

    Voila je voudrais envoyer en mode console des infos sur le port com mais je ne trouve que des codes à rallonge et je n'y comprends rien pour l'instant

    Est que qq'un pourrait m'aider sur le sujet c'est pour un projet robotique je developpe un petit robot et j'ai une liason serie entre mon pc et mon robot.

    Cordialement,
    bypbop

    -----

  2. #2
    Jack
    Modérateur

    Re : Port serie sous c++

    Bonsoir,

    avec Visual studio, j'utilise la classe LSerie que tu pourras trouver ici.

    A+

  3. #3
    bypbop

    Re : Port serie sous c++

    Bonjour Jack et merci de ta réponse.

    Voila j'ai telecharger les deux fichiers je les ai mos dans mon dossier de projet avec mon testcom4.cpp qui est mon fichier main.
    Par contre je ne sais pas comment je dois ajouter cette classe dans visual c++ car c'est la première fois que j'utilise une class.


    Voila mon testcom4.cpp
    #include <stdafx.h>

    void main(void)
    {
    printf ("test");
    com = new LSerie();
    // Tentative d'ouverture du port COM2 à une vitesse de 9600 bauds (8bit, 1bit de stop et pas de parité).
    if( !com->open(2, 9600) )
    {
    printf ("erreur");
    return;
    }
    // Envois d'une chaine de caractères:
    std::string stdString("Message à transmettre");
    if( com->sendData(&stdString) < 0 )
    {
    printf ("ok");
    return;
    }


    }
    Peux tu m'expliquer comment je dois proceder ?

    Cordialement,
    bypbop

  4. #4
    Jack
    Modérateur

    Re : Port serie sous c++

    Dans l'explorateur de solution, clic droit sur "fichiers sources"->Ajouter-->élément existant->Lserie.cpp
    Idem pour ajouter LSerie.h dans les fichiers d'entête

    Dans testcom4.cpp, ne pas oublier #include "LSerie.h" pour pouvoir utiliser la classe.

    N'oublie pas non plus de déclarer ta variable com.

    A+

  5. A voir en vidéo sur Futura
  6. #5
    bypbop

    Re : Port serie sous c++

    Bonsoir Jack,

    Voila j'ai fait ce que tu m'as dis j'ai ajouter directement les deux fichiers dans mon repertoire d'application puis ensuite

    Fichier source > ajouter un element lserie.cpp ensuite fichier d'entete > LSerie.h

    sauf declarer ma variable com car je ne sais pas en quoi je dois la declarer mais j'ai qd mm des erreurs par centaine qd je compile

    Erreur 1 error C2061: erreur de syntaxe*: identificateur 'DWORD' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 23
    Erreur 2 error C2061: erreur de syntaxe*: identificateur 'DWORD' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 24
    Erreur 3 error C2061: erreur de syntaxe*: identificateur 'DWORD' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 27
    Erreur 4 error C2061: erreur de syntaxe*: identificateur 'DWORD' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 29
    Erreur 5 error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'hcom' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 44
    Erreur 6 error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 44
    Erreur 7 error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 44
    Erreur 8 error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'ct' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 45
    Erreur 9 error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 45
    Erreur 10 error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 45
    Erreur 11 error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'dcb' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 46
    Erreur 12 error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 46
    Erreur 13 error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 46
    Erreur 14 error C2065: 'com'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\testcom 1.cpp 7
    Erreur 15 error C2227: la partie gauche de '->open' doit pointer vers un type class/struct/union/générique c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\testcom 1.cpp 9
    Erreur 16 error C2227: la partie gauche de '->sendData' doit pointer vers un type class/struct/union/générique c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\testcom 1.cpp 16
    Erreur 17 error C2061: erreur de syntaxe*: identificateur 'DWORD' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 23
    Erreur 18 error C2061: erreur de syntaxe*: identificateur 'DWORD' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 24
    Erreur 19 error C2061: erreur de syntaxe*: identificateur 'DWORD' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 27
    Erreur 20 error C2061: erreur de syntaxe*: identificateur 'DWORD' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 29
    Erreur 21 error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'hcom' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 44
    Erreur 22 error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 44
    Erreur 23 error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 44
    Erreur 24 error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'ct' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 45
    Erreur 25 error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 45
    Erreur 26 error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 45
    Erreur 27 error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'dcb' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 46
    Erreur 28 error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 46
    Erreur 29 error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque*: C++ ne prend pas en charge int par défaut c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. h 46
    Erreur 30 error C2065: 'hcom'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 15
    Erreur 31 error C2065: 'GENERIC_READ'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 65
    Erreur 32 error C2065: 'GENERIC_WRITE'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 65
    Erreur 33 error C2065: 'OPEN_EXISTING'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 65
    Erreur 34 error C3861: 'CreateFile'*: identificateur introuvable c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 65
    Erreur 35 error C2065: 'INVALID_HANDLE_VALUE'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 66
    Erreur 36 error C2660: 'LSerie::setTimeOut'*: la fonction ne prend pas 1 arguments c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 70
    Erreur 37 error C3861: 'SetupComm'*: identificateur introuvable c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 73
    Erreur 38 error C2065: 'dcb'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 77
    Erreur 39 error C3861: 'GetCommState'*: identificateur introuvable c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 77
    Erreur 40 error C2228: la partie gauche de '.BaudRate' doit avoir un class/struct/union c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 81
    Erreur 41 error C2228: la partie gauche de '.ByteSize' doit avoir un class/struct/union c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 84
    Erreur 42 error C2228: la partie gauche de '.StopBits' doit avoir un class/struct/union c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 88
    Erreur 43 error C2065: 'ONESTOPBIT'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 88
    Erreur 44 error C2228: la partie gauche de '.StopBits' doit avoir un class/struct/union c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 90
    Erreur 45 error C2065: 'ONE5STOPBITS'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 90
    Erreur 46 error C2228: la partie gauche de '.StopBits' doit avoir un class/struct/union c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 92
    Erreur 47 error C2065: 'TWOSTOPBITS'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 92
    Erreur 48 error C2228: la partie gauche de '.Parity' doit avoir un class/struct/union c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 96
    Erreur 49 error C2065: 'NOPARITY'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 96
    Erreur 50 error C2228: la partie gauche de '.Parity' doit avoir un class/struct/union c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 98
    Erreur 51 error C2065: 'ODDPARITY'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 98


    Y a t'il qqchose que j'ai mal fait ?

    Encore merci de ton aide
    Cordialement,
    bypbop

  7. #6
    bypbop

    Re : Port serie sous c++

    La suite des erreurs :

    Erreur 52 error C2228: la partie gauche de '.Parity' doit avoir un class/struct/union c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 100
    Erreur 53 error C2065: 'EVENPARITY'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 100
    Erreur 54 error C3861: 'SetCommState'*: identificateur introuvable c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 103
    Erreur 55 error C3861: 'CloseHandle'*: identificateur introuvable c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 127
    Erreur 56 error C2065: 'DWORD'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 142
    Erreur 57 error C2146: erreur de syntaxe*: absence de ')' avant l'identificateur 'ms' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 142
    Erreur 58 error C2761: 'bool LSerie::setTimeOut(void)'*: redéclaration de la fonction membre non autorisée c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 142
    Erreur 59 error C2059: erreur de syntaxe*: ')' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 142
    Erreur 60 error C2143: erreur de syntaxe*: absence de ';' avant '{' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 143
    Erreur 61 error C2447: '{'*: en-tête de fonction manquant (liste formelle à l'ancien format*?) c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 143
    Erreur 62 error C2146: erreur de syntaxe*: absence de ')' avant l'identificateur 'baudrate' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 172
    Erreur 63 error C2761: 'bool LSerie::setSpeed(void)'*: redéclaration de la fonction membre non autorisée c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 172
    Erreur 64 error C2059: erreur de syntaxe*: ')' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 172
    Erreur 65 error C2143: erreur de syntaxe*: absence de ';' avant '{' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 173
    Erreur 66 error C2447: '{'*: en-tête de fonction manquant (liste formelle à l'ancien format*?) c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 173
    Erreur 67 error C2146: erreur de syntaxe*: absence de ')' avant l'identificateur 'data' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 212
    Erreur 68 error C2059: erreur de syntaxe*: ')' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 212
    Erreur 69 error C2146: erreur de syntaxe*: absence de ')' avant l'identificateur 'lg' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 225
    Erreur 70 error C2761: 'sendData'*: redéclaration de la fonction membre non autorisée c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 225
    Erreur 71 error C2059: erreur de syntaxe*: ')' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 225
    Erreur 72 error C2143: erreur de syntaxe*: absence de ';' avant '{' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 226
    Erreur 73 error C2447: '{'*: en-tête de fonction manquant (liste formelle à l'ancien format*?) c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 226
    Erreur 74 error C2065: 'LPBYTE'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 274
    Erreur 75 error C2146: erreur de syntaxe*: absence de ')' avant l'identificateur 'buffer' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 274
    Erreur 76 error C2059: erreur de syntaxe*: ')' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 274
    Erreur 77 error C2146: erreur de syntaxe*: absence de ')' avant l'identificateur 'lg' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 289
    Erreur 78 error C2761: 'receiveData'*: redéclaration de la fonction membre non autorisée c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 289
    Erreur 79 error C2059: erreur de syntaxe*: ')' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 289
    Erreur 80 error C2143: erreur de syntaxe*: absence de ';' avant '{' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 290
    Erreur 81 error C2447: '{'*: en-tête de fonction manquant (liste formelle à l'ancien format*?) c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 290
    Erreur 82 error C2065: 'SETRTS'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 321
    Erreur 83 error C2065: 'TRUE'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 321
    Erreur 84 error C3861: 'EscapeCommFunction'*: identificateur introuvable c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 321
    Erreur 85 error C2065: 'CLRRTS'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 326
    Erreur 86 error C3861: 'EscapeCommFunction'*: identificateur introuvable c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 326
    Erreur 87 error C2065: 'SETBREAK'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 340
    Erreur 88 error C3861: 'EscapeCommFunction'*: identificateur introuvable c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 340
    Erreur 89 error C2065: 'CLRBREAK'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 345
    Erreur 90 error C3861: 'EscapeCommFunction'*: identificateur introuvable c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 345
    Erreur 91 error C2065: 'SETDTR'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 359
    Erreur 92 error C3861: 'EscapeCommFunction'*: identificateur introuvable c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 359
    Erreur 93 error C2065: 'CLRDTR'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 364
    Erreur 94 error C3861: 'EscapeCommFunction'*: identificateur introuvable c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 364
    Erreur 95 error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'result' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 375
    Erreur 96 error C2065: 'result'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 375
    Erreur 97 error C3861: 'GetCommModemStatus'*: identificateur introuvable c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 376
    Erreur 98 error C2065: 'MS_CTS_ON'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 377
    Erreur 99 error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'result' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 386
    Erreur 100 error C3861: 'GetCommModemStatus'*: identificateur introuvable c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 387
    Erreur 101 error C2065: 'MS_DSR_ON'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 388
    Erreur 102 error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'result' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 397
    Erreur 103 error C3861: 'GetCommModemStatus'*: identificateur introuvable c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 398
    Erreur 104 error C2065: 'MS_RING_ON'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 399
    Erreur 105 error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'result' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 409
    Erreur 106 error C3861: 'GetCommModemStatus'*: identificateur introuvable c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 410
    Erreur 107 error C2065: 'MS_RLSD_ON'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 411
    Erreur 108 error C2065: 'LPVOID'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 422
    Erreur 109 error C2146: erreur de syntaxe*: absence de ';' avant l'identificateur 'lpMsgBuf' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 422
    Erreur 110 error C2065: 'lpMsgBuf'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 422
    Erreur 111 error C2065: 'FORMAT_MESSAGE_ALLOCATE_BUFFE R'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 425
    Erreur 112 error C2065: 'FORMAT_MESSAGE_FROM_SYSTEM'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 425
    Erreur 113 error C2065: 'FORMAT_MESSAGE_IGNORE_INSERTS '*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 425
    Erreur 114 error C2065: 'LANG_NEUTRAL'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 427
    Erreur 115 error C2065: 'SUBLANG_DEFAULT'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 427
    Erreur 116 error C2065: 'LPTSTR'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 428
    Erreur 117 error C3861: 'FormatMessage'*: identificateur introuvable c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 425
    Erreur 118 error C3861: 'GetLastError'*: identificateur introuvable c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 426
    Erreur 119 error C3861: 'MAKELANGID'*: identificateur introuvable c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 427
    Erreur 120 error C2065: 'LPCTSTR'*: identificateur non déclaré c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 430
    Erreur 121 error C2146: erreur de syntaxe*: absence de ')' avant l'identificateur 'lpMsgBuf' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 430
    Erreur 122 error C2059: erreur de syntaxe*: ')' c:\documents and settings\administrateur\bureau \c++\testcom1\testcom1\lserie. cpp 430

    Cordialement,
    bypbop

  8. #7
    Jack
    Modérateur

    Re : Port serie sous c++

    Si tu vas en ligne 23 de LSerie.h et que tu fais un clic droit sur DWORD, puis atteindre la définition, ça donne quoi?

    A+

  9. #8
    bypbop

    Re : Port serie sous c++

    Re,

    Alors j'ai un nouvelle onglet qui s'ouvre avec windef.h et il va à la ligne 151

    typedef unsigned long DWORD;


    Cordialement,
    bypbop

  10. #9
    Jack
    Modérateur

    Re : Port serie sous c++

    C'est quand même curieux. Apparemment c'est bien une version complète de visual studio que tu as, pas une version express.

    Tu peux me zipper ton projet et le placer en PJ. Je veux bien essayer. J'ai VS2008 et 2010 mais il ne doit pas y avoir de différence significative avec VS2005 pour la gestion de cette classe.

    sauf declarer ma variable com car je ne sais pas en quoi je dois la declarer
    Quand tu écris:
    Code:
    com = new LSerie();
    Il faut bien que com ait été déclarée au préalable. En C ou C++, on ne peut pas utiliser une variable qui n'a pas été déclarée.

    Il faut donc initialiser com:
    Code:
    LSerie* com
    Tu peux d'ailleurs faire tout çà d'un coup:
    Code:
    LSerie* com = new LSerie();

  11. #10
    bypbop

    Re : Port serie sous c++

    Re, la Voila

    Lien supprimé

    Directement sur mon pc car ca depasse la limite de taille

    Cordialement,
    bypbop
    Dernière modification par Jack ; 16/11/2011 à 23h17.

  12. #11
    JPL
    Responsable des forums

    Re : Port serie sous c++

    Peut-être serait-il prudent de détruire le lien quand Jack aura récupéré le zip ?
    Rien ne sert de penser, il faut réfléchir avant - Pierre Dac

  13. #12
    bypbop

    Re : Port serie sous c++

    enfin j'ai dis mon pc mais en fait j'ai un petit nas synology chez moi mais je vais le retirer effectivement juste aprés ...

    Cordialement,
    bypbop

  14. #13
    Jack
    Modérateur

    Re : Port serie sous c++

    C'est fait

    Je supprime le lien.

    Finalement, les fichiers sources suffisaient. Si tu veux, et afin d'associer plus de participants, tu peux les mettre en PJ

    A+
    Dernière modification par Jack ; 16/11/2011 à 23h20.

  15. #14
    bypbop

    Re : Port serie sous c++

    Ahh dslé j'ai pas fait attention les voila En PJ
    Fichiers attachés Fichiers attachés

  16. #15
    Jack
    Modérateur

    Re : Port serie sous c++

    Il y a effectivement pas mal d'erreurs à la compil. J'ai déjà adapté cette classe à VC, mais je ne retrouve plus le projet. Je suis un peu à la bourre et j'ai assez peu de temps en ce moment. J'essaie de regarder ça en détail dès que possible, au plus tard ce week-end.

    A+
    Dernière modification par Jack ; 16/11/2011 à 23h37.

  17. #16
    bypbop

    Re : Port serie sous c++

    Merci bcp Jack c'est pas urgent si tu trouves une methode un peu plus simple pour utiliser le port com je suis preneur aussi

    Bonne soirée

    Cordialement,
    bypbop

  18. #17
    Jack
    Modérateur

    Re : Port serie sous c++

    C'est bon, je viens de trouver un peu de temps et ça compile sans erreur maintenant. Le problème principal venait du type des caractères gérés, ANSI ou ISO. Il y avait donc un problème de nom de fichier, en l'occurrence "COM1", avec la fonction createFile(). Explication ici:
    http://msdn.microsoft.com/en-us/libr...=vs.85%29.aspx

    1ère modif (en gras):
    Code:
        //--- 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;
    2ème modif:
    Code:
    string LSerie::getErrorMsg()
    {
        LPVOID lpMsgBuf;
        string sErreur = "";
    
        if ( FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS,
                                NULL, GetLastError(),
                                MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language
                                (LPTSTR) &lpMsgBuf, 0, NULL ))
        {
            sErreur.assign((LPCSTR)lpMsgBuf);
        }
    
        return sErreur;
    }
    Et dans ton programme principal, comme je l'ai signalé précédemment:
    Code:
    printf ("test");
    LSerie *com = new LSerie();
    // Tentative d'ouverture du port COM2 à une vitesse de 9600 bauds (8bit, 1bit de stop et pas de parité).
    A+
    Dernière modification par Jack ; 20/11/2011 à 23h32.

  19. #18
    bypbop

    Re : Port serie sous c++

    Bonjour Jack, ca ne marche pas chez moi pourtant j'ai fait toute les modifications que tu m'as dit.

    alors j'ai trouvé un autre exemple qui fonctionne bien et un peu plus simple pour moi

    Code:
    /******************************************************************************
      TestCOM.c :
      
       fonctions de base pour l'envoi et la réception de donner sur un port
       série RS232.
    ******************************************************************************/
    
    #include <windows.h>
    #include <stdio.h>
    #include <stdlib.h>
    #include <conio.h>
    
    /*=============================================================================
      Définition de constantes
    =============================================================================*/
    #define RX_SIZE         4096    /* taille tampon d'entrée  */
    #define TX_SIZE         4096    /* taille tampon de sortie */
    #define MAX_WAIT_READ   5000    /* temps max d'attente pour lecture (en ms) */
    
    
    /*=============================================================================
      Variables globales.
    =============================================================================*/
    
    /* Handle du port COM ouvert */
    HANDLE g_hCOM = NULL;
    
    /* Délais d'attente sur le port COM */
    COMMTIMEOUTS g_cto =
    {
        MAX_WAIT_READ,  /* ReadIntervalTimeOut          */
        0,              /* ReadTotalTimeOutMultiplier   */
        MAX_WAIT_READ,  /* ReadTotalTimeOutConstant     */
        0,              /* WriteTotalTimeOutMultiplier  */
        0               /* WriteTotalTimeOutConstant    */
    };
    
    /* Configuration du port COM */
    DCB g_dcb =
    {
        sizeof(DCB),        /* DCBlength            */
        9600,               /* BaudRate             */
        TRUE,               /* fBinary              */
        FALSE,              /* fParity              */
        FALSE,              /* fOutxCtsFlow         */
        FALSE,              /* fOutxDsrFlow         */
        DTR_CONTROL_ENABLE, /* fDtrControl          */
        FALSE,              /* fDsrSensitivity      */
        FALSE,              /* fTXContinueOnXoff    */
        FALSE,              /* fOutX                */
        FALSE,              /* fInX                 */
        FALSE,              /* fErrorChar           */
        FALSE,              /* fNull                */
        RTS_CONTROL_ENABLE, /* fRtsControl          */
        FALSE,              /* fAbortOnError        */
        0,                  /* fDummy2              */
        0,                  /* wReserved            */
        0x100,              /* XonLim               */
        0x100,              /* XoffLim              */
        8,                  /* ByteSize             */
        NOPARITY,           /* Parity               */
        ONESTOPBIT,         /* StopBits             */
        0x11,               /* XonChar              */
        0x13,               /* XoffChar             */
        '?',                /* ErrorChar            */
        0x1A,               /* EofChar              */
        0x10                /* EvtChar              */
    };
    
    /*=============================================================================
      Fonctions du module.
    =============================================================================*/
    BOOL OpenCOM    (int nId);
    BOOL CloseCOM   ();
    BOOL ReadCOM    (void* buffer, int nBytesToRead, int* pBytesRead);
    BOOL WriteCOM   (void* buffer, int nBytesToWrite, int* pBytesWritten);
    
    /******************************************************************************
      main : point d'entrée du programme.
    ******************************************************************************/
    int main()
    {
        /* variables locales */
        char buffer[256];
        int nId, nChoice, nBytesWritten, nBytesRead;
    
        /* demande du numéro du port COM */
        printf("Entrez le numero du port COM : ");
        scanf("%d", &nId);
    
        /* tentative d'ouverture */
        printf("Ouverture et configuration du port COM%d...\r\n", nId);
        if(!OpenCOM(nId)) return -1;
        printf("...OK\r\n");
    
        /* boucle tant que l'on ne quitte pas */
        do
        {
            /* menu */
            printf("\r\n");
            printf("1 : Envoyer des donnees.\r\n");
            printf("2 : Recevoir des donnees.\r\n");
            printf("3 : Quitter.\r\n");
            printf("Choix : ");
            scanf("%d", &nChoice);
    
            /* enoyer des données */
            if(nChoice == 1)
            {
                printf("\r\n");
                printf("Donnees a envoyer :\r\n");
                fflush(stdin);
                gets(buffer);
                printf("\r\n");
                printf("Envoi des donnees...\r\n");
                if(WriteCOM(buffer, strlen(buffer), &nBytesWritten))
                    printf("%d octet(s) envoye(s).\r\n", nBytesWritten);
                else
                    printf("Erreur lors de l'envoi.\r\n");
            }
    
            /* recevoir des données */
            if(nChoice == 2)
            {
                printf("\r\n");
                printf("Reception de donnees...\r\n");
                if(ReadCOM(buffer, sizeof(buffer)-1, &nBytesRead))
                {
                    buffer[nBytesRead] = '\0';
                    printf("%d octet(s) recu(s) :\r\n%s\r\n", nBytesRead, buffer);
                }
                else
                    printf("Erreur lors de la réception.\r\n");
            }
        }while(nChoice != 3);
    
        /* fermeture du port COM et retour */
        CloseCOM();
        return 0;
    }
    
    /******************************************************************************
      OpenCOM : ouverture et configuration du port COM.
      entrée : nId : Id du port COM à ouvrir.
      retour : vrai si l'opération a réussi, faux sinon.
    ******************************************************************************/
    BOOL OpenCOM(int nId)
    {
        /* variables locales */
        char szCOM[16];
    
        /* construction du nom du port, tentative d'ouverture */
        sprintf(szCOM, "\\\\.\\COM%d", nId); 
        g_hCOM = CreateFile(szCOM, 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%d", nId);
            return FALSE;
        }
    
        /* affectation taille des tampons d'émission et de réception */
        SetupComm(g_hCOM, RX_SIZE, TX_SIZE);
    
        /* configuration du port COM */
        if(!SetCommTimeouts(g_hCOM, &g_cto) || !SetCommState(g_hCOM, &g_dcb))
        {
            printf("Erreur lors de la configuration du port COM%d", nId);
            CloseHandle(g_hCOM);
            return FALSE;
        }
    
        /* on vide les tampons d'émission et de réception, mise à 1 DTR */
        PurgeComm(g_hCOM, PURGE_TXCLEAR|PURGE_RXCLEAR|PURGE_TXABORT|PURGE_RXABORT);
        EscapeCommFunction(g_hCOM, SETDTR);
        return TRUE;
    }
    
    /******************************************************************************
      CloseCOM : fermeture du port COM.
      retour : vrai si l'opération a réussi, faux sinon.
    ******************************************************************************/
    BOOL CloseCOM()
    {
        /* fermeture du port COM */
        CloseHandle(g_hCOM);
        return TRUE;
    }
    
    /******************************************************************************
      ReadCOM : lecture de données sur le port COM.
      entrée : buffer       : buffer où mettre les données lues.
               nBytesToRead : nombre max d'octets à lire.
               pBytesRead   : variable qui va recevoir le nombre d'octets lus.
      retour : vrai si l'opération a réussi, faux sinon.
    -------------------------------------------------------------------------------
      Remarques : - la constante MAX_WAIT_READ utilisée dans la structure
                    COMMTIMEOUTS permet de limiter le temps d'attente si aucun
                    caractères n'est présent dans le tampon d'entrée.
                  - la fonction peut donc retourner vrai sans avoir lu de données.
    ******************************************************************************/
    BOOL ReadCOM(void* buffer, int nBytesToRead, int* pBytesRead)
    {
        return ReadFile(g_hCOM, buffer, nBytesToRead, pBytesRead, NULL);
    }
    
    /******************************************************************************
      WriteCOM : envoi de données sur le port COM.
      entrée : buffer        : buffer avec les données à envoyer.
               nBytesToWrite : nombre d'octets à envoyer.
               pBytesWritten : variable qui va recevoir le nombre d'octets
                               envoyés.
      retour : vrai si l'opération a réussi, faux sinon.
    ******************************************************************************/
    BOOL WriteCOM(void* buffer, int nBytesToWrite, int* pBytesWritten)
    {
        /* écriture sur le port */
        return WriteFile(g_hCOM, buffer, nBytesToWrite, pBytesWritten, NULL);
    }
    avec ca je vais savoir me debrouiller encore merci pour ton aide


    Cordialement,
    bypbop
    Dernière modification par JPL ; 21/11/2011 à 21h45. Motif: REmplacement de la balise Quote par la balise Code pour garder les indentations

  20. #19
    Jack
    Modérateur

    Re : Port serie sous c++

    Si cela fonctionne et que ça répond à tes besoin, c’est le principal.

    A+

Discussions similaires

  1. Relier un interrupteur sur port parallèle (ou port série)
    Par invitedc8ebe95 dans le forum Électronique
    Réponses: 11
    Dernier message: 04/02/2013, 10h20
  2. Programmation port série en c sous linux
    Par invite6ae216d1 dans le forum Programmation et langages, Algorithmique
    Réponses: 2
    Dernier message: 16/08/2011, 12h55
  3. port série # sous visual studio 2010
    Par invite74119562 dans le forum Logiciel - Software - Open Source
    Réponses: 1
    Dernier message: 09/03/2010, 23h42
  4. convertiseur port RS485/port serie
    Par invitedae5fd2a dans le forum Électronique
    Réponses: 0
    Dernier message: 17/01/2010, 14h47
  5. Port serie/USB ===> port paralléle
    Par invited60b6f1f dans le forum Matériel - Hardware
    Réponses: 3
    Dernier message: 07/11/2007, 20h52