transmission de donnees via le port serie

transmission de donnees via le port serie - C++ - Programmation

Marsh Posté le 22-02-2007 à 06:45:34    

Bonjour tout le monde,  
j'ai fait un petit programme en  C++ sous Borland C++6.0, car je veux envoyer via le port serie, des information a un analyseur de sprectre. Le but est de pouvoir le commander a partir de l'ordi. ( et apres de recevoir les info qu'il envoie)
Par exemple, la doc de programmation de l'analyseur , me dit " Send the enter remotemode Byte #69, to the spectrum analyser to enter remote mode.  
Donc j'ai tape la ligne de code suivante :  
 WriteFile(handle,"69",2,&nbecrit,NULL);
 
Mais rien ne se passe.L'analyseur ne bouge pas d'un pouce
AVez vous des idees ?
 
Mon programme en entier donne ca :
//---------------------------------------------------------------------------
 
#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;
 char c;
 BOOL bResult,PortReady;
 char *inBuffer;
 
 /* pour le remote mode */
 char buf[56];
 char buf2[56];
 DWORD nblu=0,nbecrit;
 
 
 
 /*--------------------------------------------------------------------*/
 /*   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;
 
 
  }  
   
/*-----------------------------------------------------------*/
/*                  Ajustement des parametres                */
/*-----------------------------------------------------------*/
 
 
PortReady=SetupComm(handle,5000,5000);
 
 
fSuccess = GetCommState(handle, &dcb);
 
 if (!fSuccess)
  {
    printf("probleme 1" );
 
      getchar();
  }
 
       
dcb.BaudRate = CBR_9600 ;   /*  vitesse */
dcb.ByteSize =8 ; /* nombre de bits */
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;
 
 
/*-----------------------------------------------------------*/
/*     on applique les changements au port COM1              */
/*-----------------------------------------------------------*/
PortReady=SetCommState(handle,&dcb);
 
if(!SetCommState(handle,&dcb))
{
   printf("probleme 1" );
      getchar();
 
}
 
 
 
 
 
/*-----------------------------------------------------------*/
/*                  Les timeouts                             */
/*-----------------------------------------------------------*/
 
timeouts.ReadIntervalTimeout=MAXDWORD;
timeouts.ReadTotalTimeoutMultiplier=0;
timeouts.ReadTotalTimeoutConstant=0;
timeouts.WriteTotalTimeoutMultiplier=0;
timeouts.WriteTotalTimeoutConstant=0;
 
/* On applique ces changements au port COM1*/
 SetCommTimeouts(handle,&timeouts);
if(!SetCommTimeouts(handle,&timeouts))
                {
                  printf("Impossible d'initialiser les timeouts  (erreur %d)\n", GetLastError());
                  return 0;
                }
 
                       
 
   
/*-----------------------------------------------------------*/
/*             test du remote mode                           */
/*-----------------------------------------------------------*/
 
 
 WriteFile(handle,"69",2,&nbecrit,NULL);
 
 
 getchar();
        CloseHandle(handle);
 return(fSuccess);
}
//---------------------------------------------------------------------------

Reply

Marsh Posté le 22-02-2007 à 06:45:34   

Reply

Marsh Posté le 22-02-2007 à 06:59:45    

non c'est bon j'ai resolu le probleme ^^

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed