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 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
|
void Init(char*Port,DWORD BaudRate,BYTE ByteSize,BYTE StopBits,BYTE Parity)
{
COMMTIMEOUTS tTimeout;
int TimeoutRead;
DCB dcb;
BOOL fSuccess;
DWORD dwError;
hCom=CreateFile(Port,GENERIC_READ|GENERIC_WRITE,0,NULL,OPEN_EXISTING,0,NULL);
if(hCom==INVALID_HANDLE_VALUE)
{
dwError=GetLastError();
printf("Erreur lors de l'ouverture du port");
}
//Lecture Configuration initiale
fSuccess=GetCommState(hCom,&dcb);
if(!fSuccess)
printf("Erreur lors de la configuration du port");
//Configuration du port
dcb.BaudRate=BaudRate;
dcb.ByteSize=ByteSize;
dcb.StopBits=StopBits;
dcb.Parity=Parity;
dcb.DCBlength;
dcb.fBinary=1;
DWORD fBinary=1; //binary mode,no EOF check
DWORD fParity=1; //enable parity checking
//Configurer le port
fSuccess=SetCommState(hCom,&dcb);
if(!fSuccess)
printf("Echec de configuration");
//Definition des timeouts
TimeoutRead=500; //timeout de 500 ms
tTimeout.ReadIntervalTimeout=MAXWORD;
tTimeout.ReadTotalTimeoutMultiplier=0;
tTimeout.ReadTotalTimeoutConstant=TimeoutRead;
tTimeout.WriteTotalTimeoutMultiplier=0;
tTimeout.WriteTotalTimeoutConstant=0;
//Configurer le timeout
SetCommTimeouts(hCom,&tTimeout);
}
//**********************Fonction d'emission**********************
void Emission(char*Chaine)
{
int NbOctet;
unsigned long nBytesWrite;
char*Message;
Message=new char[200];
if(strcmp(EolChar,"CR")==0)
sprintf(Message,"%s%c",Chaine,0x0D);
if(strcmp(EolChar,"LF")==0)
sprintf(Message,"%s%c",Chaine,0x0A);
if(strcmp(EolChar,"LF/CR")==0)
sprintf(Message,"%s%c%c",Chaine,0x0A,0x0D);
if(strcmp(EolChar,"CR/LF")==0)
sprintf(Message,"%s%c%c",Chaine,0x0D,0x0A);
//Compter le nombre d'octet à envoyer
NbOctet=strlen(Message);
//Ecrire dans le fichier
WriteFile(hCom,Message,NbOctet,&nBytesWrite,NULL);
}
//*****************Fonction de Reception*****************
void Reception(char*Chaine,int csock)
{
struct Pile * l1;
BOOL bReasult;
char Buffer[200];
unsigned long nBytesRead=0;
sprintf(inBuffer,"%s","");
nBytesRead=0;
switch(Chaine[0]){
case 'L':switch(Chaine[1])
{
//Reception des données de la caisse
case 'P':bReasult=ReadFile(hCom,inBuffer,199,&nBytesRead,NULL);
if(nBytesRead!=0)
{
send_to_client(csock,inBuffer,200);
}
else
printf("Pas de donnees recues");
break;
//Lecture des résultats de la caisse
case 'X':l=(struct Pile *)malloc(sizeof(struct Pile)); bReasult=ReadFile(hCom,inBuffer,199,&nBytesRead,NULL); if(nBytesRead!=0)
{
if(inBuffer[0]=='O')
{
// strcpy(l->Sommet,inBuffer);
l->suivant=NULL;
l1=l;
// printf("%s\n",l1->Sommet);
send_to_client(csock,inBuffer,32);
bReasult=ReadFile(hCom,inBuffer,199,&nBytesRead,NULL);
while (nBytesRead!=0)
{
l1->suivant=(struct Pile *)malloc(sizeof(struct Pile));
l1=l1->suivant;
l1->suivant=NULL;
send_to_client(csock,inBuffer,32);
bReasult=ReadFile(hCom,inBuffer,199,&nBytesRead,NULL);
}
}
else
printf("%c%c",inBuffer[0],inBuffer[1]);
} else
printf("Pas de donnees recues");
break;
//Lecture du journal des ventes de la caisse
case'F':switch(Chaine[2])
{
case '1':l=(struct Pile *)malloc(sizeof(struct Pile));
bReasult=ReadFile(hCom,inBuffer,199,&nBytesRead,NULL);
if(nBytesRead!=0)
{
strcpy(l->Sommet,inBuffer);
l->suivant=NULL;
l1=l;
printf("%s\n",l1->Sommet);
bReasult=ReadFile(hCom,inBuffer,199,&nBytesRead,NULL);
while((strcmp(inBuffer,"TERMINE")!=0)&&(nBytesRead!=0))
{
while((strcmp(inBuffer,"F")!=0)&&(nBytesRead!=0))
{
l1->suivant=(struct Pile *)malloc(sizeof(struct Pile));
l1=l1->suivant;
strcpy(l1->Sommet,inBuffer);
l1->suivant=NULL;
printf("%s\n",l1->Sommet);
bReasult=ReadFile(hCom,inBuffer,199,&nBytesRead,NULL);
}
Chaine="OC";Emission(Chaine);
//printf("ticket suivant\n");
bReasult=ReadFile(hCom,inBuffer,199,&nBytesRead,NULL);
}
}
else
printf("Pas de donnees recues");
break;
default:break;
}
break;
default:break;
}
//Envoi des données à la caisse
case 'E':switch(Chaine[1])
{
case'P':bReasult=ReadFile(hCom,inBuffer,199,&nBytesRead,NULL);
if(nBytesRead!=0)
{if(inBuffer[0]=='O')
printf("%c",inBuffer[0]);
else
printf("%c%c",inBuffer[0],inBuffer[1]);
}
break;
default:break;
}
break;
default:break;
}
}
BOOL Fermeture()
{
//Fermeture du port
CloseHandle(hCom);
return 0;
} |
Partager