2011-02-16 3 views

답변

2

나는 이것을 PC의 USB 블루투스 동글을 통해 PS3 블루 레이를 읽는 데 사용합니다. 다른 HID 장치를 읽는 데 사용할 수 있습니다. 각 동작에 대한 코드를 검색하기 위해 조금만 실험 해보십시오.

function JvHidDeviceController1Enumerate(HidDev: TJvHidDevice; const Idx: Integer): Boolean; 
procedure PS3Read(HidDev: TJvHidDevice; ReportID: Byte; const Data: Pointer; Size: Word); 

PS3Dev: TJvHidDevice; 
PS3Box: TGroupBox; 
PS3BDRemote: TCheckBox; 
ps3DemoLabel: TLabel; 

function JvHidDeviceController1Enumerate(HidDev: TJvHidDevice; const Idx: Integer): Boolean; 
Var Dev: TJvHidDevice; 
begin 
    if HidDev.ProductName = 'BD Remote Control' then 
    begin 
    PS3Box.Caption:= 'PS3 - Status: found'; 
    JvHidDeviceController1.CheckOutByIndex(Dev, Idx); 
    Dev.NumInputBuffers := 128; 
    Dev.NumOverlappedBuffers := 128; 
    Dev.OnData := PS3Read; 
    PS3Dev:= Dev; 
    end; 
    Result := True; 
end; 

procedure test; 
begin 
if not PS3BDRemote.Checked then 
begin 
    if Assigned(PS3Dev) then 
    begin 
    JvHidDeviceController1.CheckIn(PS3Dev); 
    PS3Dev.OnData := nil; 
    PS3Dev:= nil; 
    end; 
    PS3Box.Caption:= 'PS3 - Disabled'; 
end 
else 
begin 
    if not Assigned(PS3Dev) then JvHidDeviceController1.Enumerate 
    else PS3Box.Caption:= 'PS3 - Status: found'; 
end; 
end; 

procedure PS3Read(HidDev: TJvHidDevice; ReportID: Byte; const Data: Pointer; Size: Word); 
var I: Integer; 
    Str: string; 
begin 
    Str := Format('RD %.2x ', [ReportID]); 
    for I := 0 to Size - 1 do 
    Str := Str + Format('%.2x ', [Cardinal(PChar(Data)[I])]); 
    MyKillChar(Str,' ',false); 
    if Str = 'RD010000080BFFFFFFFFFF0103' then 
    begin 
    // enter was pressed, do stuff here (button down) 
    Exit; 
    end; 
    if Str = 'RD01000000FFFFFFFFFFFF0003' then 
    begin 
    // enter was pressed, do stuff here (button up) 
    Exit; 
    end; 
    ps3DemoLabel.Caption:= Str; 
    Logs.Memo1.lines.add(str); 
end; 
관련 문제