OpenNIの奥深くに眠っている
USBに直接アクセスする関数を用いて、
Kinectの首(チルトモーター)を動かすことに成功したので
とりあえずサンプルを載せておきます。
確認した環境
PC: MacBook Pro
OS: 64bit Windows7 Ultimate
OpenNI: OpeNI Win32 1.4.0.2-dev (unstable build )
//--------------------------------------
#include <XnUSB.h>
enum
{
VID_MICROSOFT = 0x45e,
PID_NUI_MOTOR = 0x02b0
};
XN_USB_DEV_HANDLE dev;
int main() {
int angle = キネクトの首の地面からの角度;
const XnUSBConnectionString* pastrDevicePaths = NULL;
XnUInt32 nCount = 0;
XnUChar empty[1];
xnUSBInit();
xnUSBEnumerateDevices(VID_MICROSOFT, PID_NUI_MOTOR,&pastrDevicePaths,&nCount);
xnUSBOpenDeviceByPath(*pastrDevicePaths, &dev);
xnUSBSendControl
(
dev,
XN_USB_CONTROL_TYPE_VENDOR,
0x31,(XnUInt16)angle * 2,
0x0, empty, 0x0, 0
);
xnUSBCloseDevice(dev);
xnUSBFreeDevicesList(pastrDevicePaths);
xnUSBShutdown();
return 0;
}
//--------------------------------------
http://exout.net/blog/?p=303 と合わせて Windows でも LEDが操作できるようになりました.
ありがとうございます (^^