Ich habe mal Sourcen gesucht:
Code:
static void missile_do( missile_usb *control, int cmd )
{
int a, b, c, d, e;
/* Two fixed-format initiator packets appear to be required */
if (missile_usb_sendcommand(control, 'U', 'S', 'B', 'C', 0, 0, 4, 0 ))
{
perror("missile_usb_sendcommand failed");
return;
}
if (missile_usb_sendcommand(control, 'U', 'S', 'B', 'C', 0, 64, 2, 0 ))
{
perror("missile_usb_sendcommand failed");
return;
}
/* Now the actual movement command! */
a = cmd & missile_left ? 1 : 0;
b = cmd & missile_right ? 1 : 0;
c = cmd & missile_up ? 1 : 0;
d = cmd & missile_down ? 1 : 0;
e = cmd & missile_fire ? 1 : 0;
if (missile_usb_sendcommand64(control, 0, a, b, c, d, e, 8, 8 ))
{
perror("missile_usb_sendcommand failed");
return;
}
}
Das hier sollte weiterhelfen. Erst mal werden zwei Initialisierungen geschrieben. Da dies 8 Byte sind muss es als "Set Feature" an das erste Geraet oder als "Write" and das zweite Geraet gehen. Die 64 Bytes des eigentlichen Kommandos gehen an das erste Geraet per "Write".
Die Init-Reports in Hex:
55 53 42 43 00 00 04 00
55 53 42 43 00 40 02 00
Der 64 Byte Report sollte man auch so hinkriegen. Die beiden 08 Bytes nicht vergessen.
Bitte mit SimpleHIDWrite experimentieren und hier posten ob man beide Geraete ansprechen muss oder ob es Set Feature an das erste Geraet ist (meine Wette steht auf zwei Geraete).
Sobald das klar ist, kann ich ein Delphiprogramm zur Kommunikation entwerfen.