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 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
| void main (void)
{
char *chaineRecue;
chaineRecue=new char[200];
char chaineEnvoie[50];
char Presence[2];
int TimeoutRead = 100; // timeout en ms
COMMTIMEOUTS tTimeout;
int Select,Envoyer,CheckInit,Etat;
char Temp[5];
int id,i;
/***Ouverture du port de communication***/
hSerie=CreateFile(TEXT("COM1"), //Nom du port
GENERIC_READ|GENERIC_WRITE, //permet l'ecriture et la lecture sur le port
0, //Mode de partage
NULL, //Option de sécurité par défaut
OPEN_EXISTING,
0,
NULL);
std::cout<<"Connection en cours...\n";
CheckInit=init_serie(); // initialise le port serie
/***configurer le timeout***/
tTimeout.ReadIntervalTimeout = MAXWORD;
tTimeout.ReadTotalTimeoutMultiplier = 0;
tTimeout.ReadTotalTimeoutConstant = TimeoutRead; // pas de time out = 0
tTimeout.WriteTotalTimeoutMultiplier = 0;
tTimeout.WriteTotalTimeoutConstant = 0;
SetCommTimeouts(hSerie,&tTimeout);
/*verifier la présence de la carte*/
Presence[0]=0xAAu;
Presence[1]='\0';
Envoyer=SendTrame(Presence);
Etat=ReceiveTrame(chaineRecue);
if(chaineRecue[0]==Presence[0])
std::cout<<"\nCarte presente\n";
else
std::cout<<"\nCarte absente\n";
system("pause");
/*********************************/
do
{
system("cls");
std::cout<<"\nVariable a observer: \n\t-[1] Alarme voyant \n\t-[2] Temperature air ";
std::cout<<"\nSaisir un chiffre puis appuyer sur entree ";
std::cin>>Select;
switch(Select)
{
case 1:
chaineEnvoie[0]=0x03; //lecture d'une variable prédéfinie
chaineEnvoie[1]=0x02;
chaineEnvoie[2]=0x01;
chaineEnvoie[3]='\0';
break;
case 2:
chaineEnvoie[0]=0x03;
chaineEnvoie[1]=0x1E;
chaineEnvoie[2]=0x02;
chaineEnvoie[3]='\0';
break;
default:
std::cout<<"\nErreur de saisie";
}
Envoyer=SendTrame(chaineEnvoie);
if(Envoyer==1)
{
printf("\nReception: \n");
Etat=ReceiveTrame(chaineRecue);
}
switch(Select)
{
case 1:
if(chaineRecue[5]==0x00)
std::cout<<"\nAlarme eteinte";
break;
case 2:
//sprintf(Temp,"%s%s",(unsigned char)chaineRecue[5],(unsigned char)chaineRecue[6]);
printf("Temp (hex): %02X%02X --- %X",(unsigned char)chaineRecue[5],(unsigned char)chaineRecue[6],Temp);
printf("\nTemperature air= %d%cC",&Temp,167);
break;
default:
std::cout<<"\nErreur de saisie";
}
std::cout<<"\nAppuyer sur une touche pour continuer ou sur 'Echap' pour quitter\n";
}
while(_getch()!=27);
delete[] chaineRecue;
CloseHandle(hSerie); // ferme le port
} |
Partager