NET_DVR_PTZPOS
实际显示的PTZ值是获取到的十六进制值的十分之一,如获取的水平参数P的值是0x1750,实际显示的P值为175度;获取到的垂直参数T的值是0x0789,实际显示的T值为78.9度;获取到的变倍参数Z的值是0x1100,实际显示的Z值为110倍。
通过以下代码可以按照海康威视的规则进行十六进制和十进制的相互转换
static float rate[] = { 0.1, 1, 10, 100 };
static WORD mask = 0x000f;//显示值(十六进制)转实际(十进制下)
float HEC2DEC(WORD hec) {float dec = 0;for (int i = 0; i < 4; ++i) {WORD temp = hec & mask;dec += temp * rate[i];hec >>= 4;}return dec;
}WORD DEC2HEC(float dec) {int int_dec = round(dec * 10.0);WORD hec = 0x0000;int getHighestBit = 1000;for (int i = 0; i < 4; ++i) {int highestBit = int_dec / getHighestBit;int_dec = int_dec % getHighestBit;getHighestBit /= 10;hec += highestBit;if(i != 3) hec <<= 4;}return hec;
}