// Attention : Le fonctionnement du programme requiert la DLL nommée : mcHID.dll. // N'oubliez pas d'inclure dans le même répertoire de votre programme cette fameuse DLL !!! unit FormMain; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls, ComCtrls, Spin; const // input et out buffer size constants... BufferInSize = 64; BufferOutSize = 64; type // input and output buffers... TBufferIn = array[0..BufferInSize] of byte; TBufferOut = array[0..BufferOutSize] of byte; // main form TForm1 = class(TForm) SpeedButton1: TSpeedButton; SpinEdit1: TSpinEdit; GroupBox1: TGroupBox; Label1: TLabel; Label2: TLabel; SpinEdit2: TSpinEdit; SpinEdit3: TSpinEdit; Label3: TLabel; GroupBox2: TGroupBox; SpeedButton2: TSpeedButton; Label4: TLabel; Label5: TLabel; Label6: TLabel; SpinEdit4: TSpinEdit; SpinEdit5: TSpinEdit; Label7: TLabel; SpinEdit6: TSpinEdit; Label8: TLabel; SpinEdit7: TSpinEdit; SpinEdit8: TSpinEdit; GroupBox3: TGroupBox; SpeedButton3: TSpeedButton; Label9: TLabel; SpinEdit9: TSpinEdit; Label10: TLabel; SpinEdit10: TSpinEdit; Label11: TLabel; SpinEdit11: TSpinEdit; Label12: TLabel; SpinEdit12: TSpinEdit; Label13: TLabel; SpinEdit13: TSpinEdit; GroupBox4: TGroupBox; SpeedButton4: TSpeedButton; Label14: TLabel; SpinEdit14: TSpinEdit; Label15: TLabel; SpinEdit15: TSpinEdit; Label16: TLabel; SpinEdit16: TSpinEdit; Label17: TLabel; SpinEdit17: TSpinEdit; Label18: TLabel; SpinEdit18: TSpinEdit; GroupBox5: TGroupBox; SpeedButton5: TSpeedButton; Label19: TLabel; SpinEdit19: TSpinEdit; Label20: TLabel; SpinEdit20: TSpinEdit; Label21: TLabel; SpinEdit21: TSpinEdit; Label22: TLabel; SpinEdit22: TSpinEdit; GroupBox6: TGroupBox; SpeedButton6: TSpeedButton; Label23: TLabel; SpinEdit23: TSpinEdit; Label24: TLabel; SpinEdit24: TSpinEdit; Label25: TLabel; SpinEdit25: TSpinEdit; Label26: TLabel; SpinEdit26: TSpinEdit; GroupBox7: TGroupBox; SpeedButton7: TSpeedButton; GroupBox8: TGroupBox; SpeedButton8: TSpeedButton; GroupBox9: TGroupBox; SpeedButton9: TSpeedButton; Label27: TLabel; SpinEdit27: TSpinEdit; Label28: TLabel; SpinEdit28: TSpinEdit; Label29: TLabel; SpinEdit29: TSpinEdit; Edit1: TEdit; SpeedButton10: TSpeedButton; Panel1: TPanel; procedure FormCreate(Sender: TObject); procedure SpeedButton1Click(Sender: TObject); procedure SpeedButton2Click(Sender: TObject); procedure SpeedButton3Click(Sender: TObject); procedure SpeedButton4Click(Sender: TObject); procedure SpeedButton5Click(Sender: TObject); procedure SpeedButton6Click(Sender: TObject); procedure SpeedButton7Click(Sender: TObject); procedure SpeedButton8Click(Sender: TObject); procedure SpeedButton9Click(Sender: TObject); procedure SpeedButton10Click(Sender: TObject); private FBufferOut:TBufferOut; public end; var Form1: TForm1; implementation uses cUSBInterface, cUSBInterfaceTypes; const // VENDOR et PRODUCT ID. // Attention, ne pas changer ces 2 constantes sinon l'interface ne sera plus reconnue. VENDOR_ID = $1240; PRODUCT_ID = $0011; {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin Connect(Application.Handle); // Indispensable !!! SpinEdit3.Value :=1; // Affichage par défaut du Point SpinEdit8.Value :=1; // Affichage par défaut de la droite SpinEdit13.Value :=1; // Affichage par défaut du rectangle vide SpinEdit18.Value :=1; // Affichage par défaut du rectangle plein SpinEdit22.Value :=1; // Affichage par défaut du cercle vide SpinEdit26.Value :=1; // Affichage par défaut du cercle plein SpinEdit29.Value :=1; // Affichage par défaut du texte Edit1.Text:=''; end; //*********************************************************** //*********************************************************** //** Procedures de transfert des données du PC vers le PIC ** //*********************************************************** //*********************************************************** //********************* //* Afficher un point * //********************* procedure TForm1.SpeedButton1Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 1; FBufferOut[2] := SpinEdit1.Value; // Envoie la valeur de X au PIC. FBufferOut[3] := SpinEdit2.Value; // Envoie la valeur de Y au PIC. FBufferOut[4] := SpinEdit3.Value; // Envoie la valeur d'affichage au PIC. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; //*********************** //* Afficher une droite * //*********************** procedure TForm1.SpeedButton2Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 2; FBufferOut[2] := SpinEdit4.Value; // Envoie la valeur X1 au PIC. FBufferOut[3] := SpinEdit5.Value; // Envoie la valeur Y1 au PIC. FBufferOut[4] := SpinEdit6.Value; // Envoie la valeur X2 au PIC. FBufferOut[5] := SpinEdit7.Value; // Envoie la valeur Y2 au PIC. FBufferOut[6] := SpinEdit8.Value; // Envoie la valeur d'affichage au PIC. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; //****************************** //* Afficher un rectangle vide * //****************************** procedure TForm1.SpeedButton3Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 3; FBufferOut[2] := SpinEdit9.Value; // Envoie la valeur X1 au PIC. FBufferOut[3] := SpinEdit10.Value; // Envoie la valeur Y1 au PIC. FBufferOut[4] := SpinEdit11.Value; // Envoie la valeur X2 au PIC. FBufferOut[5] := SpinEdit12.Value; // Envoie la valeur Y2 au PIC. FBufferOut[6] := SpinEdit13.Value; // Envoie la valeur d'affichage au PIC. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; //******************************* //* Afficher un rectangle plein * //******************************* procedure TForm1.SpeedButton4Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 4; FBufferOut[2] := SpinEdit14.Value; // Envoie la valeur X1 au PIC. FBufferOut[3] := SpinEdit15.Value; // Envoie la valeur Y1 au PIC. FBufferOut[4] := SpinEdit16.Value; // Envoie la valeur X2 au PIC. FBufferOut[5] := SpinEdit17.Value; // Envoie la valeur Y2 au PIC. FBufferOut[6] := SpinEdit18.Value; // Envoie la valeur d'affichage au PIC. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; //*************************** //* Afficher un cercle vide * //*************************** procedure TForm1.SpeedButton5Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 5; FBufferOut[2] := SpinEdit19.Value; // Envoie la valeur X au PIC. FBufferOut[3] := SpinEdit20.Value; // Envoie la valeur Y au PIC. FBufferOut[4] := SpinEdit21.Value; // Envoie la valeur Rayon au PIC. FBufferOut[5] := SpinEdit22.Value; // Envoie la valeur d'affichage au PIC. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; //*************************** //* Afficher un cercle plein * //*************************** procedure TForm1.SpeedButton6Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 6; FBufferOut[2] := SpinEdit23.Value; // Envoie la valeur X au PIC. FBufferOut[3] := SpinEdit24.Value; // Envoie la valeur Y au PIC. FBufferOut[4] := SpinEdit25.Value; // Envoie la valeur Rayon au PIC. FBufferOut[5] := SpinEdit26.Value; // Envoie la valeur d'affichage au PIC. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; //*********************** //* Effacer l'écran LCD * //*********************** procedure TForm1.SpeedButton7Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 7; DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; //***************************************** //* Active / désactive le rétro-éclairage * //***************************************** procedure TForm1.SpeedButton8Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 8; DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; //********************** //* Paramètre du texte * //********************** procedure TForm1.SpeedButton9Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 9; FBufferOut[2] := SpinEdit27.Value; // Envoie la valeur de Position X au PIC. FBufferOut[3] := SpinEdit28.Value; // Envoie la valeur du N° de la page au PIC. FBufferOut[4] := SpinEdit29.Value; // Envoie la valeur d'affichage au PIC. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; //******************** //* Contenu du texte * //******************** procedure TForm1.SpeedButton10Click(Sender: TObject); var DevHandle:cardinal; Long, i : Integer; begin FBufferOut[1] := 10; Long := Length(Edit1.text); // Détermine le nombre de caractères tapés dans Edit.text. if Long = 0 Then Exit; // Si aucun caractère tapé dans Edit.text, sortir de la procédure. FBufferOut[2] := Long; // On transmet le nombre de caractères contenus dans Edit1 vers le PIC For i:= 0 to (Long+1) Do Begin FBufferOut[i+3]:=Ord(Edit1.Text[i+1]); // Transfert de la chaine de caractère vers le PIC End; DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; //*************************************************************** //*************************************************************** //** FIN Procedures de transfert des données du PC vers le PIC ** //*************************************************************** //*************************************************************** end.