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
| #include <iostream>
#include <time.h>
#include <windows.h>
#include <stdio.h>
#include "C_RS232_Win_Overlapped.h"
using namespace std ;
char buf[128];
int nb;
char commande[] = "com1:96,8,n,1";
char commande0[]="AT+CMGF=1\r\n";
char commande1[]="AT+CMGS=\"+33XXXXXXXXX\"\r\n";
char commande2[128];
int Valeur1;
int Valeur2;
HANDLE h, hThread1, hThread2;
HANDLE hMutex;
DWORD Thread1ID, Thread1Param, Thread2ID, Thread2Param;
BOOL Res;
HANDLE Tableau[2];
DWORD WINAPI Thread1( LPVOID lpParam )
{
cout<<"Valeur du Thread 1 :";
cin>>Valeur1;
if (Valeur1=1)
{
C_Rs232_Win_Overlapped rsWin(commande);
rsWin.EnvoyerMessage("AT+CPIN=2580\r",13);
Sleep(2000);
rsWin.EnvoyerMessage(commande0,11);
Sleep(1000);
rsWin.EnvoyerMessage(commande1,strlen(commande1));
rsWin.EnvoyerMessage("SURCONSOMMMATION \rEnergie : Eau",31);
Sleep(3000);
commande2[0]=0x1A;
commande2[1]=0;
rsWin.EnvoyerMessage(commande2,1);
commande2[0]=0x0A;
commande2[2]=0;
rsWin.EnvoyerMessage(commande2,1);
commande2[0]=0x0D;
commande2[1]=0;
rsWin.EnvoyerMessage(commande2,1);
//nb = rsWin.LireMessage(buf , 128);
buf[nb-1] = 0;
//nb = rsWin.LireMessage(buf , 128 , 0x0d);
//buf[nb-1] = 0;
}
ReleaseMutex(hMutex);
return 0;
}
DWORD WINAPI Thread2( LPVOID lpParam )
{
cout<<"Valeur du Thread 2 :";
cin>>Valeur2;
if(Valeur2=1)
{
C_Rs232_Win_Overlapped rsWin(commande);
rsWin.EnvoyerMessage("AT+CPIN=2580\r",13);
Sleep(2000);
rsWin.EnvoyerMessage(commande0,11);
Sleep(1000);
rsWin.EnvoyerMessage(commande1,strlen(commande1));
rsWin.EnvoyerMessage("SURCONSOMMMATION \rEnergie : Elec",32);
Sleep(3000);
commande2[0]=0x1A;
commande2[1]=0;
rsWin.EnvoyerMessage(commande2,1);
commande2[0]=0x0A;
commande2[2]=0;
rsWin.EnvoyerMessage(commande2,1);
commande2[0]=0x0D;
commande2[1]=0;
rsWin.EnvoyerMessage(commande2,1);
//nb = rsWin.LireMessage(buf , 128);
buf[nb-1] = 0;
//nb = rsWin.LireMessage(buf , 128 , 0x0d);
//buf[nb-1] = 0;
}
ReleaseMutex(hMutex);
return 0;
}
void main()
{
printf("Deux threads ecrivent a l'ecran avec mutex...\n\n\r");
hMutex = CreateMutex(NULL, FALSE, NULL);
hThread1 = CreateThread(NULL, 0, Thread1, &Thread1Param, 0, &Thread1ID);
Tableau[0] = hThread1;
getchar();
hThread2 = CreateThread(NULL, 0, Thread2, &Thread2Param, 0, &Thread2ID);
getchar();
Tableau[1] = hThread2;
WaitForMultipleObjects(2, Tableau, TRUE, INFINITE);
getchar();
} |
Partager