unit Unit1; interface uses Windows, Messages, Graphics, Controls, Forms, Dialogs, IdWinsock2, stdctrls, SysUtils, Classes, IdBaseComponent, IdAntiFreezeBase, IdAntiFreeze, IdComponent, IdUDPBase, IdUDPClient, IdStack, IdUDPServer, IdSocketHandle, ExtCtrls, Buttons, ImgList, Gauges; type TForm1 = class(TForm) IdUDPClient1: TIdUDPClient; GroupBox3: TGroupBox; GroupBox4: TGroupBox; GroupBox5: TGroupBox; GroupBox6: TGroupBox; SpeedButton2: TSpeedButton; SpeedButton3: TSpeedButton; SpeedButton4: TSpeedButton; SpeedButton5: TSpeedButton; Label1: TLabel; Label2: TLabel; SpeedButton18: TSpeedButton; SpeedButton19: TSpeedButton; SpeedButton20: TSpeedButton; SpeedButton21: TSpeedButton; Bevel1: TBevel; SpeedButton34: TSpeedButton; SpeedButton35: TSpeedButton; SpeedButton36: TSpeedButton; SpeedButton37: TSpeedButton; SpeedButton50: TSpeedButton; SpeedButton51: TSpeedButton; SpeedButton52: TSpeedButton; SpeedButton53: TSpeedButton; SpeedButton66: TSpeedButton; SpeedButton67: TSpeedButton; GroupBox1: TGroupBox; Label4: TLabel; Timer1: TTimer; GroupBox2: TGroupBox; GroupBox7: TGroupBox; GroupBox8: TGroupBox; GroupBox9: TGroupBox; GroupBox10: TGroupBox; GroupBox11: TGroupBox; GroupBox14: TGroupBox; Panel1: TPanel; Panel2: TPanel; Panel3: TPanel; Panel4: TPanel; Label11: TLabel; Label12: TLabel; Label13: TLabel; Label14: TLabel; Panel5: TPanel; Label15: TLabel; Panel6: TPanel; Label16: TLabel; Bevel2: TBevel; GroupBox12: TGroupBox; Gauge1: TGauge; Label3: TLabel; Label6: TLabel; Label7: TLabel; Gauge2: TGauge; Gauge3: TGauge; Gauge4: TGauge; Gauge5: TGauge; Label8: TLabel; Label9: TLabel; Label10: TLabel; Label17: TLabel; Label18: TLabel; Label19: TLabel; Label20: TLabel; Label21: TLabel; SpeedButton1: TSpeedButton; SpeedButton6: TSpeedButton; SpeedButton7: TSpeedButton; SpeedButton8: TSpeedButton; SpeedButton9: TSpeedButton; Label5: TLabel; Label22: TLabel; Label23: TLabel; Label24: TLabel; Panel7: TPanel; Panel8: TPanel; Panel9: TPanel; Panel10: TPanel; GroupBox13: TGroupBox; SpeedButton10: TSpeedButton; SpeedButton11: TSpeedButton; SpeedButton12: TSpeedButton; SpeedButton13: TSpeedButton; SpeedButton14: TSpeedButton; SpeedButton15: TSpeedButton; SpeedButton16: TSpeedButton; SpeedButton17: TSpeedButton; SpeedButton22: TSpeedButton; SpeedButton23: TSpeedButton; SpeedButton24: TSpeedButton; SpeedButton25: TSpeedButton; SpeedButton26: TSpeedButton; SpeedButton27: TSpeedButton; SpeedButton28: TSpeedButton; SpeedButton29: TSpeedButton; Bevel3: TBevel; Label25: TLabel; Label26: TLabel; SpeedButton30: TSpeedButton; SpeedButton31: TSpeedButton; procedure FormCreate(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); procedure SpeedButton4Click(Sender: TObject); procedure SpeedButton18Click(Sender: TObject); procedure SpeedButton19Click(Sender: TObject); procedure SpeedButton20Click(Sender: TObject); procedure SpeedButton5Click(Sender: TObject); procedure SpeedButton21Click(Sender: TObject); procedure SpeedButton34Click(Sender: TObject); procedure SpeedButton35Click(Sender: TObject); procedure SpeedButton36Click(Sender: TObject); procedure SpeedButton37Click(Sender: TObject); procedure SpeedButton50MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure SpeedButton50MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure SpeedButton51MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure SpeedButton51MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure SpeedButton52MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure SpeedButton52MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure SpeedButton53MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure SpeedButton53MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure SpeedButton66Click(Sender: TObject); procedure SpeedButton67Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton7Click(Sender: TObject); procedure SpeedButton8Click(Sender: TObject); procedure SpeedButton9MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure SpeedButton9MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure SpeedButton6Click(Sender: TObject); procedure SpeedButton10Click(Sender: TObject); procedure SpeedButton11Click(Sender: TObject); procedure SpeedButton12Click(Sender: TObject); procedure SpeedButton13Click(Sender: TObject); procedure SpeedButton14Click(Sender: TObject); procedure SpeedButton15Click(Sender: TObject); procedure SpeedButton16Click(Sender: TObject); procedure SpeedButton17Click(Sender: TObject); procedure SpeedButton22Click(Sender: TObject); procedure SpeedButton23Click(Sender: TObject); procedure SpeedButton24Click(Sender: TObject); procedure SpeedButton25Click(Sender: TObject); procedure SpeedButton26Click(Sender: TObject); procedure SpeedButton27Click(Sender: TObject); procedure SpeedButton28Click(Sender: TObject); procedure SpeedButton29Click(Sender: TObject); procedure SpeedButton30Click(Sender: TObject); procedure SpeedButton31Click(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; var Form1: TForm1; MDP : String; ReceivedString: String; VALEUR : Integer; TEMPERATURE : Real; QUANTUM : Real; TENSION : Real; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); // Paramètres par défaut au lancement de l'application. begin IdUDPClient1.Port:=5030; // Port par défaut. IdUDPClient1.Host:='192.168.0.9'; // Adresse IP locale par défaut. MDP:='ABCDEFGHIJKLMNOP'; // Mot de passe par défaut toujours composé de 16 caractères !!! IdUDPClient1.ReceiveTimeout:=1000; // Délais maxi d'une seconde pour que le périphérique à base d'ENC28J60 réponde. Timer1.Enabled:=False; // Désactivation du timer 1 au lancement du programme. Timer1.Interval:=500; // Intervalle de 500ms pour la Lecture des données présentes en entrées. if MessageDlg('Voulez-vous activer la communication Ethernet pour la lecture en boucle des données présentes sur les entrées de l''interface ?',mtInformation,[mbYes,mbNo],0)=mrYes then begin Timer1.Enabled:=True; // Active le timer 1 end else begin Timer1.Enabled:=False; // Desactive le timer 1 end; end; //************************** //************************** //** GESTION DES 4 RELAIS ** //************************** //************************** // //****************** //** COMMANDES ON ** //****************** procedure TForm1.SpeedButton2Click(Sender: TObject); // ON Relais 1 begin IdUDPClient1.Send(MDP+'S01N'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton3Click(Sender: TObject); // ON Relais 2 begin IdUDPClient1.Send(MDP+'S02N'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton4Click(Sender: TObject); // ON Relais 3 begin IdUDPClient1.Send(MDP+'S03N'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton5Click(Sender: TObject); // ON Relais 4 begin IdUDPClient1.Send(MDP+'S04N'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton6Click(Sender: TObject); // ON Relais 5 begin IdUDPClient1.Send(MDP+'S05N'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; //********************** //** FIN COMMANDES ON ** //********************** // // //******************* //** COMMANDES OFF ** //******************* procedure TForm1.SpeedButton18Click(Sender: TObject); // OFF Relais 1 begin IdUDPClient1.Send(MDP+'S01F'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton19Click(Sender: TObject); // OFF Relais 2 begin IdUDPClient1.Send(MDP+'S02F'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton20Click(Sender: TObject); // OFF Relais 3 begin IdUDPClient1.Send(MDP+'S03F'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton21Click(Sender: TObject); // OFF Relais 4 begin IdUDPClient1.Send(MDP+'S04F'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton7Click(Sender: TObject); // OFF Relais 5 begin IdUDPClient1.Send(MDP+'S05F'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; //*********************** //** FIN COMMANDES OFF ** //*********************** // // //********************** //** COMMANDES TOGGLE ** //********************** procedure TForm1.SpeedButton34Click(Sender: TObject); // Toogle Relais 1 begin IdUDPClient1.Send(MDP+'S01T'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton35Click(Sender: TObject); // Toogle Relais 2 begin IdUDPClient1.Send(MDP+'S02T'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton36Click(Sender: TObject); // Toogle Relais 3 begin IdUDPClient1.Send(MDP+'S03T'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton37Click(Sender: TObject); // Toogle Relais 4 begin IdUDPClient1.Send(MDP+'S04T'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton8Click(Sender: TObject); // Toogle Relais 5 begin IdUDPClient1.Send(MDP+'S05T'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; //************************** //** FIN COMMANDES TOGGLE ** //************************** // // //*************************** //** COMMANDES MOMENTANEES ** //*************************** procedure TForm1.SpeedButton50MouseDown(Sender: TObject; // Relais 1 enfoncé Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin IdUDPClient1.Send(MDP+'S01N'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton50MouseUp(Sender: TObject; // Relais 1 relaché Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin IdUDPClient1.Send(MDP+'S01F'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton51MouseDown(Sender: TObject; // Relais 2 enfoncé Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin IdUDPClient1.Send(MDP+'S02N'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton51MouseUp(Sender: TObject; // Relais 2 relaché Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin IdUDPClient1.Send(MDP+'S02F'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton52MouseDown(Sender: TObject; // Relais 3 enfoncé Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin IdUDPClient1.Send(MDP+'S03N'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton52MouseUp(Sender: TObject; // Relais 3 relaché Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin IdUDPClient1.Send(MDP+'S03F'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton53MouseDown(Sender: TObject; // Relais 4 enfoncé Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin IdUDPClient1.Send(MDP+'S04N'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton53MouseUp(Sender: TObject; // Relais 4 relaché Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin IdUDPClient1.Send(MDP+'S04F'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton9MouseDown(Sender: TObject; // Relais 5 enfoncé Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin IdUDPClient1.Send(MDP+'S05N'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton9MouseUp(Sender: TObject; Button: TMouseButton; // Relais 5 relaché Shift: TShiftState; X, Y: Integer); begin IdUDPClient1.Send(MDP+'S05F'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; //******************************* //** FIN COMMANDES MOMENTANEES ** //******************************* // // //************************ //** COMMANDES AVANCEES ** //************************ procedure TForm1.SpeedButton66Click(Sender: TObject); // Tous les relais sont actifs begin IdUDPClient1.Send(MDP+'N$'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton67Click(Sender: TObject); // Toutes les relais sont inactifs begin IdUDPClient1.Send(MDP+'F$'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; //**************************** //** FIN COMMANDES AVANCEES ** //**************************** //******************************** //******************************** //** FIN : GESTION DES 4 RELAIS ** //******************************** //******************************** //************************************* //************************************* //** GESTION DES 8 sorties digitales ** //************************************* //************************************* // //****************** //** COMMANDES ON ** //****************** procedure TForm1.SpeedButton10Click(Sender: TObject); // Sortie RD0=1 begin IdUDPClient1.Send(MDP+'R00N'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton11Click(Sender: TObject); // Sortie RD1=1 begin IdUDPClient1.Send(MDP+'R01N'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton12Click(Sender: TObject); // Sorties RD2=1 begin IdUDPClient1.Send(MDP+'R02N'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton13Click(Sender: TObject); // Sorties RD3=1 begin IdUDPClient1.Send(MDP+'R03N'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton14Click(Sender: TObject); // Sorties RD4=1 begin IdUDPClient1.Send(MDP+'R04N'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton15Click(Sender: TObject); // Sorties RD5=1 begin IdUDPClient1.Send(MDP+'R05N'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton16Click(Sender: TObject); // Sorties RD6=1 begin IdUDPClient1.Send(MDP+'R06N'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton17Click(Sender: TObject); // Sorties RD7=1 begin IdUDPClient1.Send(MDP+'R07N'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; //********************** //** FIN COMMANDES ON ** //********************** // // //****************** //** COMMANDE OFF ** //****************** procedure TForm1.SpeedButton22Click(Sender: TObject); // Sortie RD0=0 begin IdUDPClient1.Send(MDP+'R00F'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton23Click(Sender: TObject); // Sortie RD1=0 begin IdUDPClient1.Send(MDP+'R01F'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton24Click(Sender: TObject); // Sortie RD2=0 begin IdUDPClient1.Send(MDP+'R02F'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton25Click(Sender: TObject); // Sortie RD3=0 begin IdUDPClient1.Send(MDP+'R03F'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton26Click(Sender: TObject); // Sortie RD4=0 begin IdUDPClient1.Send(MDP+'R04F'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton27Click(Sender: TObject); // Sortie RD5=0 begin IdUDPClient1.Send(MDP+'R05F'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton28Click(Sender: TObject); // Sortie RD6=0 begin IdUDPClient1.Send(MDP+'R06F'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton29Click(Sender: TObject); // Sortie RD7=0 begin IdUDPClient1.Send(MDP+'R07F'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; //********************** //** FIN COMMANDE OFF ** //********************** // // //***************************************** //** Activer toutes les sorties du PORTD ** //***************************************** procedure TForm1.SpeedButton30Click(Sender: TObject); begin IdUDPClient1.Send(MDP+'VH'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; //********************************************** //** FIN: Activer toutes les sorties du PORTD ** //********************************************** // // //******************************************** //** Desactiver toutes les sorties du PORTD ** //******************************************** procedure TForm1.SpeedButton31Click(Sender: TObject); begin IdUDPClient1.Send(MDP+'VL'); ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end; end; //************************************************* //** FIN: Desactiver toutes les sorties du PORTD ** //************************************************* //************************************************************************************************************************* //** Timer1. Lecture en boucle de la chaine de caractères renvoyés par le PIC et contenant toutes les données en ENTREES ** //************************************************************************************************************************* procedure TForm1.Timer1Timer(Sender: TObject); // Lire l'octet présent sur les entrées E1 à E8. begin IdUDPClient1.Send(MDP+'INPUT'); // Envoie la commande au format ASCII 'IN' permettant de récupérer l'octet présent sur E1 à E8 ReceivedString := IdUDPClient1.ReceiveString(); if ReceivedString ='' then // Si l'interface ne répond pas, on arrête le programme. begin Timer1.Enabled:=False; // Arrêt du Timer 1 MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Si l'interface ne répond pas à la requête, on quitte le programme (interface déconnectée du réseau). end else begin //** Gestion des entrées IND0 à IND7 ** // IND0 if ReceivedString[1]='f' then Panel1.Color:=clRed; // Affiche un carré rouge pour off. if ReceivedString[1]='o' then Panel1.Color:=clLime; // Affiche un carré vert pour on. // IND1 if ReceivedString[2]='f' then Panel2.Color:=clRed; // Affiche un carré rouge pour off. if ReceivedString[2]='o' then Panel2.Color:=clLime; // Affiche un carré vert pour on. //IND2 if ReceivedString[3]='f' then Panel3.Color:=clRed; // Affiche un carré rouge pour off. if ReceivedString[3]='o' then Panel3.Color:=clLime; // Affiche un carré vert pour on. //IND3 if ReceivedString[4]='f' then Panel4.Color:=clRed; // Affiche un carré rouge pour off. if ReceivedString[4]='o' then Panel4.Color:=clLime; // Affiche un carré vert pour on. // IND4 if ReceivedString[5]='f' then Panel7.Color:=clRed; // Affiche un carré rouge pour off. if ReceivedString[5]='o' then Panel7.Color:=clLime; // Affiche un carré vert pour on. // IND5 if ReceivedString[6]='f' then Panel8.Color:=clRed; // Affiche un carré rouge pour off. if ReceivedString[6]='o' then Panel8.Color:=clLime; // Affiche un carré vert pour on. //IND6 if ReceivedString[7]='f' then Panel9.Color:=clRed; // Affiche un carré rouge pour off. if ReceivedString[7]='o' then Panel9.Color:=clLime; // Affiche un carré vert pour on. //IND7 if ReceivedString[8]='f' then Panel10.Color:=clRed; // Affiche un carré rouge pour off. if ReceivedString[8]='o' then Panel10.Color:=clLime; // Affiche un carré vert pour on. //** FIN: Gestion des entrées IND0 à IND3 ** //** Mise en formes des valeurs analogiques présentent sur les 5 entrées INA0, INA1, INA2, INA3, INA4 ** QUANTUM:=5 / 1024; // Détermine le Quantum du CAN 10 bits intégré au PIC VALEUR:=(StrToInt(ReceivedString[9])*10000)+(StrToInt(ReceivedString[10])*1000)+(StrToInt(ReceivedString[11])*100)+(StrToInt(ReceivedString[12])*10)+StrToInt(ReceivedString[13]); Label6.Caption:='Valeur décimale: '+IntToStr(VALEUR); GAUGE1.Progress:=VALEUR; // Affecte à la gauge1 la valeur mesurée sur l'entrée INA0. TENSION:=QUANTUM * VALEUR; Label17.Caption:='Tension sur INA0= '+FloatToStrF(TENSION,TFloatFormat(ffFixed),10,3)+' Volts'; // Pour n'afficher que 3 chiffres après la virgule. 10= Précision et 3= 3 chiffres après la virgule. VALEUR:=(StrToInt(ReceivedString[15])*10000)+(StrToInt(ReceivedString[16])*1000)+(StrToInt(ReceivedString[17])*100)+(StrToInt(ReceivedString[18])*10)+StrToInt(ReceivedString[19]); Label7.Caption:='Valeur décimale: '+IntToStr(VALEUR); GAUGE2.Progress:=VALEUR; // Affecte à la gauge1 la valeur mesurée sur l'entrée INA1. TENSION:=QUANTUM * VALEUR; Label18.Caption:='Tension sur INA1= '+FloatToStrF(TENSION,TFloatFormat(ffFixed),10,3)+' Volts'; // Pour n'afficher que 3 chiffres après la virgule. 10= Précision et 3= 3 chiffres après la virgule. VALEUR:=(StrToInt(ReceivedString[21])*10000)+(StrToInt(ReceivedString[22])*1000)+(StrToInt(ReceivedString[23])*100)+(StrToInt(ReceivedString[24])*10)+StrToInt(ReceivedString[25]); Label8.Caption:='Valeur décimale: '+IntToStr(VALEUR); GAUGE3.Progress:=VALEUR; // Affecte à la gauge1 la valeur mesurée sur l'entrée INA2. TENSION:=QUANTUM * VALEUR; Label19.Caption:='Tension sur INA2= '+FloatToStrF(TENSION,TFloatFormat(ffFixed),10,3)+' Volts'; // Pour n'afficher que 3 chiffres après la virgule. 10= Précision et 3= 3 chiffres après la virgule. VALEUR:=(StrToInt(ReceivedString[27])*10000)+(StrToInt(ReceivedString[28])*1000)+(StrToInt(ReceivedString[29])*100)+(StrToInt(ReceivedString[30])*10)+StrToInt(ReceivedString[31]); Label9.Caption:='Valeur décimale: '+IntToStr(VALEUR); GAUGE4.Progress:=VALEUR; // Affecte à la gauge1 la valeur mesurée sur l'entrée INA3. TENSION:=QUANTUM * VALEUR; Label20.Caption:='Tension sur INA3= '+FloatToStrF(TENSION,TFloatFormat(ffFixed),10,3)+' Volts'; // Pour n'afficher que 3 chiffres après la virgule. 10= Précision et 3= 3 chiffres après la virgule. VALEUR:=(StrToInt(ReceivedString[33])*10000)+(StrToInt(ReceivedString[34])*1000)+(StrToInt(ReceivedString[35])*100)+(StrToInt(ReceivedString[36])*10)+StrToInt(ReceivedString[37]); Label10.Caption:='Valeur décimale: '+IntToStr(VALEUR); GAUGE5.Progress:=VALEUR; // Affecte à la gauge1 la valeur mesurée sur l'entrée INA4. TENSION:=QUANTUM * VALEUR; Label21.Caption:='Tension sur INA4= '+FloatToStrF(TENSION,TFloatFormat(ffFixed),10,3)+' Volts'; // Pour n'afficher que 3 chiffres après la virgule. 10= Précision et 3= 3 chiffres après la virgule. //** FIN: Mise en formes des valeurs analogiques présentent sur les 5 entrées INA0, INA1, INA2, INA3, INA4 ** //** Mise en forme de la chaine de caractères pour l'affichage de la température du capteur DS18B20 ** //** Pour une valeur reçue = -000125 transcrire la température comme -12,5°C. //** Pour une valeur reçue = +000259 transcrire la température comme +25,9°C. VALEUR:=(StrToInt(ReceivedString[39])*100000)+(StrToInt(ReceivedString[40])*10000)+(StrToInt(ReceivedString[41])*1000)+(StrToInt(ReceivedString[42])*100)+(StrToInt(ReceivedString[43])*10)+StrToInt(ReceivedString[44]); TEMPERATURE:=VALEUR / 10; if ReceivedString[38]='+' then begin Label4.Caption:='+'+FloatToStr(TEMPERATURE)+'°C'; // Pour les températures positives end; if ReceivedString[38]='-' then begin Label4.Caption:='-'+FloatToStr(TEMPERATURE)+'°C'; // Pour les températures négatives end; //** FIN: Mise en forme de la chaine de caractères pour l'affichage de la température du capteur DS18B20 ** end; end; //*********************************************************************** //** FIN: Lecture en boucle de l'octet présent sur les entrées E1 à E4 ** //*********************************************************************** //** Bouton "Activation en boucle de la lecture des entrées de l'interface" ** procedure TForm1.SpeedButton1Click(Sender: TObject); begin Timer1.Enabled:=True; // Active le timer 1 end; //**************************************************************************** end.