Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Некоторые свойства и поля данных содержат массивы информации. Например, свойство SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE содержит массив целых чисел без знака 4 байта. Однако при получении таких массивов через API датчика они всегда представлены как тип VT_VECTOR|UI1 — массив однобайтовых символов независимо от фактического типа данных в массиве. Для этих типов необходимо тщательно привести переменные массива к правильному типу данных для свойства или поля данных.
Сведения о свойствах, полях данных и их типах смотрите в разделе Константы.
В следующем примере кода показано, как привести данные, полученные в SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE, к правильному типу.
PROPVARIANT pvCurve;
PropVariantInit(&pvCurve);
// Retrieve the property value.
hr = pSensor->GetProperty(SENSOR_PROPERTY_LIGHT_RESPONSE_CURVE, &pvCurve);
if (SUCCEEDED(hr))
{
if ((VT_UI1|VT_VECTOR) == V_VT(pvCurve)) // Note actual type of UI1
{
// Cast the array to UINT, a 4-byte unsigned integer.
// Item count for the array.
UINT cElement = pvCurve.caub.cElems/sizeof(UINT);
// Array pointer.
UINT* pElement = (UINT*)(pvCurve.caub.pElems);
// Use the array.
}
}
// Remember to free the PROPVARIANT when done.
PropVariantClear(&pvCurve);