// 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; 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) GroupBox1: TGroupBox; SpeedButton1: TSpeedButton; GroupBox2: TGroupBox; Label1: TLabel; Label2: TLabel; SpeedButton3: TSpeedButton; SpeedButton4: TSpeedButton; SpeedButton5: TSpeedButton; SpeedButton6: TSpeedButton; SpeedButton7: TSpeedButton; SpeedButton8: TSpeedButton; SpeedButton9: TSpeedButton; SpeedButton10: TSpeedButton; SpeedButton11: TSpeedButton; SpeedButton12: TSpeedButton; SpeedButton13: TSpeedButton; SpeedButton14: TSpeedButton; SpeedButton15: TSpeedButton; SpeedButton16: TSpeedButton; SpeedButton17: TSpeedButton; Panel1: TPanel; SpeedButton2: TSpeedButton; SpeedButton18: TSpeedButton; SpeedButton19: TSpeedButton; SpeedButton20: TSpeedButton; SpeedButton21: TSpeedButton; SpeedButton22: TSpeedButton; SpeedButton23: TSpeedButton; SpeedButton24: TSpeedButton; SpeedButton25: TSpeedButton; SpeedButton26: TSpeedButton; SpeedButton27: TSpeedButton; SpeedButton28: TSpeedButton; SpeedButton29: TSpeedButton; SpeedButton30: TSpeedButton; SpeedButton31: TSpeedButton; SpeedButton32: TSpeedButton; SpeedButton33: TSpeedButton; SpeedButton34: TSpeedButton; SpeedButton35: TSpeedButton; SpeedButton36: TSpeedButton; SpeedButton37: TSpeedButton; SpeedButton38: TSpeedButton; SpeedButton39: TSpeedButton; SpeedButton40: TSpeedButton; SpeedButton41: TSpeedButton; SpeedButton42: TSpeedButton; SpeedButton43: TSpeedButton; SpeedButton44: TSpeedButton; SpeedButton45: TSpeedButton; SpeedButton46: TSpeedButton; SpeedButton47: TSpeedButton; SpeedButton48: TSpeedButton; GroupBox3: TGroupBox; SpeedButton49: TSpeedButton; SpeedButton50: TSpeedButton; GroupBox4: TGroupBox; Label3: TLabel; GroupBox5: TGroupBox; TrackBar1: TTrackBar; Label4: TLabel; procedure FormCreate(Sender: TObject); procedure FormDestroy(Sender: TObject); procedure SpeedButton1Click(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); 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 SpeedButton2Click(Sender: TObject); procedure SpeedButton18Click(Sender: TObject); procedure SpeedButton19Click(Sender: TObject); procedure SpeedButton20Click(Sender: TObject); procedure SpeedButton21Click(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); procedure SpeedButton32Click(Sender: TObject); procedure SpeedButton33Click(Sender: TObject); procedure SpeedButton34Click(Sender: TObject); procedure SpeedButton35Click(Sender: TObject); procedure SpeedButton36Click(Sender: TObject); procedure SpeedButton37Click(Sender: TObject); procedure SpeedButton38Click(Sender: TObject); procedure SpeedButton39Click(Sender: TObject); procedure SpeedButton40Click(Sender: TObject); procedure SpeedButton41Click(Sender: TObject); procedure SpeedButton42Click(Sender: TObject); procedure SpeedButton43Click(Sender: TObject); procedure SpeedButton44Click(Sender: TObject); procedure SpeedButton45Click(Sender: TObject); procedure SpeedButton46Click(Sender: TObject); procedure SpeedButton47Click(Sender: TObject); procedure SpeedButton48Click(Sender: TObject); procedure SpeedButton49Click(Sender: TObject); procedure SpeedButton50Click(Sender: TObject); procedure TrackBar1Change(Sender: TObject); private FBufferIn:TBufferIn; FBufferOut:TBufferOut; function USBEvent(var Msg: TMessage): Boolean; 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 = 0010; {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin Application.HookMainWindow(USBEvent); Connect(Application.Handle); // Indispensable !!! Label3.Caption:='0'; Label4.Caption:='127'; // Positions par défaut du TrackBar1 pour la sortie RC2 permettant de définir le rapport cyclique du signal PWM TrackBar1.Max:=255; // Valeur maxi du rapport cyclique TrackBar1.Min:=0; // Valeur mini du rapport cyclique TrackBar1.Position:=127; // Position par défaut du rapport cyclique de la sortie à 50% end; //******************************** //* Ne pas supprimer ces lignes. * //******************************** procedure TForm1.FormDestroy(Sender: TObject); begin Application.UnHookMainWindow(USBEvent); end; //********************************** //*********************************************************** //*********************************************************** //** Procedures de transfert des données du PC vers le PIC ** //*********************************************************** //*********************************************************** //*************************** //* Gestion USB des boutons * //*************************** //** GROUPE ON ** procedure TForm1.SpeedButton1Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 1; // Groupe de commande ON FBufferOut[2] := 1; // Sortie S1 activée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton3Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 1; // Groupe de commande ON FBufferOut[2] := 2; // Sortie S2 activée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton4Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 1; // Groupe de commande ON FBufferOut[2] := 3; // Sortie S3 activée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton5Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 1; // Groupe de commande ON FBufferOut[2] := 4; // Sortie S4 activée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton6Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 1; // Groupe de commande ON FBufferOut[2] := 5; // Sortie S5 activée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton7Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 1; // Groupe de commande ON FBufferOut[2] := 6; // Sortie S6 activée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton8Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 1; // Groupe de commande ON FBufferOut[2] := 7; // Sortie S7 activée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton9Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 1; // Groupe de commande ON FBufferOut[2] := 8; // Sortie S8 activée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton10Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 1; // Groupe de commande ON FBufferOut[2] := 9; // Sortie S9 activée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton11Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 1; // Groupe de commande ON FBufferOut[2] := 10; // Sortie S10 activée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton12Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 1; // Groupe de commande ON FBufferOut[2] := 11; // Sortie S11 activée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton13Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 1; // Groupe de commande ON FBufferOut[2] := 12; // Sortie S12 activée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton14Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 1; // Groupe de commande ON FBufferOut[2] := 13; // Sortie S13 activée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton15Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 1; // Groupe de commande ON FBufferOut[2] := 14; // Sortie S14 activée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton16Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 1; // Groupe de commande ON FBufferOut[2] := 15; // Sortie S15 activée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton17Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 1; // Groupe de commande ON FBufferOut[2] := 16; // Sortie S16 activée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; //** GROUPE OFF ** procedure TForm1.SpeedButton2Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 2; // Groupe de commande OFF FBufferOut[2] := 1; // Sortie S1 désactivée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton18Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 2; // Groupe de commande OFF FBufferOut[2] := 2; // Sortie S2 désactivée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton19Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 2; // Groupe de commande OFF FBufferOut[2] := 3; // Sortie S3 désactivée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton20Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 2; // Groupe de commande OFF FBufferOut[2] := 4; // Sortie S4 désactivée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton21Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 2; // Groupe de commande OFF FBufferOut[2] := 5; // Sortie S5 désactivée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton22Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 2; // Groupe de commande OFF FBufferOut[2] := 6; // Sortie S6 désactivée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton23Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 2; // Groupe de commande OFF FBufferOut[2] := 7; // Sortie S7 désactivée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton24Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 2; // Groupe de commande OFF FBufferOut[2] := 8; // Sortie S8 désactivée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton25Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 2; // Groupe de commande OFF FBufferOut[2] := 9; // Sortie S9 désactivée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton26Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 2; // Groupe de commande OFF FBufferOut[2] := 10; // Sortie S10 désactivée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton27Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 2; // Groupe de commande OFF FBufferOut[2] := 11; // Sortie S11 désactivée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton28Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 2; // Groupe de commande OFF FBufferOut[2] := 12; // Sortie S12 désactivée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton29Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 2; // Groupe de commande OFF FBufferOut[2] := 13; // Sortie S13 désactivée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton30Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 2; // Groupe de commande OFF FBufferOut[2] := 14; // Sortie S14 désactivée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton31Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 2; // Groupe de commande OFF FBufferOut[2] := 15; // Sortie S15 désactivée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton32Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 2; // Groupe de commande OFF FBufferOut[2] := 16; // Sortie S16 désactivée. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; //** GROUPE TOGGLE ** procedure TForm1.SpeedButton33Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 3; // Groupe de commande Toggle FBufferOut[2] := 1; // Sortie S1. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton34Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 3; // Groupe de commande Toggle FBufferOut[2] := 2; // Sortie S2. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton35Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 3; // Groupe de commande Toggle FBufferOut[2] := 3; // Sortie S3. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton36Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 3; // Groupe de commande Toggle FBufferOut[2] := 4; // Sortie S4. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton37Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 3; // Groupe de commande Toggle FBufferOut[2] := 5; // Sortie S5. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton38Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 3; // Groupe de commande Toggle FBufferOut[2] := 6; // Sortie S6. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton39Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 3; // Groupe de commande Toggle FBufferOut[2] := 7; // Sortie S7. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton40Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 3; // Groupe de commande Toggle FBufferOut[2] := 8; // Sortie S8. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton41Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 3; // Groupe de commande Toggle FBufferOut[2] := 9; // Sortie S9. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton42Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 3; // Groupe de commande Toggle FBufferOut[2] := 10; // Sortie S10. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton43Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 3; // Groupe de commande Toggle FBufferOut[2] := 11; // Sortie S11. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton44Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 3; // Groupe de commande Toggle FBufferOut[2] := 12; // Sortie S12. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton45Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 3; // Groupe de commande Toggle FBufferOut[2] := 13; // Sortie S13. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton46Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 3; // Groupe de commande Toggle FBufferOut[2] := 14; // Sortie S14. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton47Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 3; // Groupe de commande Toggle FBufferOut[2] := 15; // Sortie S15. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; procedure TForm1.SpeedButton48Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 3; // Groupe de commande Toggle FBufferOut[2] := 16; // Sortie S16. DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; //** GROUPE Commandes avancées ON ** procedure TForm1.SpeedButton49Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 4; // Groupe de commandes avancées : Toutes sorties ON DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; //** GROUPE Commandes avancées OFF ** procedure TForm1.SpeedButton50Click(Sender: TObject); var DevHandle:cardinal; begin FBufferOut[1] := 5; // Groupe de commandes avancées : Toutes sorties OFF 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 ** //*************************************************************** //*************************************************************** //**************************************************************** //**************************************************************** //* Fonction dédiée au transfert des données du PIC vers le PC. ** //**************************************************************** //**************************************************************** function TForm1.USBEvent(var Msg: TMessage): Boolean; var DevHandle:cardinal; begin result := False; if Msg.Msg = WM_HID_EVENT then begin case Msg.WParam of //** Ne retirez pas 6 lignes suivantes, elles sont indispensables !!! ** NOTIFY_CHANGED : begin DevHandle := GetHandle(VENDOR_ID,PRODUCT_ID); SetReadNotify(DevHandle,true); result := true; end; //********************************************************************** //********************************* //** Transfert du PIC vers le PC.** //********************************* // L'interface universelle I/O a envoyé des données... NOTIFY_READ : begin DevHandle := Msg.LParam; if (GetVendorID(DevHandle) = VENDOR_ID) and (GetProductID(DevHandle) = PRODUCT_ID) then begin // lecture des données. Read(DevHandle,@FBufferIn); //... Votre CODE ... //************************* //** 8 entrées digitales** //************************* //** Octet envoyé par le PIC correspondant aux entrées : RC1 (MSB), RC0, RB5, RB4, RB3, RB2, RB1, RB0 (LSB). label3.Caption:=IntToStr(FBufferIn[1]); // Affiche la valeur de l'octet. //************************** //** FIN entrées digitales** //************************** end; result := true; end; end; end; end; //******************************************************************** //******************************************************************** //* FIN Fonction dédiée au transfert des données du PIC vers le PC. ** //******************************************************************** //******************************************************************** //******************************* //** Gestion de la Sortie PWM ** //******************************* procedure TForm1.TrackBar1Change(Sender: TObject); var DevHandle:cardinal; begin // Affiche la position du Trackbar1 Label4.Caption:=IntToStr(TrackBar1.Position); // Transfert USB du PC vers le PIC FBufferOut[1]:=6; // On indique au PIC que l'on va lui envoyer la valeur du TrackBar1 FBufferOut[2]:=TrackBar1.Position; DevHandle := GetHandle(VENDOR_ID, Product_ID); // Transfert USB PC vers PIC. Write(DevHandle,@FBufferOut); end; //************************************ //** FIN: Gestion de la Sortie PWM ** //************************************ end.