Componente jedi USB HID no Firemonkey

15/07/2021

4

Tenho os componente Jedi instalado no Delphi tokio,sempre usei o componente USBHidcontrol em VCL desde o Delphi 7.
Precisei usar esta comunicação num aplicativo Firemonkey no Windows,para utilizar 3D,mas o com´ponente não está disponível no Firemonkey.
Pesquisando na internet, desenvolvi um método para usar em firemonkey.

...
Type
HidCtl: TJvHidDeviceController;
...
procedure HidCtlDeviceChange(Sender: TObject);
function DeviceName(HidDev: TJvHidDevice): string;
procedure HidCtlDeviceData(HidDev: TJvHidDevice; ReportID: Byte;const
Data: Pointer; Size: Word);
function HidCtlEnumerate(HidDev: TJvHidDevice;const Idx: Integer):
Boolean;
procedure HidCtlRemoval(HidDev: TJvHidDevice);
...
public
{ Public declarations }
CurrentDevice: TJvHidDevice;
...
procedure TFrmMain.FormCreate(Sender: TObject);
var;
H: TJvHidDeviceController;
begin
H:=TJvHidDeviceController.Create(self);
H.DevPollingDelayTime:=0;
H.DevThreadSleepTime:=100;
H.Name:='HidCtl';
H.Tag:=0;
H.Version:='1.0.35';
H.OnDeviceChange:=HidCtlDeviceChange;
H.OnDeviceData:=HidCtlDeviceData;
H.OnEnumerate:=HidCtlEnumerate;
H.OnRemoval:=HidCtlRemoval;
//.....................................
Funciona perfeitamente, mas na primeira vez que a compilação é feita,
aparece um aviso de que HIDCTL não tem um componente relacionado.
Escolhendo "não remover" a compilação continua normalmente e o
aviso só volta se eu mudar algo no código.
Minha implementação está errada ou é outra maneira que devo usá-la?
Responder

Posts

24/07/2021

Vtrx

Tenho os componente Jedi instalado no Delphi tokio,sempre usei o componente USBHidcontrol em VCL desde o Delphi 7.
Precisei usar esta comunicação num aplicativo Firemonkey no Windows,para utilizar 3D,mas o com´ponente não está disponível no Firemonkey.
Pesquisando na internet, desenvolvi um método para usar em firemonkey.

...
Type
HidCtl: TJvHidDeviceController;
...
procedure HidCtlDeviceChange(Sender: TObject);
function DeviceName(HidDev: TJvHidDevice): string;
procedure HidCtlDeviceData(HidDev: TJvHidDevice; ReportID: Byte;const
Data: Pointer; Size: Word);
function HidCtlEnumerate(HidDev: TJvHidDevice;const Idx: Integer):
Boolean;
procedure HidCtlRemoval(HidDev: TJvHidDevice);
...
public
{ Public declarations }
CurrentDevice: TJvHidDevice;
...
procedure TFrmMain.FormCreate(Sender: TObject);
var;
H: TJvHidDeviceController;
begin
H:=TJvHidDeviceController.Create(self);
H.DevPollingDelayTime:=0;
H.DevThreadSleepTime:=100;
H.Name:='HidCtl';
H.Tag:=0;
H.Version:='1.0.35';
H.OnDeviceChange:=HidCtlDeviceChange;
H.OnDeviceData:=HidCtlDeviceData;
H.OnEnumerate:=HidCtlEnumerate;
H.OnRemoval:=HidCtlRemoval;
//.....................................
Funciona perfeitamente, mas na primeira vez que a compilação é feita,
aparece um aviso de que HIDCTL não tem um componente relacionado.
Escolhendo "não remover" a compilação continua normalmente e o
aviso só volta se eu mudar algo no código.
Minha implementação está errada ou é outra maneira que devo usá-la?


RESOLVIDO.

Caso alguém precise usar o componente HIDControll no Firemonkey,aqui vai as alterações:

type
 TForm1 = class(TForm)
//HidCtl: TJvHidDeviceController;
...
  public
    { Public declarations }
    CurrentDevice: TJvHidDevice;
    HidCtl: TJvHidDeviceController;
  end;
...
procedure TForm1.FormCreate(Sender: TObject);
TJvHidDeviceController;
begin
 HidCtl := TJvHidDeviceController.Create(self);
 HidCtl.DevThreadSleepTime:=100;
 HidCtl.Name:='HidCtl';
 HidCtl.Tag:=0;
 HidCtl.Version:='1.0.34';
 HidCtl.OnDeviceChange:=HidCtlDeviceChange;
 HidCtl.OnDeviceData:=HidCtlDeviceData;
 HidCtl.OnEnumerate:=HidCtlEnumerate;
 HidCtl.OnRemoval:=HidCtlRemoval;
end;
...


Responder

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários. Para saber mais sobre o uso de cookies,
consulte nossa política de privacidade. Ao continuar navegando em nosso site, você concorda com a nossa política.

Aceitar