Oculus RiftがPCに繋がっているかどうかの判定

OvrvisionのデモソフトなどがOculus Riftが繋がってない状態で起動するとクラッシュするようだ。
Oculus Riftが繋がっているかどうかちゃんと判定するのって難しくないだろうにと思う。

ということで、Oculus RiftがPCに繋がっているかどうかの判定を実際に自前でソフトを書いてみる。

Oclulus RiftはUSBのHIDデバイスとして認識されているので、特定のVID,PIDのデバイスに対してOpenしてみて、失敗したらOculus Riftが繋がっていないと判定すればいいだけなので簡単だ。
Oculus Rift DK1のVID 0x2833のPID 0x0001で、DK2のPIDは0x0021だった。
USBのHIDデバイスへのアクセスは、昔自分で書いたtiny_hid_dllというライブラリをそのまま使ったら簡単にできた。

ソースコードはこんな感じだ。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
 
#define FUNC __declspec(dllimport) __stdcall
extern "C" HANDLE FUNC OpenHidHandle(unsigned short vendor_id, unsigned short product_id);
extern "C" void FUNC ReadReport(HANDLE handle,unsigned char *InputReport,int *len);
extern "C" void FUNC WriteReport(HANDLE handle,unsigned char *OutputReport, int *len);
extern "C" void FUNC CloseHidHandle(HANDLE handle);
 
HANDLE hRsDevHandle;
const USHORT VID = 0x2833; // OculusVR
const USHORT PID = 0x0001; // DK1
 
int main( int argc, char *argv[])
{
    hRsDevHandle = OpenHidHandle(VID,PID);
    if ( hRsDevHandle == INVALID_HANDLE_VALUE) {
        printf("device not found."); getchar();
        return 1;
    }
    CloseHidHandle( hRsDevHandle );
    printf("Oculus Rift DK1 found.\n"); getchar();
    return 0;
}

Oculus Riftの接続確認だけでなく、ジャイロセンサーとかのデータを読み出すのもできるかな?
それもそのうち試してみたい。




コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.

+ 3 = 7