Hola.
1 .- pues se va a usar tanto en 32 bits como en 64, win xp, 7, 8, ... (hasta ahora cuando he usado el componente solo ha sido para lectura)
2 .- el componente es : HidControler para delphi 6
3 . -al descriptor que me refiero es al que informa la interfaz al preguntarle al dispositivo:
"DragonRise Inc. " "Generic USB Joystick " VID=$0079 PID=$0006
Input Report Size=8
Output Report Size=7
Feature Report Size=0
Button Input
============
0)
UsagePage: Button ($0009)
ReportID: 0
IsAlias: False
BitField: 2
LinkCollection: 1
LinkUsage: Undefined ($0000)
LinkUsagePage: Generic Desktop ($0001)
IsRange: True
IsStringRange: False
IsDesignatorRange: False
IsAbsolute: True
UsageMin: 1 UsageMax: 12
StringMin: 0 StringMax: 0
DesignatorMin: 0 DesignatorMax: 0
DataIndexMin: 6 DataIndexMax: 17
1)
UsagePage: FF00 ($FF00)
ReportID: 0
IsAlias: False
BitField: 2
LinkCollection: 1
LinkUsage: Undefined ($0000)
LinkUsagePage: Generic Desktop ($0001)
IsRange: False
IsStringRange: False
IsDesignatorRange: False
IsAbsolute: True
Usage: 1 ($0001)
StringIndex: 0
DesignatorIndex: 0
DataIndex: 18
Value Input
===========
0)
UsagePage: Generic Desktop ($0001)
ReportID: 0
IsAlias: False
BitField: 2
LinkCollection: 1
LinkUsage: Undefined ($0000)
LinkUsagePage: Generic Desktop ($0001)
IsRange: False
IsStringRange: False
IsDesignatorRange: False
IsAbsolute: True
HasNull: False
BitSize: 8
ReportCount: 1
UnitsExp: 0
Units: 0
LogicalMin: 0
LogicalMax: 255
PhysicalMin: 0
PhysicalMax: 255
Usage: Relative Z Axis ($0035)
StringIndex: 0
DesignatorIndex: 0
DataIndex: 0
1)
UsagePage: Generic Desktop ($0001)
ReportID: 0
IsAlias: False
BitField: 2
LinkCollection: 1
LinkUsage: Undefined ($0000)
LinkUsagePage: Generic Desktop ($0001)
IsRange: False
IsStringRange: False
IsDesignatorRange: False
IsAbsolute: True
HasNull: False
BitSize: 8
ReportCount: 1
UnitsExp: 0
Units: 0
LogicalMin: 0
LogicalMax: 255
PhysicalMin: 0
PhysicalMax: 255
Usage: Z Axis ($0032)
StringIndex: 0
DesignatorIndex: 0
DataIndex: 1
2)
UsagePage: Generic Desktop ($0001)
ReportID: 0
IsAlias: False
BitField: 2
LinkCollection: 1
LinkUsage: Undefined ($0000)
LinkUsagePage: Generic Desktop ($0001)
IsRange: False
IsStringRange: False
IsDesignatorRange: False
IsAbsolute: True
HasNull: False
BitSize: 8
ReportCount: 1
UnitsExp: 0
Units: 0
LogicalMin: 0
LogicalMax: 255
PhysicalMin: 0
PhysicalMax: 255
Usage: Z Axis ($0032)
StringIndex: 0
DesignatorIndex: 0
DataIndex: 2
3)
UsagePage: Generic Desktop ($0001)
ReportID: 0
IsAlias: False
BitField: 2
LinkCollection: 1
LinkUsage: Undefined ($0000)
LinkUsagePage: Generic Desktop ($0001)
IsRange: False
IsStringRange: False
IsDesignatorRange: False
IsAbsolute: True
HasNull: False
BitSize: 8
ReportCount: 1
UnitsExp: 0
Units: 0
LogicalMin: 0
LogicalMax: 255
PhysicalMin: 0
PhysicalMax: 255
Usage: Y Axis ($0031)
StringIndex: 0
DesignatorIndex: 0
DataIndex: 3
4)
UsagePage: Generic Desktop ($0001)
ReportID: 0
IsAlias: False
BitField: 2
LinkCollection: 1
LinkUsage: Undefined ($0000)
LinkUsagePage: Generic Desktop ($0001)
IsRange: False
IsStringRange: False
IsDesignatorRange: False
IsAbsolute: True
HasNull: False
BitSize: 8
ReportCount: 1
UnitsExp: 0
Units: 0
LogicalMin: 0
LogicalMax: 255
PhysicalMin: 0
PhysicalMax: 255
Usage: X Axis ($0030)
StringIndex: 0
DesignatorIndex: 0
DataIndex: 4
5)
UsagePage: Generic Desktop ($0001)
ReportID: 0
IsAlias: False
BitField: 66
LinkCollection: 1
LinkUsage: Undefined ($0000)
LinkUsagePage: Generic Desktop ($0001)
IsRange: False
IsStringRange: False
IsDesignatorRange: False
IsAbsolute: True
HasNull: True
BitSize: 4
ReportCount: 1
UnitsExp: 0
Units: 20
LogicalMin: 0
LogicalMax: 7
PhysicalMin: 0
PhysicalMax: 315
Usage: Hat Switch ($0039)
StringIndex: 0
DesignatorIndex: 0
DataIndex: 5
Value Output
============
0)
UsagePage: FF00 ($FF00)
ReportID: 0
IsAlias: False
BitField: 2
LinkCollection: 2
LinkUsage: 0 ($0000)
LinkUsagePage: FF00 ($FF00)
IsRange: False
IsStringRange: False
IsDesignatorRange: False
IsAbsolute: True
HasNull: False
BitSize: 8
ReportCount: 7
UnitsExp: 0
Units: 0
LogicalMin: 0
LogicalMax: 255
PhysicalMin: 0
PhysicalMax: 255
Usage: 2 ($0002)
StringIndex: 0
DesignatorIndex: 0
DataIndex: 0
4 .- el modelo y marca: es generico, no tiene una marca especifica, (de forma es igual que los mandos de la play 3) con feedback
5 .- no se a que codigo te refieres.... si es el código de programa es:
Código Delphi
[-]
procedure TForm1.WriteBtnClick(Sender: TObject);
var
I: Integer;
Buf: array [0..64] of Byte;
Written: Cardinal;
ToWrite: Cardinal;
Str: string;
begin
if Assigned(CurrentDevice) then
begin
Buf[0] := StrToIntDef('$' + ReportID.Text, 0);
ReportID.Text := Format('%.2x', [Buf[0]]);
ToWrite := CurrentDevice.Caps.OutputReportByteLength;
for I := 1 to ToWrite-1 do
begin
Buf[i] := StrToIntDef('$' + Edits[I-1].Text, 0);
Edits[I-1].Text := Format('%.2x', [Buf[i]]);
end;
CurrentDevice.WriteFile(Buf, ToWrite, Written);
Str := Format('W %.2x ', [Buf[0]]);
for I := 1 to Written-1 do
Str := Str + Format('%.2x ', [Buf[i]]);
HistoryListBox.ItemIndex := HistoryListBox.Items.Add(Str);
end;
end;
La lectura de todos los botones y las palanca se realiza bien.
Lo que necesito saber es que valores hay que enviar para activar esos motorcitos... creo que son dos parametros: tiempo en milisegundos y motor izquierdo / derecho ... pero esto no lo se seguro, es una suposicion mia
Si necesitas alguna info mas, solo pedirla
gracias