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 :

[ppc] test connexion port série


Sujet :

C++

  1. #1
    Membre habitué
    Inscrit en
    Janvier 2005
    Messages
    460
    Détails du profil
    Informations personnelles :
    Âge : 38

    Informations forums :
    Inscription : Janvier 2005
    Messages : 460
    Points : 145
    Points
    145
    Par défaut [ppc] test connexion port série
    Bonjour,
    j'ai connecté 1 périphérique via port série à mon pocket pc.
    Je désire tester si il y a bien connexion.
    Ainsi je fais ceci :

    #include "stdafx.h"
    #include <windows.h>
    #include <commctrl.h>
    #include <Winbase.h>

    int _tmain(int argc, _TCHAR* argv[])
    {


    // Déclaration de notre instance pour accueillir l'accès au port série
    HANDLE hPort;

    //Nom du port série auquel on veut accéder
    LPCWSTR lpszPortName = _T("COM6:");



    //Open the serial port.
    hPort = CreateFile (
    lpszPortName, //Pointer to the name of the port
    GENERIC_READ | GENERIC_WRITE, //accès en lecture ou en écriture
    0, //Share mode
    NULL, //Pointer to the security attribute
    OPEN_EXISTING, //Cela indique que l'instance sera créée
    //à condition que le port de
    //communication demandé existe
    //et donc est connu de l'OS
    0, //Port attributes
    NULL); //Handle to port with
    //attribute to copy
    //vérification sur la création de l'instance
    if ( hPort == INVALID_HANDLE_VALUE )
    {

    }



    typedef struct _DCB { //dcb
    DWORD DCBlength; //sizeof(DCB)
    DWORD BaudRate; //current baud rate
    DWORD fBinary: 1; //binary mode, no EOF check
    DWORD fParity: 1; //enable parity checking
    DWORD fOutxCtsFlow:1; //CTS output flow control
    DWORD fOutxDsrFlow:1; //DSR output flow control
    DWORD fDtrControl:2; //DTR flow control type
    DWORD fDsrSensitivity:1; // DSR sensitivity
    DWORD fTXContinueOnXoff:1; // XOFF continues Tx
    DWORD fOutX: 1; //XON/XOFF out flow control
    DWORD fInX: 1; //XON/XOFF in flow control
    DWORD fErrorChar: 1; //enable error replacement
    DWORD fNull: 1; //enable null stripping
    DWORD fRtsControl:2; //RTS flow control
    DWORD fAbortOnError:1; //abort reads/writes on error
    DWORD fDummy2:17; //reserved
    WORD wReserved; //not currently used
    WORD XonLim; //transmit XON threshold
    WORD XoffLim; //transmit XOFF threshold
    BYTE ByteSize; //number of bits/byte, 4-8
    BYTE Parity; //0-4=no,odd,even,mark,space
    BYTE StopBits; //0,1,2 = 1, 1.5, 2
    char XonChar; //Tx and Rx XON character
    char XoffChar; //Tx and Rx XOFF character
    char ErrorChar; //error replacement character
    char EofChar; //end of input character
    char EvtChar; //received event character
    WORD wReserved1; //reserved; do not use
    } DCB;





    LPDCB PortDCB;
    //Récupération des informations enregistées du port série dans votre structure.
    GetCommState (hPort, // instance d'accès de votre port série
    PortDCB); // Structure de configuration
    // mise à jour de la structure
    PortDCB->DCBlength = sizeof (DCB);
    PortDCB->BaudRate = 9600;
    PortDCB->fBinary = TRUE;
    PortDCB->fParity = TRUE;
    PortDCB->fOutxCtsFlow = FALSE;
    PortDCB->fOutxDsrFlow = FALSE;
    PortDCB->fDtrControl = DTR_CONTROL_ENABLE;
    PortDCB->fDsrSensitivity = FALSE;
    PortDCB->fTXContinueOnXoff = TRUE;
    PortDCB->fOutX = FALSE;
    PortDCB->fInX = FALSE;
    PortDCB->fErrorChar = FALSE;
    PortDCB->fNull = FALSE;
    PortDCB->fRtsControl = RTS_CONTROL_ENABLE;
    PortDCB->fAbortOnError = FALSE;
    PortDCB->ByteSize = 8;
    PortDCB->Parity = NOPARITY;
    PortDCB->StopBits = ONESTOPBIT;
    //Renvoie des nouvelles informations dans le registre de votre port série
    if (!SetCommState (hPort, PortDCB))
    {

    }







    BYTE Byte;
    DWORD dwCommStatus; // variable de stockage pour les évènements
    DWORD dwBytesTransferred;

    //Cette fonction définit les évènements pour lesquels
    //ont va réagir par rapport à notre instance
    SetCommMask (hPort,
    EV_RXCHAR ); //ici EV_RXCHAR indique que l'on va détecter la réception
    //de données (cette entrée est de type DWORD)
    //Cette fonction est bloquante, elle va attendre
    //des événements définit par le mask et
    //Elle stockera le type d'événement qui l'aura réveillée dans une variable.
    WaitCommEvent (hPort, //instance d'accès du port série
    &dwCommStatus, //Pointeur sur la variable de stockage pour les évènements
    //Cette entrée est de type LPDWORD
    0); //pointeur sur la structure d'overlapped.
    //Ici il n'y en a pas.
    //cette entrée est de type LPOVERLAPPED

    //Cette fonction permet la lecture du buffer d'entrée du port série
    ReadFile (hPort, //Instance sur l'accès du port série
    &Byte, //Conteneur pour récupérer le byte lu
    1, //Nombre de byte à lire
    &dwBytesTransferred, //Pointer sur le nombre de byte lu, sert à
    //la gestion propre de la fonction read.
    0); //Doit être NULL pour Windows CE



    TCHAR szBuffer[20];
    swprintf (szBuffer, TEXT("Donnee lu : %c"), Byte);
    // affiche le byte lu
    MessageBox(NULL, szBuffer, TEXT("iPaqDev"), MB_OK );



    return 0;
    }
    Toutefois, rien ne s'affiche alors si quelqu'un peut m'aider

  2. #2
    Membre du Club
    Étudiant
    Inscrit en
    Décembre 2005
    Messages
    53
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2005
    Messages : 53
    Points : 62
    Points
    62
    Par défaut
    bien que je sois inscrit à ce forum, je suis bien plus electronicien que programmeur, alors quand je conçois une interface pour le port série, lorsqu'elle est connectée elle doit renvoyer quelque chose à la machine, par conséquent je n'ai qu'à tester cette valeur renvoyée; ceci dit je comprends pas grand chose à ce que t'as écris, désolé
    Life is what happens while you've made other plans...

Discussions similaires

  1. Test port série en C
    Par medi2006 dans le forum C
    Réponses: 4
    Dernier message: 09/05/2015, 16h26
  2. Réponses: 2
    Dernier message: 28/10/2013, 22h35
  3. Wincom VT320 connexion sur port série sans réponses.
    Par Pitchou`n dans le forum Windows XP
    Réponses: 0
    Dernier message: 20/03/2008, 13h26
  4. [Série] Accès au port série sous linux
    Par ghost dans le forum Entrée/Sortie
    Réponses: 10
    Dernier message: 10/10/2007, 10h43
  5. Réponses: 2
    Dernier message: 14/04/2007, 10h15

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