Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Windows 8'den başlayarak Windows işletim sistemi, HID aktarımını kullanarak iletişim kuran on bir tür algılayıcıyı destekleyen bir yerleşik algılayıcı HID Sınıfı sürücüsü (SensorsHIDClassDriver.dll) içerir.
Desteklenen algılayıcıların listesi aşağıdadır:
- İvmeölçer 3B
- Ortam Işığı
- Ortam Sıcaklığı
- Atmosferik Basınç
- Pusula 3D
- Cihaz Yönü
- Jiroskop 3D
- Nem
- Eğim Ölçer 3B
- Varlık
- Yakınlık
Aşağıdaki çizimde, iki algılayıcı uygulamasından sürücü yığınına ve son olarak donanımın kendisine veri akışı gösterilmektedir.
Özel algılayıcılar için destek
Önceki listelerde ele alınan on bir algılayıcıya ek olarak, sınıf sürücüsü özel sınıfı da destekler. Bu sınıf, algılayıcı üreticisinin önceki listede bulunmayan bir cihazı tümleştirmesine olanak tanır: Örneğin, karbon monoksit sensörü. Özel algılayıcı, kendisini benzersiz özelliklere sahip özel bir cihaz olarak sensör API'sine sunar.
Mimari ve genel bakış
Uyumlu bir algılayıcı için üretici yazılımı oluşturuyorsanız, sınıf sürücüsü tarafından desteklenen G/Ç modelini temel olarak anlamanız gerekir.
- Algılayıcı, HID sınıf sürücüsüne bir özellik raporu veya giriş raporu gönderir. Sürücüden gelen bir isteğe yanıt olarak bir özellik raporu gönderilir. Bu rapor, algılayıcının değişiklik duyarlılığı ayarı, rapor aralığı ve raporlama durumu gibi özellik verilerini içerir. Giriş raporu istek üzerine veya bir olaya yanıt olarak zaman uyumsuz olarak gönderilir. Bu rapor gerçek algılayıcı verilerini içerir. Örneğin, bir ivmeölçer için rapor x, y ve z eksenleri boyunca G kuvvetlerini içerir).
- HID sınıf sürücüsü, özellik raporlarını algılayıcıya gönderir. Örneğin, uygulama yeni bir değişiklik duyarlılığı veya rapor aralığı istediğinde, sürücü bu değerleri bir özellik raporuna paketler ve isteği algılayıcının üretici yazılımına göndermek için bu raporu kullanır.
Aşağıdaki diyagramda G/Ç modeli gösterilmektedir:
Örnek Rapor Tanımlayıcısı
Algılayıcınız sınıf sürücüsüne özgü yedi kategoriden birini destekliyorsa üretici yazılımının belirli özellik ve giriş raporlarını desteklemesi gerekir. Özellik raporları algılayıcının geçerli raporlama durumunu, durumunu, değişiklik duyarlılığını ve raporlama aralığını (diğer olası özelliklere ek olarak) içerir. Giriş raporları sensör okumalarını sunmaktadır: Bir anahtar için Doğru veya Yanlış, bir ivmeölçer için G kuvveti değerleri veya bir ortam ışığı sensörü için LUX.
Örnek ivmeölçer özellik raporu
Aşağıdaki kod örneği, ivmeölçer için HID özellik raporunu gösterir. Bu raporun kendi kendine açıklayıcı doğasına dikkat edin. Minimum ve maksimum değerleri ve tek tek alanların sayısını ve boyutunu içerir.
//feature reports (xmit/receive)
HID_USAGE_PAGE_SENSOR,
HID_USAGE_SENSOR_PROPERTY_REPORTING_STATE,
HID_LOGICAL_MIN_8(0x00), //LOGICAL_MINIMUM (0)
HID_LOGICAL_MAX_8(0xFF), //LOGICAL_MAXIMUM (255)
HID_REPORT_SIZE(8),
HID_REPORT_COUNT(1),
HID_FEATURE(Data_Var_Abs),
HID_USAGE_SENSOR_PROPERTY_SENSOR_STATUS,
HID_LOGICAL_MIN_8(0x00), //LOGICAL_MINIMUM (0)
HID_LOGICAL_MAX_8(0xFF), //LOGICAL_MAXIMUM (255)
HID_REPORT_SIZE(8),
HID_REPORT_COUNT(1),
HID_FEATURE(Data_Var_Abs),
HID_USAGE_SENSOR_PROPERTY_CHANGE_SENSITIVITY_ABS,
HID_LOGICAL_MIN_8(0x00), //LOGICAL_MINIMUM (0)
HID_LOGICAL_MAX_16(0xFF,0xFF), //LOGICAL_MAXIMUM (65535)
HID_REPORT_SIZE(16),
HID_REPORT_COUNT(1),
HID_USAGE_SENSOR_UNITS_G,
HID_UNIT_EXPONENT(0xE),
HID_FEATURE(Data_Var_Abs),
HID_USAGE_SENSOR_PROPERTY_REPORT_INTERVAL,
HID_LOGICAL_MIN_8(0x00), //LOGICAL_MINIMUM (0)
HID_LOGICAL_MAX_32(0xFF,0xFF,0xFF,0xFF), //LOGICAL_MAXIMUM (4294967295)
HID_REPORT_SIZE(32),
HID_REPORT_COUNT(1),
HID_USAGE_SENSOR_UNITS_MILLISECOND,
HID_UNIT_EXPONENT(0),
HID_FEATURE(Data_Var_Abs),
Örnek ivmeölçer giriş raporu
Aşağıdaki kod örneği, aynı cihaz için HID giriş raporunu gösterir. Bu rapordaki alanların kendi kendine açıklayıcı doğasına da dikkat edin.
//input reports (transmit)
HID_USAGE_PAGE_SENSOR,
HID_USAGE_SENSOR_STATE,
HID_LOGICAL_MIN_8(0x00), //LOGICAL_MINIMUM (0)
HID_LOGICAL_MAX_8(0xFF), //LOGICAL_MAXIMUM (255)
HID_REPORT_SIZE(8),
HID_REPORT_COUNT(1),
HID_INPUT(Data_Var_Abs),
HID_USAGE_SENSOR_EVENT,
HID_LOGICAL_MIN_8(0x00), //LOGICAL_MINIMUM (0)
HID_LOGICAL_MAX_8(0xFF), //LOGICAL_MAXIMUM (255)
HID_REPORT_SIZE(8),
HID_REPORT_COUNT(1),
HID_INPUT(Data_Var_Abs),
HID_USAGE_SENSOR_DATA_MOTION_ACCELERATION_X_AXIS,
HID_LOGICAL_MIN_16(0x01,0x80), // LOGICAL_MINIMUM (-32767)
HID_LOGICAL_MAX_16(0xFF,0x7F), // LOGICAL_MAXIMUM (32767)
HID_REPORT_SIZE(16),
HID_REPORT_COUNT(1),
HID_USAGE_SENSOR_UNITS_G,
HID_UNIT_EXPONENT(0xE),
HID_INPUT(Data_Var_Abs),
HID_USAGE_SENSOR_DATA_MOTION_ACCELERATION_Y_AXIS,
HID_LOGICAL_MIN_16(0x01,0x80), // LOGICAL_MINIMUM (-32767)
HID_LOGICAL_MAX_16(0xFF,0x7F), // LOGICAL_MAXIMUM (32767)
HID_REPORT_SIZE(16),
HID_REPORT_COUNT(1),
HID_USAGE_SENSOR_UNITS_G,
HID_UNIT_EXPONENT(0xE),
HID_INPUT(Data_Var_Abs),
HID_USAGE_SENSOR_DATA_MOTION_ACCELERATION_Z_AXIS,
HID_LOGICAL_MIN_16(0x01,0x80), // LOGICAL_MINIMUM (-32767)
HID_LOGICAL_MAX_16(0xFF,0x7F), // LOGICAL_MAXIMUM (32767)
HID_REPORT_SIZE(16),
HID_REPORT_COUNT(3),
HID_USAGE_SENSOR_UNITS_G,
HID_UNIT_EXPONENT(0xE),
HID_INPUT(Data_Var_Abs),
HID_USAGE_SENSOR_DATA_MOTION_INTENSITY,
HID_LOGICAL_MIN_8(0x00), //LOGICAL_MINIMUM (0)
HID_LOGICAL_MAX_8(0xFF), //LOGICAL_MAXIMUM (255)
HID_REPORT_SIZE(8),
HID_REPORT_COUNT(1),
HID_INPUT(Data_Var_Abs),