歌を歌う、、この喜びは何にも代えがたい。。
×
[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
Windows 7の Sensor and Location プラットフォームを C#で使う
はじめに
PC は、各種デバイスとのコネクティビティに関してかなり用途が広い。たとえば、USB だけでも数千種類ものデバイスに接続することができる。そして、その多くは何らかのセンサだと考えることができる。だが、実際のところセンサとは何なのだろうか?
Windows 7で言うセンサは、物理的な外の世界を測定可能なデバイスを指す。たとえば、センサは現在の温度、周辺光のレベル、位置(GPS のようなもの)、三次元方向の加速度などを検知することができる。全般的に見て、多くのデバイスがこの幅広い定義に収まる。
本稿では、Windows 7の一部となっている Sensor and Location Platform について考えたい。また、.NET や C#の開発者が自分の.NET アプリケーションからこのプラットフォームの機能を利用する方法も学ぶ。たとえば、.NET 4.0は便利なマネージコード API を使って位置センサを直接利用可能ににする新しいネームスペースを提供する。
本稿では、Microsoft Visual Studio 2010 Release Candidate (RC)以降のバージョンを使っているものと仮定する。.NET 4.0の新しい位置クラスは先の Beta 2リリースするから変わっているため、古いベータ版を使っている場合は、コードをを修正する必要が出てくる。Windows API Code Pack のセンサの例ではバージョン v1.0.1を使用した。コードパックは Microsoft Visual Studio 2008と2010の両方(Beta 2と RC の両バージョンを含む)と一緒に利用できることを覚えておきたい。
Sensor and Location Platform のアーキテクチャ
Windows 7が登場する前、数百種類もの各種センサデバイスをコードからコントロールする場合は、どれも多かれ少なかれ独自の方法を使っていた。デバイスは物理インターフェースが異なり、コントロールコマンドが異なり、出力フォーマットも異なっていた。これにより、デバイスごとに異なるプログラミングを強いられ、開発者は難しい対応を迫られた。
Windows 7が搭載する Sensor and Location Platform (SLP)は、(位置センサも含め)すべてのセンサデバイスに共通のプログラムモデルとドライバインターフェースを提供することでこの状況を変えようとしている(図1)。デバイスが Windows 7 SLP 互換のドライバを用意していれば(これらのドライバはユーザーモードベースであるため、カーネルベースのドライバよりも簡単に書くことができる)、Windows 7がデバイスをセンサとして適切に検知し、SLP API がデバイスにアクセスできるようにする。
図1 - Windows 7はセンサと位置デバイスを表示する新しいコントロールパネルアプレットを搭載
互換デバイスが存在する場合は、もっと低いレベルで SLP でサポートされる COM API を使ってそのデバイスとコミュニケーションを取ることができる。SLP はさまざまなタイプのデバイスをサポートし、これらのデバイスは GUID 値で特定できる。
.NET における Sensors and Location のサポート
Windows 7では、新しい Sensor and Location Platform API が COM ベースとなっているため、API はネイティブとマネージコードアプリケーションの両方で利用できる。.NET 開発者としては、これらの COM クラスやインターフェースを中心に独自のラッパを作成するか、既製のコードを使うことができる。
現在、基本的には2つのオプションがあり、無償の Windows API Code Pack を使って SLP 機能を利用するか、既に Visual Studio 2010で.NET 4.0を使っている場合は.NET 4.0の新機能を使って SLP が提供する機能のパーツを利用することができる。
.NET 4.0の方を使いたい場合は、System.Device.Locationという新しいネームスペースがある。このネームスペースは Windows 7の Location API のサポートを搭載しているが、(少なくとも今のところは) Sensor プラットフォームを直接サポートしない。したがって、.NET 4.0単体では位置サービス(GPS など)を使えるが、残りの機能については Windows API Code Pack を使い続ける必要がある。
実際のところ、System.Device.Locationは.NET 4.0のパーツであるため、技術的には、Windows XP マシンでもクラスやメソッドにアクセスできる。しかし、.NET クラスが使えても、これらは Windows 7を使っていない限り位置システムのステータスを常に Disabled として報告する。したがって、.NET のクラスが使えても、OS がそれをサポートしているわけではない。
デバイスのプログラミングをしている開発者が抱く共通の疑問は、「手元に本物のハードウェアがなくても開発に着手し、あとから本物のデバイスを使ってテストを始めることはできるのだろうか? 」というものだ。そして、その答えはセンサが接続されている限りは「イエス」だ。Windows 7 SDK には物理光センサをエミュレートする仮想デバイスが含まれており、Windows 7にそれを本物の デバイスだと思わせるドライバも搭載されている。これにより、開発を始めるのが簡単になる。
ただ、位置ベースサービスに関しては今のところ物理デバイスを用意する必要がある。もちろん、GPS デバイスを内蔵し、Windows 7互換の SLP ドライバを搭載したノート PC などがあれば、それでもうまくいく。しかし、一般的に言えば大半の GPS デバイスは外付けになっている。
センサ開発への着手
Microsoft Visual Studio を使って新しい Sensor and Location Platform 用のセンサアプリケーションの開発を始めるには、2008もしくは2010のいずれかのバージョン(執筆時点のリリース候補は最新の2010バージョン)、Windows API Code Pack、そして言うまでもなく Windows 7が必要になる。
手元の PC に接続できる物理センサデバイスがあれば何も心配ない。ない場合も、Microsoft が Freescale Semiconductor を紹介してくれる。彼らは「Flexis JM Badge Board」というハードウェアを49ドルで販売している。これは Freescale から直接注文することが可能で、これを自分のテスト基盤として使うことができる。
手元に物理デバイスがなくても開発に着手したいという開発者には、Windows 7 SDK キット(図2)をダウンロードしてインストールする必要がある。このキットのインストールは時間がかかる(x86と x64のどちらのバージョンが必要なのか調べておくこと)が、いったん作業が終了すれば、SDK インストレーションパス(デフォルトではC:?Program Files?Microsoft SDKs?Windows?v7.0)の下の Bin フォルダからVirtualLightSensor.exeアプリケーションを実行することができる。これでプログラムで使う仮想センサが手に入った。
図2 - コードのテスト時に便利な仮想光センサを利用可能にする Windows 7 SDK キット
仮想光センサアプリケーションをうまく実行するには、その前に適切なドライバを Windows 7にインストールする必要があることに注意したい。これは、管理者特権のコマンドプロンプトで「pnputil -a VirtualLightSensorDriver.inf」コマンドを使うことで可能になる。.INFファイルは SDK キットの Bin ディレクトリにある(図3).
図3 - PnpUtilを使った仮想光センサ用ドライバのインストール
使っているのが物理センサであろうと、Windows 7 SDK によって提供される仮想センサであろうと、デバイスはコントロールパネルの「位置センサーとその他のセンサー」で見えるはずだ。ここで自分のデバイスが見えたら、プログラミングを開始することができる。
まず最初は、Windows Forms や Windows Presentation Foundation (WPF)アプリケーションなど、Microsoft Visual Studio でプロジェクトを作成もしくは開くことからだ。次に、Windows API Code Pack (ダウンロード先の URL は「参考文献」の項参照)に参照を追加すれば準備完了だ。参照しなければならない DLL の名前は、Microsoft.WindowsAPICodePack.dllおよびMicrosoft.WindowsAPICodePack.Sensors.dllだ。参照がそろったら、Microsoft.WindowsAPICodePack.Sensorsネームスペースを使い始めることができる。
このネームスペースには、システムでサポートされるセンサ全体の情報を入手できるSensorManagerという名前のクラスが含まれる。以下に例を示す。
SensorList<Sensor> sensors =
SensorManager.GetAllSensors();
MessageBox.Show("There are " + sensors.Count +
" sensor(s) installed on the system.");
http://japaninternetcom.pheedo.jp/click.phdo?i=5edc4fbe05828dca4eb982b9d5b2209a
男って生き物はつくづく馬鹿なもんですよ、、、。
どんだけ硬派なやつでも、女性の色気には勝てません、、、、w
これ間違いないですよ。。。。。
だから、もし間違いが起こったとしても、そんなに怒らないで
あげて下さいねw
何のこっちゃw
PICKUP
レーシックフラップレス(レーシック術式)
バストトータルケア(エステで豊胸)
中国料理レシピ@東坡肉
我妻さおり アイドル情報
苦しい借金地獄
衣食足りて礼節を知る(いしょくたりてれいせつをしる)
不倫相手の特定をする方法は 浮気・不倫調査
蟹味噌凝縮!上海蟹は絶品
鶏鳴狗盗(けいめいくとう)
ガレット・デ・ロワ
はじめに
PC は、各種デバイスとのコネクティビティに関してかなり用途が広い。たとえば、USB だけでも数千種類ものデバイスに接続することができる。そして、その多くは何らかのセンサだと考えることができる。だが、実際のところセンサとは何なのだろうか?
Windows 7で言うセンサは、物理的な外の世界を測定可能なデバイスを指す。たとえば、センサは現在の温度、周辺光のレベル、位置(GPS のようなもの)、三次元方向の加速度などを検知することができる。全般的に見て、多くのデバイスがこの幅広い定義に収まる。
本稿では、Windows 7の一部となっている Sensor and Location Platform について考えたい。また、.NET や C#の開発者が自分の.NET アプリケーションからこのプラットフォームの機能を利用する方法も学ぶ。たとえば、.NET 4.0は便利なマネージコード API を使って位置センサを直接利用可能ににする新しいネームスペースを提供する。
本稿では、Microsoft Visual Studio 2010 Release Candidate (RC)以降のバージョンを使っているものと仮定する。.NET 4.0の新しい位置クラスは先の Beta 2リリースするから変わっているため、古いベータ版を使っている場合は、コードをを修正する必要が出てくる。Windows API Code Pack のセンサの例ではバージョン v1.0.1を使用した。コードパックは Microsoft Visual Studio 2008と2010の両方(Beta 2と RC の両バージョンを含む)と一緒に利用できることを覚えておきたい。
Sensor and Location Platform のアーキテクチャ
Windows 7が登場する前、数百種類もの各種センサデバイスをコードからコントロールする場合は、どれも多かれ少なかれ独自の方法を使っていた。デバイスは物理インターフェースが異なり、コントロールコマンドが異なり、出力フォーマットも異なっていた。これにより、デバイスごとに異なるプログラミングを強いられ、開発者は難しい対応を迫られた。
Windows 7が搭載する Sensor and Location Platform (SLP)は、(位置センサも含め)すべてのセンサデバイスに共通のプログラムモデルとドライバインターフェースを提供することでこの状況を変えようとしている(図1)。デバイスが Windows 7 SLP 互換のドライバを用意していれば(これらのドライバはユーザーモードベースであるため、カーネルベースのドライバよりも簡単に書くことができる)、Windows 7がデバイスをセンサとして適切に検知し、SLP API がデバイスにアクセスできるようにする。
図1 - Windows 7はセンサと位置デバイスを表示する新しいコントロールパネルアプレットを搭載
互換デバイスが存在する場合は、もっと低いレベルで SLP でサポートされる COM API を使ってそのデバイスとコミュニケーションを取ることができる。SLP はさまざまなタイプのデバイスをサポートし、これらのデバイスは GUID 値で特定できる。
.NET における Sensors and Location のサポート
Windows 7では、新しい Sensor and Location Platform API が COM ベースとなっているため、API はネイティブとマネージコードアプリケーションの両方で利用できる。.NET 開発者としては、これらの COM クラスやインターフェースを中心に独自のラッパを作成するか、既製のコードを使うことができる。
現在、基本的には2つのオプションがあり、無償の Windows API Code Pack を使って SLP 機能を利用するか、既に Visual Studio 2010で.NET 4.0を使っている場合は.NET 4.0の新機能を使って SLP が提供する機能のパーツを利用することができる。
.NET 4.0の方を使いたい場合は、System.Device.Locationという新しいネームスペースがある。このネームスペースは Windows 7の Location API のサポートを搭載しているが、(少なくとも今のところは) Sensor プラットフォームを直接サポートしない。したがって、.NET 4.0単体では位置サービス(GPS など)を使えるが、残りの機能については Windows API Code Pack を使い続ける必要がある。
実際のところ、System.Device.Locationは.NET 4.0のパーツであるため、技術的には、Windows XP マシンでもクラスやメソッドにアクセスできる。しかし、.NET クラスが使えても、これらは Windows 7を使っていない限り位置システムのステータスを常に Disabled として報告する。したがって、.NET のクラスが使えても、OS がそれをサポートしているわけではない。
デバイスのプログラミングをしている開発者が抱く共通の疑問は、「手元に本物のハードウェアがなくても開発に着手し、あとから本物のデバイスを使ってテストを始めることはできるのだろうか? 」というものだ。そして、その答えはセンサが接続されている限りは「イエス」だ。Windows 7 SDK には物理光センサをエミュレートする仮想デバイスが含まれており、Windows 7にそれを本物の デバイスだと思わせるドライバも搭載されている。これにより、開発を始めるのが簡単になる。
ただ、位置ベースサービスに関しては今のところ物理デバイスを用意する必要がある。もちろん、GPS デバイスを内蔵し、Windows 7互換の SLP ドライバを搭載したノート PC などがあれば、それでもうまくいく。しかし、一般的に言えば大半の GPS デバイスは外付けになっている。
センサ開発への着手
Microsoft Visual Studio を使って新しい Sensor and Location Platform 用のセンサアプリケーションの開発を始めるには、2008もしくは2010のいずれかのバージョン(執筆時点のリリース候補は最新の2010バージョン)、Windows API Code Pack、そして言うまでもなく Windows 7が必要になる。
手元の PC に接続できる物理センサデバイスがあれば何も心配ない。ない場合も、Microsoft が Freescale Semiconductor を紹介してくれる。彼らは「Flexis JM Badge Board」というハードウェアを49ドルで販売している。これは Freescale から直接注文することが可能で、これを自分のテスト基盤として使うことができる。
手元に物理デバイスがなくても開発に着手したいという開発者には、Windows 7 SDK キット(図2)をダウンロードしてインストールする必要がある。このキットのインストールは時間がかかる(x86と x64のどちらのバージョンが必要なのか調べておくこと)が、いったん作業が終了すれば、SDK インストレーションパス(デフォルトではC:?Program Files?Microsoft SDKs?Windows?v7.0)の下の Bin フォルダからVirtualLightSensor.exeアプリケーションを実行することができる。これでプログラムで使う仮想センサが手に入った。
図2 - コードのテスト時に便利な仮想光センサを利用可能にする Windows 7 SDK キット
仮想光センサアプリケーションをうまく実行するには、その前に適切なドライバを Windows 7にインストールする必要があることに注意したい。これは、管理者特権のコマンドプロンプトで「pnputil -a VirtualLightSensorDriver.inf」コマンドを使うことで可能になる。.INFファイルは SDK キットの Bin ディレクトリにある(図3).
図3 - PnpUtilを使った仮想光センサ用ドライバのインストール
使っているのが物理センサであろうと、Windows 7 SDK によって提供される仮想センサであろうと、デバイスはコントロールパネルの「位置センサーとその他のセンサー」で見えるはずだ。ここで自分のデバイスが見えたら、プログラミングを開始することができる。
まず最初は、Windows Forms や Windows Presentation Foundation (WPF)アプリケーションなど、Microsoft Visual Studio でプロジェクトを作成もしくは開くことからだ。次に、Windows API Code Pack (ダウンロード先の URL は「参考文献」の項参照)に参照を追加すれば準備完了だ。参照しなければならない DLL の名前は、Microsoft.WindowsAPICodePack.dllおよびMicrosoft.WindowsAPICodePack.Sensors.dllだ。参照がそろったら、Microsoft.WindowsAPICodePack.Sensorsネームスペースを使い始めることができる。
このネームスペースには、システムでサポートされるセンサ全体の情報を入手できるSensorManagerという名前のクラスが含まれる。以下に例を示す。
SensorList<Sensor> sensors =
SensorManager.GetAllSensors();
MessageBox.Show("There are " + sensors.Count +
" sensor(s) installed on the system.");
http://japaninternetcom.pheedo.jp/click.phdo?i=5edc4fbe05828dca4eb982b9d5b2209a
男って生き物はつくづく馬鹿なもんですよ、、、。
どんだけ硬派なやつでも、女性の色気には勝てません、、、、w
これ間違いないですよ。。。。。
だから、もし間違いが起こったとしても、そんなに怒らないで
あげて下さいねw
何のこっちゃw
PICKUP
レーシックフラップレス(レーシック術式)
バストトータルケア(エステで豊胸)
中国料理レシピ@東坡肉
我妻さおり アイドル情報
苦しい借金地獄
衣食足りて礼節を知る(いしょくたりてれいせつをしる)
不倫相手の特定をする方法は 浮気・不倫調査
蟹味噌凝縮!上海蟹は絶品
鶏鳴狗盗(けいめいくとう)
ガレット・デ・ロワ
PR
この記事にコメントする
フリーエリア
岩手県 盛岡市
敏感肌 石けん ランキング
賃貸のアパート探し(鹿児島)
借金返済のお悩み解決!弁護士・司法書士【神戸】
キメ 固形せっけん 人気
コラーゲンの特定保健食品
最先端のVライン・Vゾーンの光脱毛(フラッシュ脱毛)
派遣で働く!バイトで働く!【高知】
いい会社があれば転職したい!
どうする!?過払い金返還
家具付き賃貸アパートをネットで探す
風俗で働いても借金返済できません。
持っておきたい ケアマネージャー
債務整理 家賃滞納 愛知
コラーゲン 上海料理
多重債務の相談[島根]
自己破産と財産
借金地獄から脱出!債務整理【宮崎】
北京ダック おいしい中国料理
入ろう!健康生活積立障害保険
↓↓↓
探偵|浮気|詐欺|家出|身上調査|ストーカー|出会い|先物取引|外国為替|任意整理|債務整理|自己破産|任意整理|借金解決|税理士事務所 紹介|任意整理|顧問税理士|ウォーターサーバー|自己破産・債務整理 相談掲示板|携帯無料レンタルサーバ|債務整理 事例|無料ホムペ
カレンダー
| 05 | 2026/06 | 07 |
| S | M | T | W | T | F | S |
|---|---|---|---|---|---|---|
| 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 | 26 | 27 |
| 28 | 29 | 30 |
最新コメント
最新記事
(11/26)
(11/26)
(11/25)
(11/25)
(11/25)
最新トラックバック
プロフィール
HN:
No Name Ninja
性別:
非公開
ブログ内検索
アーカイブ
最古記事
(06/14)
(06/14)
(06/15)
(06/15)
(06/15)
P R