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.
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>
#include <iostream.h>
#include <fstream.h>
#pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main()
{
HANDLE handle;
DCB dcb;
COMMTIMEOUTS timeouts={0};
BOOL fSuccess;
unsigned long nBytesRead;
int NbOctet;
char c;
int i;
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,13,&nblu,NULL);
printf("\n char2= %s \n ",buf2);
getchar();
CloseHandle(handle);
return(fSuccess);
}
//---------------------------------------------------------------------------