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 :

liaison série rs232 en c++


Sujet :

C++

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 37
    Points : 46
    Points
    46
    Par défaut liaison série rs232 en c++
    Bonjour,

    J'essaye de lire les données, en c++, sur une liaison série RS232 (branché sur l'usb). Mais je ne trouve pas de moyen pour le faire.
    Pour le moment j'ai ce code, mais je ne sais pas si cette librairie peut faire ce que je veux : (serial.h)
    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
    33
    34
    35
    36
    37
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <winsock.h>
    #include <mysql.h>
    #include <tchar.h>
    #include <windows.h>
    #include "Serial\Serial.h"
     
    using namespace std;
    int main()
    {
     
        printf("Plop !! \n");
     
        CSerial *serial;
        serial->Open(_T("COM3"));
        serial->Setup(CSerial::EBaud9600,CSerial::EData8,CSerial::EParNone,CSerial::EStop1);
        serial->SetupHandshaking(CSerial::EHandshakeHardware);
     
        // Read data, until there is nothing left
        DWORD dwBytesRead = 0;
        BYTE  abBuffer[100];
        do
        {
            // Read data from the COM-port
            serial->Read(abBuffer,sizeof(abBuffer),&dwBytesRead);
            if (dwBytesRead > 0)
            {
                // TODO: Process the data
            }
        }
        while (dwBytesRead == sizeof(abBuffer));
     
        serial->Close();
        return 0;//EXIT_SUCCESS;
    }

    J'arrive avec putty à acquérir les trames ( via le port COM3 ). J'aimerai au final, récupérer les trames que j'ai avec putty dans mon code c++, pour ensuite les utiliser.

    Merci !!!

  2. #2
    Membre émérite
    Avatar de imperio
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2010
    Messages
    852
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2010
    Messages : 852
    Points : 2 298
    Points
    2 298
    Par défaut
    Salut,

    Desole mais je ne connais pas serial.h comme lib. Par-contre boost a une classe qui le fait. Ou si tu preferes j'ai fait une classe c++ qui permet de lire un port COM (ou RS232) que tu peux voir ici ou encore dans les sources que j'ai poste sur developpez.com que tu peux voir ici.

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 37
    Points : 46
    Points
    46
    Par défaut
    OK, merci pour cette réponse !

    Je vais regarder ça et je vous tiens au courant.

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2011
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Vienne (Limousin)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 37
    Points : 46
    Points
    46
    Par défaut
    Ma solution trouvé en partie sur le net.

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
     
     
    #include <stdio.h>
    #include <string>
    #include "serialib/serialib.h"
     
    #if defined (_WIN32) || defined( _WIN64)
    #define         DEVICE_PORT0             "COM1"                               // COM1 for windows
    #endif
     
    #ifdef __linux__
    #define         DEVICE_PORT0             "/dev/ttyUSB0"                         // ttyUSB0 for linux
    #endif
     
    using namespace std;
     
    int main()
    {
        serialib LS;                                                            // Object of the serialib class
        int Ret;                                                                // Used for return values
        char Buffer[128];
     
        // Open serial port
     
        Ret=LS.Open(DEVICE_PORT0,9600);                                         // Open serial link at 115200 bauds
        if (Ret!=1)
        {                                                           // If an error occured...
            printf ("Error while opening port. Permission problem ?\n");        // ... display a message ...
            return Ret;                                                         // ... quit the application
        }
        printf ("Serial port opened successfully !\n");
     
        //setlocale(LC_ALL,"");
     
        while(1)
        { // Read a string from the serial device
            Ret=LS.ReadString(Buffer,'\n',128,5000);                                // Read a maximum of 128 characters with a timeout of 5 seconds
                                                                                // The final character of the string must be a line feed ('\n')
            if (Ret>0)                                                          // If a string has been read from, print the string
                printf ("String read from serial port : %s",Buffer);
            else
                printf ("TimeOut reached. No data received !\n");                   // If not, print a message.
     
        }
     
        // Close the connection with the device
        LS.Close();
     
        return 0;
    }

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

Discussions similaires

  1. Liaison série RS232, à quoi sert RTS ?
    Par ptitemeuh dans le forum Débuter
    Réponses: 24
    Dernier message: 05/08/2011, 10h22
  2. Liaison série RS232
    Par Julien.S dans le forum LabVIEW
    Réponses: 1
    Dernier message: 19/04/2011, 10h54
  3. [Javax.comm] Liaison série rs232
    Par Marou77 dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 01/04/2011, 15h00
  4. Comment capturer les données sur une liaison série RS232
    Par jef Orome dans le forum Windows Serveur
    Réponses: 3
    Dernier message: 02/04/2007, 18h14
  5. [Debutant(e)] Liaison série RS232 et servlet
    Par bourack dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 07/01/2005, 14h50

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