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
   | void __fastcall TForm1::Button1Click(TObject *Sender)
{
	/*! Definir le nom du port */
	UnicodeString ComPort = this->ComboBox1->Text;
	static HANDLE Handle_Com=NULL;
 
	/*! Ouvrir le com port */
	if (Handle_Com == NULL)
	{
		Handle_Com = CreateFile(ComPort.w_str(),
								 GENERIC_READ | GENERIC_WRITE,
								 0, 0,
								 OPEN_EXISTING,
								 0,0);
	  // SET THE COMM TIMEOUTS IN OUR EXAMPLE.
	  COMMTIMEOUTS ctmoNew = {0}, ctmoOld;
	  GetCommTimeouts(Handle_Com,&ctmoOld);
 
	  ctmoNew.ReadTotalTimeoutConstant = 10;
	  ctmoNew.ReadTotalTimeoutMultiplier = 0;
	  ctmoNew.WriteTotalTimeoutMultiplier = 0;
	  ctmoNew.WriteTotalTimeoutConstant = 0;
 
	  SetCommTimeouts(Handle_Com, &ctmoNew);
 
	  // SET BAUD RATE, PARITY, WORD SIZE, AND STOP BITS.
	  // THERE ARE OTHER WAYS OF DOING SETTING THESE BUT THIS IS THE EASIEST.
	  DCB dcbCommPort;
	  dcbCommPort.DCBlength = sizeof(DCB);
	  GetCommState(Handle_Com, &dcbCommPort);
	  UnicodeString ConfigTxt = "9600,N,8,1";
	  BuildCommDCB(ConfigTxt.w_str(), &dcbCommPort);
	  SetCommState(Handle_Com, &dcbCommPort);
 
	  /*! Balancer un message d'erreur si ouverture du port com impossible */
	  if(Handle_Com == INVALID_HANDLE_VALUE)
	  {
			Memo1->Lines->Add("Impossible d'ouvrir le port COM");
			Handle_Com = NULL;
	  }
	  else
	  {
			Memo1->Lines->Add("Port COM ouvert avec succes");
 
			/* Activer la RS232 */
			this->Memo1->Lines->Add("Activation RS232");
				/* Envoyer une trame et regarder si elle revient */
			bool Identique1 = EnvoyerTrameSurRS232EtRecupererLaReponse(Handle_Com);
 
 
 
         	if (Identique1==true)
			{
				Label1->Color=clLime;
				Label1->Caption="OK";
			}
			else
			{
				Label1->Color=clRed;
				Label1->Caption="KO";
			}
 
 
 
			Sleep(500);
 
			/* Fermer le port COM */
			PurgeComm(Handle_Com, PURGE_RXABORT);
			CloseHandle(Handle_Com);
			Handle_Com=NULL;
			Memo1->Lines->Add("Port COM1 fermé avec succes");
	  }
	}
	else
	{
			// fermer le port com
			Memo1->Lines->Add("Erreur : Port COM1 déja ouvert");
			PurgeComm(Handle_Com, PURGE_RXABORT);
			CloseHandle(Handle_Com);
			Handle_Com=NULL;
	}
} |