NeuroskyからMindsetのWindows 7 Sensor API対応ドライバーが公開されました

おばかアプリコンテストのセンサー部門で貸出が予定されているNeuroskyさんの脳波センサーMindsetのWindows 7 Sensor API向けデバイスドライバーが公開されました。 http://neurosky.jp/thinkgearsensor.html すでにMindsetを購入されていて、Windows 7をお持ちの方は、是非チャレンジしてみてくださいね。 ただ、残念なことに、現段階では、脳波センサーはSensor & Location Platformに定義がありません。以下にCodepackを通じて脳波センサーを使うためのサンプルを紹介しますので、それを参考にアプリ開発を試みてください。 SensorList<Sensor> sensors = SensorManager.GetAllSensors();Sensor bwSensor = null;foreach (var sensor in sensors) {    if (sensor.FriendlyName.CompareTo(“Brainwave Sensor”)==0){        bwSensor = sensor;        break;    }}if (bwSensor!=null){    Guid valueKey = new Guid(“{f3ad07f4-1a88-4970-956a-68fc93b25729}”);    bwSensor.TryUpdateData();    SensorReport dataReport = bwSensor.DataReport;    // Poor Signalは0~200の値をとります。    // この値が0にならないと集中度、リラックス度は計測できません    UInt32 poorSignal = (UInt32)dataReport.Values[valueKey][0];    // 集中度です。0~100。単位は%    double attention = …


Windows 7 Sensor & Locationを使ってみよう Series !!

今までブログにポストしてきた関連項目の目次です。 Windows Mobile 7 Seriesの発表にあやかり、最後にSeriesをつけてみました。(でへ) では早速過去のポストへのリンクを、まとめて一挙公開です。 「Windows 7 Sensor & Locationを使ってみよう!!」シリーズ http://blogs.msdn.com/hirosho/archive/2009/11/22/windows-7-sensor-location-platform-1.aspx先ずは準備を兼ねて肩慣らしの巻ぃ http://blogs.msdn.com/hirosho/archive/2009/11/26/windows-7-sensor-location-platform-2.aspxManaged Code(Windows API CodepackのSensor)で、センサーを取り出すの巻ぃ http://blogs.msdn.com/hirosho/archive/2009/11/28/windows-7-sensor-location-platform-3.aspxManaged Code(Windows API CodepackのSensor)で、センサーからデータを取り出すの巻ぃ http://blogs.msdn.com/hirosho/archive/2009/11/29/windows-7-sensor-location-platform-4.aspx.NET 4のSystem.Device.Locationでロケーションをいぢるの巻ぃ http://blogs.msdn.com/hirosho/archive/2009/12/08/windows-7-sensor-location-platform-5.aspxNative CodeでSensor COM APIごりごり開発、VC++ Native Codeが書けるなんてかっこ良~いの巻ぃ http://blogs.msdn.com/hirosho/archive/2009/12/22/windows-7-sensor-location-platform-6.aspx.NET 4 WPF Chartを使って、取り出したデータを見える化だぁ、の巻ぃ http://blogs.msdn.com/hirosho/archive/2010/02/05/windows-7-api-codepack.aspxサイドスト~リー(番外編):Windows API Codepackに新たな秘密兵器を装着しようぜっ、の巻ぃ http://blogs.msdn.com/hirosho/archive/2010/03/10/neurosky-mindset-windows-7-sensor-api.aspxサイドスト~リー(番外編):Mindsetで頭の中を覗いてみようっ、の巻ぃ 新しくネタが出たら、順次追加の予定なので、偶にチェックしてねっ!!


Windows 7 API Codepackが未サポートのセンサーを追加する

やったぁ、新しいセンサーを手に入れた!!。Sensor & Location Platform対応のドライバーも手に入れた!!。これで、Windows 7でセンサーを活用したアプリが書けるぞ!!。ではC#でプログラムを書こうか…って…あれ?Codepackでサポートされていないっ!!・・・というあなたへ。 CodepackがサポートしていないセンサーをCodepackのAPIに追加する方法を説明します。VC++でNative Code/COMダイレクトでセンサーを使う方法もありますが、C#等のManagedを使ったほうがはるかに生産性が高いので、参考にしてくださいね。(1msecより短い時間間隔のハードリアルタイムシステムを作る時は別ですが) まずは、Codepackの構造を覗いていてみましょう。Sensorsプロジェクトの下にSensorsというフォルダーがあって、その下に、“Light”、“Mechanical”、“Motion”という3つのフォルダーがあり、各フォルダーにAmibientLightSensor.cs、BooleanSwitchArray.cs、Acceleromitor3D.csと3つのC#ファイルが入っていますね。これらはFreescaleさんのSensor Development Kitボードに実装されている照度センサー、タッチアレイ、加速度センサーにそれぞれ対応しています。これらのファイルの中身を覗いて、Codepackのパターンをまず覚えましょう。 そして、新しく手に入れたセンサーをWindows 7 PCにつないで、以下のコードを実行して、そのセンサーのタイプとサポートしているプロパティを調べます。 foreach (var sensor in SensorManager.GetAllSensors()){    Guid? typeId = sensor.TypeId;    foreach (var property in sensor.GetSupportedProperties()){        Guid formatId = property.FormatId;        int pid = property.PropertyId;    }} IOデータが提供している人感センサー(SENSOR-HM)を例にして説明すると、センサーのTypeIdが“{c138c12b-ad52-451c-9375-87f518ff10c6}”で、サポートしているプロパティが計測時刻と、FormatIdが“{2299288A-6D9E-4B0B-B7EC-3528F89E40AF}”、pidが2のプロパティであることがわかります。 これらのGuidをもとにWindows 7 SDKのsensors.hで探すとこのセンサーは、カテゴリがSENSOR_CATEGORY_ENVIRONMENTAL(環境センサー)、タイプがSENSOR_TYPE_HUMIDITY(つまり人感センサー)、プロパティがSENSOR_DATA_TYPE_HUMAN_PRESENCE(いる・いない)というBoolの値であることがわかります。なので、CodepackのSensorsプロジェクトの下のSensorsフォルダーに“Environmental”という名前のフォルダーを作成して、Humidityクラスを新規追加し、他のデフォルトで提供されているセンサーにならって、以下のようなコードを書けば、子の人感センサーをManagedコードでアクセスするためのラッパーが出来上がります。 class Humidity : Sensor{    public HumanPresense CurrentPresence {        get {            return new HumanPresense(this.DataReport);        }    }}class…