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; type TForm1 = class(TForm) IdUDPClient1: TIdUDPClient; GroupBox3: TGroupBox; SpeedButton2: TSpeedButton; Edit1: TEdit; Edit2: TEdit; Edit3: TEdit; Edit4: TEdit; SpeedButton1: TSpeedButton; SpeedButton3: TSpeedButton; SpeedButton4: TSpeedButton; SpeedButton5: TSpeedButton; SpeedButton6: TSpeedButton; SpeedButton7: TSpeedButton; RadioButton1: TRadioButton; RadioButton2: TRadioButton; procedure FormCreate(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure SpeedButton4Click(Sender: TObject); procedure SpeedButton5Click(Sender: TObject); procedure SpeedButton6Click(Sender: TObject); procedure SpeedButton7Click(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); procedure RadioButton1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); procedure RadioButton2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); private { Déclarations privées } public { Déclarations publiques } end; var Form1: TForm1; ReceivedString: String; 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. IdUDPClient1.ReceiveTimeout:=1000; // Délais maxi d'une seconde pour que le périphérique à base d'ENC28J60 réponde. //Timer1.Interval:=500; // Lecture de l'octet présent sur E1 à E8 toutes les 500ms. Edit1.text:=''; // Efface le contenu des 4 Edit. Edit2.text:=''; Edit3.text:=''; Edit4.text:=''; RadioButton2.Checked:=True; // Active par défaut la prise en compte d'un LCD de 20 caractères. Edit1.MaxLength:=20; // Limitation à 20 caractères maxi pour chaque edit. Edit2.MaxLength:=20; Edit3.MaxLength:=20; Edit4.MaxLength:=20; end; procedure TForm1.RadioButton1MouseDown(Sender: TObject; // L'utilisateur possède un LCD à 16 caractères. Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Edit1.MaxLength:=16; // Limitation à 16 caractères maxi pour chaque edit. Edit2.MaxLength:=16; Edit3.MaxLength:=16; Edit4.MaxLength:=16; IdUDPClient1.Send('S'); // On envoie le caractère "S" afin de gérer correctement le LCD de 16 caractères. ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then // Si l'interface ne répond pas... begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.RadioButton2MouseDown(Sender: TObject; // L'utilisateur possède un LCD à 20 caractères. Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin Edit1.MaxLength:=20; // Limitation à 20 caractères maxi pour chaque edit. Edit2.MaxLength:=20; Edit3.MaxLength:=20; Edit4.MaxLength:=20; IdUDPClient1.Send('V'); // On envoie le caractère "S" afin de gérer correctement le LCD de 20 caractères. ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then // Si l'interface ne répond pas... begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton2Click(Sender: TObject); // Transfert ligne 1 du LCD begin IdUDPClient1.Send('1'+Edit1.Text); // On envoie le caractère "1" suivi de la chaine de caractères. ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then // Si l'interface ne répond pas... begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton4Click(Sender: TObject); // Transfert ligne 2 du LCD begin IdUDPClient1.Send('2'+Edit2.Text); // On envoie le caractère "2" suivi de la chaine de caractères. ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then // Si l'interface ne répond pas... begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton5Click(Sender: TObject); // Transfert ligne 3 du LCD begin IdUDPClient1.Send('3'+Edit3.Text); // On envoie le caractère "3" suivi de la chaine de caractères. ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then // Si l'interface ne répond pas... begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton6Click(Sender: TObject); // Transfert ligne 4 du LCD begin IdUDPClient1.Send('4'+Edit4.Text); // On envoie le caractère "4" suivi de la chaine de caractères. ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then // Si l'interface ne répond pas... begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton7Click(Sender: TObject); // Efface le LCD begin IdUDPClient1.Send('C'); // On envoie le caractère "C" afin d'efface la totalité des caractères présents sur le LCD. ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then // Si l'interface ne répond pas... begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton1Click(Sender: TObject); // Arrêt du rétro-éclairage begin IdUDPClient1.Send('F'); // On envoie le caractère "F" afin d'arrêter le rétro-éclairage du LCD. ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then // Si l'interface ne répond pas... begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Quitte le programme (interface déconnectée du réseau). end; end; procedure TForm1.SpeedButton3Click(Sender: TObject); // Active le rétro-éclairage. begin IdUDPClient1.Send('N'); // On envoie le caractère "N" afin d'activer le rétro-éclairage du LCD. ReceivedString := IdUDPClient1.ReceiveString(); // L'interface est-elle présente sur le réseau ? if ReceivedString = '' then // Si l'interface ne répond pas... begin MessageDlg ('L''interface ne répond pas. Le programme va s''arrêter...', mtInformation,[mbOk],0); Application.Terminate; // Quitte le programme (interface déconnectée du réseau). end; end; end.