このページの本文へ

YUREXをWindows 7のセンサーに大改造だっ! (6/8)

2010年02月08日 13時00分更新

文●本間哲平/面白法人カヤック

  • この記事をはてなブックマークに追加
本文印刷

HIDのレポート送受信

 さて、それでは実際にYUREXと通信する改造をしていきましょう。元のBadge Boardは3軸加速度や近接容量性タッチセンサーなどを搭載していますが、YUREXのドライバとするには機能が多すぎますので、タッチスイッチ部分のコードだけをYUREXに使わせてもらうことにしましょう。

 WpdObjectProperties.cppファイルを開きます。以下のコードの、


HRESULT WpdObjectProperties::ProcessAsynchRead( BYTE* buffer, ULONG length )

if(recv_report->device_id == 1)から始まるブロックでレポート受け取り後の操作をしています。おもに、センサーのデータフィールドに値を格納し、イベントを起こす処理です。この部分をデバイスの仕様に合わせて書き換えることになります。YUREXの場合は、こんなコードに書き換えてみました。


        if(recv_report->command_id == 'C') // YUREXからゆすられたことを示すコマンド
        {
            pSensor = g_pSensorList.GetAt(g_pSensorList.FindIndex(SwitchArrayLeft));
            
            hr = pSensor->SetTimeStamp();
            if(SUCCEEDED(hr))
            {
                PROPVARIANT value;
                PropVariantInit( &value );
                value.vt = VT_UI4;
                value.ulVal = (ULONG) recv_report->datas[0];
                hr = pSensor->SetDataField(SENSOR_DATA_TYPE_BOOLEAN_SWITCH_ARRAY_STATE, &value);
                PropVariantClear( &value );
            }
            if( SUCCEEDED(hr))
            {
                pSensor->RaiseDataEvent();
            }
        }


 とりあえず揺れを検知して数字を取れるようになればOKなので、変更はこれだけです。お疲れさまでした。あとはビルドするだけです。え? 実装少なくて肩透かしを食らった感があるですって?――いやいや、これからわくわくするビルドタイムの始まりですから!

この連載の記事

一覧へ

この記事の編集者は以下の記事をオススメしています