センサー定数について
Windows Sensor and Location プラットフォームでは、定数がさまざまな方法で使用されます。ここでは、これらの定数とその使用方法について説明します。
プラットフォームでは、センサー ドライバーのコードで使用できるさまざまな定数が定義されています。独自の定数を定義することもできます。プラットフォーム定義の定数の定義は、Sensors.h という名前のファイル内にあります。プラットフォーム定義のセンサー定数の詳細については、「定数」を参照してください。
センサーとデータ編成
プラットフォームでは、センサーとそのデータが次の方法で編成されています。
"カテゴリ" は、センサー デバイスの大まかな分類を表します。カテゴリは、類似した種類の情報を提供する可能性が高いセンサー、またはなんらかの関係があるセンサーをグループ化するための方法です。各カテゴリは定数 GUID で表されます。たとえば、緯度と経度の座標を報告するセンサーは、定数 SENSOR_CATEGORY_LOCATION で表される位置センサーのカテゴリに属します。
"センサーの種類" は、センサーの特定の種類を表します。センサーの種類はそれぞれ特定のカテゴリに位置付けられます。異なる種類の 2 つのセンサーは、同じカテゴリに属する場合と、別々のカテゴリに属する場合があります。センサーの種類はそれぞれ定数 GUID で表されます。たとえば、Global Positioning System のセンサーは定数 SENSOR_TYPE_LOCATION_GPS で、また、インターネット IP アドレスを使用して現在の位置を示すセンサーは定数 SENSOR_TYPE_LOCATION_LOOKUP で、それぞれ識別されます。ただし、どちらのセンサーも位置センサーのカテゴリに属します。
"データ型" は、センサーが提供できる情報の特定の種類を表します。センサーのデータ型には、実際の測定値 (高度など)、データの表現に使用される単位情報 (メートルなど)、データの基準点 (海抜など) などがあります。データ型はそれぞれ定数 PROPERTYKEY で表されます。たとえば、海抜を基準にしてメートル単位で高度を表すデータ型は、定数 SENSOR_DATA_TYPE_ALTITUDE_SEALEVEL_METERS により識別されます。
データの報告時、値は "データ フィールド" に格納されていると表現され、関連付けられたデータ フィールドのコレクションにより "データ レポート" が構成されます。データ レポートは、IPortableDeviceValues インターフェイスを使用して 1 つにパッケージ化されます。また、複数のデータ レポートは、IPortableDeviceValuesCollection インターフェイスを使用して結合できます。各データ レポートには、1 つ以上の有効なデータ フィールドと、データ レポートがいつ作成されたかを示すタイム スタンプを含める必要があります。タイム スタンプは SENSOR_DATA_TYPE_TIMESTAMP プロパティ キーで表されます。
その他の定数
ドライバーでは、その他の種類の定数も必要になることがあります。これらの定数を次に示します。
センサー プロパティ (SENSOR_PROPERTY_DESCRIPTION など)。これらの定数には、WPD_FUNCTIONAL_OBJECT_CATEGORY などの WPD 定数があります。これらの定数は、通常、センサーの説明に使用されます (ISensorDriver::OnGetSupportedSensorObjects での呼び出し時など)。ISensorDriver::OnGetSupportedProperties および ISensorDriver::OnGetProperties を使用してプロパティ値を返すこともできます。定数の使用方法を理解するために、センサー ドライバーのスケルトン サンプルのコードの実装を表示することができます。
センサー プロパティには、ドライバーで指定する必要があるもの、クライアント アプリケーションで設定できるもの、および同じ値を常に返す必要があるものがあります。各プロパティのこの種別については、「センサー プロパティ」セクションを参照してください。特定のメソッドに必要なプロパティを把握するには、「Windows センサー リファレンス」セクションのメソッドに関するドキュメントを参照してください。
イベント定数 (SENSOR_EVENT_STATE_CHANGED など)。イベント定数には、イベントの種類を表す GUID、イベント パラメーターの種類を表す PROPERTYKEY などがあります。これらの定数は、ISensorDriver::OnGetSupportedEvents でのクラス拡張による呼び出し時や、ISensorClassExtension::PostEvent または ISensorClassExtension::PostStateChange を介してのイベント生成時に使用します。
アイコン定数。ドライバーは Windows 内のデバイスを表す特定のアイコンを指定できます。「アイコンの指定」を参照してください。
永続一意識別子
SENSOR_PROPERTY_PERSISTENT_UNIQUE_ID という名前のセンサー プロパティには、特別な注意が必要です。このプロパティの値は、デバイスのセンサーごと、およびデバイス間で一意である必要があります。また、この値は、センサー プラットフォームがセンサーを使用するたびに、その特定のセンサーに対して永続的に同一である必要があります。ドライバー コードで永続一意識別子を作成する方法の例については、「永続一意識別子の作成」を参照してください。
地理位置情報の提供
センサーが位置センサーでない場合でも、センサーの物理的な位置の把握がユーザーにとって重要なときがあります。たとえば、気象観測ステーションが提供するデータの意義は、そのステーションの位置と密接な関係があります。
このような種類の "地理位置情報" のデータを提供する場合、センサーは、位置センサーでない場合でも、SENSOR_CATEGORY_LOCATION カテゴリの適切なデータ フィールドを使用できます。これにより、気象観測ステーションは、SENSOR_DATA_TYPE_LATITUDE_DEGREES および SENSOR_DATA_TYPE_LONGITUDE_DEGREES の各データ フィールド定数を使用して、ステーションの位置を報告することができます。ただし、ISensorDriver::OnGetProperties での呼び出し時には、このようなセンサーを位置カテゴリに属しているものとして報告しないことが重要です。
カスタム値
カテゴリ、センサーの種類、データ フィールド、プロパティ、およびイベントのカスタム値を定義できます。
定数のカスタム値を定義する方法のガイドラインおよび例については、「定数のカスタム値の定義」を参照してください。