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 :

communication avec port serie


Sujet :

C++

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 24
    Points : 10
    Points
    10
    Par défaut communication avec port serie
    Bonjour tout le monde,
    aidez moi s'il vous plait et si vous avez le temps, je vais craquer.
    Alorss voila, je veux communiquer avec un analyseur de spectre branche sur le COM1.
    J'ai reussi a taper un petit programme. J'arrive a lui envoyer des informations ( par exemple a changer la langue de l'analyseur en envoyant les bits 16 puis 3)
    Jusque la tout va bien. Mais le probleme est que je n'arrive pas du tout a lire les infos qu'il m'envoie. Peut-etre un probleme avec mon "char buf" ???
    Quand il faut qu'il m'envoie des series de BYTE, j'ai rien du tout.
    Je vous donne un exemple :
    Pour avoir l'etat de sa batterie, je dois envoyer le BYTE 78, puis le BYTE 3. il devrait me renvoyer 5 BYTE normalement, mais j'ai rien .
    Voila mon programme je code sous Borland C++6.0)

    //---------------------------------------------------------------------------

    #include <vcl.h>
    #include <stdio.h>
    #include <windows.h>
    #include <windef.h>
    #include <stdlib.h>



    #pragma hdrstop

    //---------------------------------------------------------------------------

    #pragma argsused
    int main()
    {

    HANDLE handle;
    DCB dcb;
    COMMTIMEOUTS timeouts={0};
    BOOL fSuccess;


    unsigned long nBytesRead;
    int NbOctet;


    BOOL bResult,PortReady;

    char buf2[1024];
    DWORD nblu,nbecrit;

    int aenvoyer2,aenvoyer3;



    /*--------------------------------------------------------------------*/
    /* Ouverture du port de communication pour l'ANALYSEUR DE SPECTRE */
    /*--------------------------------------------------------------------*/


    handle = CreateFile(
    "COM1",
    GENERIC_READ | GENERIC_WRITE , // acces pour lire et ecrire sur le port
    0,
    NULL,
    OPEN_EXISTING,
    0,
    NULL
    ) ;


    if(handle == INVALID_HANDLE_VALUE)
    {
    printf("Impossible d'ouvrir le port (erreur %d)\n", GetLastError());
    return 0;
    }


    PortReady=SetupComm(handle,5000,5000);
    fSuccess = GetCommState(handle, &dcb);

    if (!fSuccess)
    {
    printf("probleme 1" );

    getchar();
    }



    dcb.BaudRate = CBR_9600 ;
    dcb.ByteSize =8 ;
    dcb.Parity=NOPARITY;
    dcb.StopBits = ONESTOPBIT;
    dcb.fNull=FALSE;
    dcb.fRtsControl=RTS_CONTROL_ENABLE;
    dcb.fInX=FALSE;
    dcb.fOutX=FALSE;
    dcb.fDtrControl=DTR_CONTROL_ENABLE;


    PortReady=SetCommState(handle,&dcb);

    if(!SetCommState(handle,&dcb))
    {
    printf("probleme 1" );
    getchar();

    }





    /*-----------------------------------------------------------*/
    /* Les timeouts */
    /*-----------------------------------------------------------*/

    timeouts.ReadIntervalTimeout=50;
    timeouts.ReadTotalTimeoutMultiplier=8;
    timeouts.ReadTotalTimeoutConstant=8;
    timeouts.WriteTotalTimeoutMultiplier=8;
    timeouts.WriteTotalTimeoutConstant=8;


    SetCommTimeouts(handle,&timeouts);
    if(!SetCommTimeouts(handle,&timeouts))
    {
    printf("Impossible d'initialiser les timeouts (erreur %d)\n", GetLastError());
    return 0;
    }
    /*-----------------------------------------------------------*/
    /* envoi de donnees et reception */
    /*-----------------------------------------------------------*/

    aenvoyer2=78;
    aenvoyer3=3;

    WriteFile(handle,&aenvoyer2,1,&nbecrit,NULL);
    WriteFile(handle,&aenvoyer3,1,&nbecrit,NULL);

    ReadFile(handle,buf2,5,&nblu,NULL);

    printf("\n char2= %s \n ",buf2);

    getchar();

    CloseHandle(handle);


    return(fSuccess);
    }
    //---------------------------------------------------------------------------

  2. #2
    Membre à l'essai
    Inscrit en
    Février 2007
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    helper me please, chui au bord de la depression, je trouve pas

Discussions similaires

  1. Communication avec port Serie Com1 / Com2
    Par god_enel dans le forum Windows
    Réponses: 2
    Dernier message: 26/03/2009, 22h50
  2. Communication avec port Serie Com1 / Com2
    Par god_enel dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 24/03/2009, 10h41
  3. communication avec port series en java
    Par konguess dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 23/01/2008, 12h26
  4. communication avec port serie
    Par seignseifer dans le forum C++
    Réponses: 2
    Dernier message: 14/03/2007, 09h34
  5. communication par port serie
    Par sofiane61 dans le forum MFC
    Réponses: 3
    Dernier message: 06/02/2004, 15h06

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