//--------------------------------------------------------------------------- #include #pragma hdrstop #include "UThread.h" #pragma package(smart_init) #include #include DEFINE_GUID( GUID_DEVCLASS_PORTS, 0x4d36e978L, 0xe325, 0x11ce, 0xbf, 0xc1, 0x08, 0x00, 0x2b, 0xe1, 0x03, 0x18 ); //--------------------------------------------------------------------------- // Important : les méthodes et les propriétés des objets de la CVL peuvent uniquement // être utilisées dans une méthode appelée en utilisant Synchronize, comme suit : // // Synchronize(&UpdateCaption); // // où UpdateCaption serait de la forme : // // void __fastcall MyThread::UpdateCaption() // { // Form1->Caption = "Mis à jour dans un thread"; // } //--------------------------------------------------------------------------- __fastcall MyThread::MyThread(bool CreateSuspended) : TThread(CreateSuspended) { } //--------------------------------------------------------------------------- void MyThread::SetName() { THREADNAME_INFO info; info.dwType = 0x1000; info.szName = "MyThread"; info.dwThreadID = -1; info.dwFlags = 0; __try { RaiseException( 0x406D1388, 0, sizeof(info)/sizeof(DWORD),(DWORD*)&info ); } __except (EXCEPTION_CONTINUE_EXECUTION) { } } //--------------------------------------------------------------------------- void __fastcall MyThread::Execute() { SetName(); //---- Placer le code du thread ici ---- setlocale( LC_NUMERIC, "French_France" ); FormClient->Connexion1->Enabled = false; FormClient->Deconnexion1->Enabled = true; Com laCom; Fichier FichierMesures; Fonction LesFonctions; laCom.InitCom(); laCom.ConnectCom(laCom.COM.c_str(), 38400,8,0,1); while (Suspended == false) { FormClient->JvGIFAnimatorFlotteur->Animate = true; do { laCom.LectureCom(buf, sizeof(buf), &Nblu); } while (Nblu!=18); AnsiString RepertoireApplication = ExtractFilePath(Application->ExeName); AnsiString Date = LesFonctions.Date(); Serial = LesFonctions.NumSerie(buf); AnsiString nom = RepertoireApplication+"\\Mesures\\" + Serial + "-" + Date + ".gm"; LesFonctions.LectureCombinaison(buf[2]); FormAcquisition->DetectionAcquisition(buf[17]); Stock = LesFonctions.StockNumSerie(Serial); LesFonctions.SelectCombinaison(buf, Stock); FormClient->Timer1->OnTimer; if (/*(buf[16]==64) && */(TabDetect[FormClient->JvgTabControlFlotteurs->TabIndex] == FormAcquisition->TabAcq[FormClient->JvgTabControlFlotteurs->TabIndex])) { TabDetect[FormClient->JvgTabControlFlotteurs->TabIndex] = 0; FormClient->ProgressBarCom->Position = TabDetect[FormClient->JvgTabControlFlotteurs->TabIndex]; FormClient->ChartPH->View3D = false; FormClient->ChartConductivite->View3D = false; FormClient->ChartTemperature->View3D = false; FichierMesures.OuvrirFichier(nom.c_str()); FichierMesures.EcrireNumSerie(buf); FichierMesures.EcrireDHM(); Stock = LesFonctions.StockNumSerie(Serial); LesFonctions.SelectCombinaison(buf, Stock); FichierMesures.FermerFichier(); FichierMesures.EcrireTimeStamp(nom.c_str()); FichierMesures.FermerFichier(); FichierMesures.ChargementListe(nom); // Affichage des valeurs dans les graphes //ToTabControl(Serial, LesFonctions.Resultats[0] , LesFonctions.Resultats[1], LesFonctions.Resultats[2]); int index = FormClient->JvgTabControlFlotteurs->Tabs->IndexOf( Serial ); ((Graphe*)FormClient->JvgTabControlFlotteurs->Tabs->Objects[index])->AddValues( LesFonctions.Resultats[0], LesFonctions.Resultats[1], LesFonctions.Resultats[2], LesFonctions.Resultats[0], LesFonctions.Resultats[0], LesFonctions.Resultats[1], LesFonctions.Resultats[1], LesFonctions.Resultats[2], LesFonctions.Resultats[2], Serial); if (FormClient->ActivationSeuil->Checked == true) { //Alertes(FormClient->EditPH->Text, FormClient->EditConductivite->Text, FormClient->EditTemperature->Text); FormParametresSeuils->LectureAlertes(Serial, LesFonctions.Resultats[0], LesFonctions.Resultats[1], LesFonctions.Resultats[2]); } AnsiString Journal = RepertoireApplication + "\\Alertes\\" + Serial + ".al"; if (FileExists(Journal.c_str())) { FormJournal->ValidationAlerte(Journal); } } TabDetect[FormClient->JvgTabControlFlotteurs->TabIndex] = TabDetect[FormClient->JvgTabControlFlotteurs->TabIndex]+1; } } //--------------------------------------------------------------------------- void __fastcall MyThread::EnvoiNom() { if (FormClient->JvImgBtnNomFlotteur->Animate == true) { int y; unsigned char TrameNom [20]; AnsiString Num1 = FormClient->EditNumSerie->Text; TabNom[FormClient->JvgTabControlFlotteurs->TabIndex] = FormClient->EditNom->Text; TrameNom[0] = FormClient->HexToByte(Num1[1], Num1[2]); TrameNom[1] = FormClient->HexToByte(Num1[3], Num1[4]); TrameNom[2] = FormClient->HexToByte(Num1[5], Num1[6]); TrameNom[3] = 0x01; for (y= 0; y < FormClient->EditNom->Text.Length(); y++) { TrameNom[4+y] = TabNom[FormClient->JvgTabControlFlotteurs->TabIndex].c_str()[y]; } for(y=(FormClient->EditNom->Text.Length()+4);y<14;y++) TrameNom[y]=0; TrameNom[14] = 0; TrameNom[15] = 0; TrameNom[16] = 0; TrameNom[17] = 0; TrameNom[18] = 0; TrameNom[19] = 0; DWORD dwBytesWritten; WriteFile(hdl, TrameNom, 20, &dwBytesWritten, NULL); FormClient->JvImgBtnNomFlotteur->Animate = false; } }