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 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
| #include <stdio.h>
#include <conio.h>
#include <iostream>
#include <iomanip>
#include <sstream>
#include <windows.h>
#include <string.h>
#include <boost/assign/std/vector.hpp>
#include <vector>
#define READ_VAR 0x03
#define WRITE_VAR 0x06
int init_serie();
//int ReceiveTrame(char *ChaineRecue);
int SendTrame(char ChaineEnvoie[50]);
int Receiveframe(std::vector<unsigned char> &buf_reception);
HANDLE hSerie;
/**************Programme principale**************/
void main (void)
{
std::vector<unsigned char> buffer_rec;
char chaineEnvoie[50];
char Presence[2],Ecrire[2];
int TimeoutRead = 100; // timeout en ms
COMMTIMEOUTS tTimeout;
float temperature,humidite;
float Tair,Tcut,HR,Consigne,Write;
int i,Select,Envoyer,CheckInit,Carte(0),Retour(0);
int touche=-1;
/***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=synchrone, sinon asynchrone
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);
Retour=Receiveframe(buffer_rec);
if(Retour==1)
{
if(buffer_rec[0]==0xaa)
{
std::cout<<"\n--Carte presente--\n\n";
Carte=1;
}
}
else
{
std::cout<<"\nCarte absente\n\n";
Carte=0;
}
system("pause");
/************************************/
if((Carte==1)&(Retour==1))
{
std::cout<<"\nChoix: \n\t-[1]Lecture \n\t-[2] Ecriture ";
std::cout<<"\nSaisir un chiffre puis appuyer sur entree ";
std::cin>>Select;
switch(Select)
{
case 1:
//blablabla...
}
break;
case 2:
std::ostringstream str;
/*std::cout<<"\nSaisir la nouvelle consigne: ";
std::cin>>Write;
int write=Write*10;
str<<std::hex<<write;
std::cout<<"\nstr="<<str.str();*/
//ces valeurs doivent changer en fonction de la consigne saisie elle sont fixe pour les test
Ecrire[0]=0x01;
Ecrire[1]=0x45;
chaineEnvoie[0]=WRITE_VAR;
chaineEnvoie[1]=0x28;
chaineEnvoie[2]=0x02;
chaineEnvoie[3]=Ecrire[0];
chaineEnvoie[4]=Ecrire[1];
chaineEnvoie[5]='\0';
for(i=0;i<=4;i++)
printf(" %02X",chaineEnvoie[i]);
Envoyer=SendTrame(chaineEnvoie);
if(Envoyer==1)
{
int a=Receiveframe(buffer_rec);
if (a==1)
printf("\nEcriture correcte",HR);
}
system("pause");
break;
}
}
CloseHandle(hSerie); // ferme le port
} |
Partager