typedef struct tagUSB_COMMON_COND
{
DWORD dwSize;
BYTE byChannelID; // 通道号
BYTE bySID; // 场景ID
BYTE byRes[6];
} USB_COMMON_COND, *LPUSB_COMMON_COND;
操作的是哪个通道、哪个场景,以及这个条件结构体本身有多大
- dwSize
- 结构体大小,给 SDK 做参数校验和版本兼容。
- byChannelID
- 指定“对哪个通道操作”。
- 设成 USB_CHANNEL_IR ,表示红外通道。
- bySID
- 场景 ID。
- 某些功能可能按场景区分配置,不一定每个接口都用得到。
- byRes[6]
- 预留字节,通常清零,不用你管。
USB_THERMAL_STREAM_PARAM
- USB_CONFIG_INPUT_INFO 下发的码流参数
- USB_CONFIG_OUTPUT_INFO 用来接收查询结果
查询
/* ---- 能力查询 ---- */
void print_capabilities(void)
{
USB_COMMON_COND cond = {0};
cond.dwSize = sizeof(cond);
cond.byChannelID = USB_CHANNEL_IR; //配置红外通道
/* 查询当前热成像码流参数 */
USB_THERMAL_STREAM_PARAM tsp = {0};
tsp.dwSize = sizeof(tsp);
USB_CONFIG_INPUT_INFO in = {0};
USB_CONFIG_OUTPUT_INFO out = {0};
in.lpCondBuffer = &cond;
in.dwCondBufferSize = sizeof(cond);
out.lpOutBuffer = &tsp;
out.dwOutBufferSize = sizeof(tsp);
if (USB_GetDeviceConfig(g_userId, USB_GET_THERMAL_STREAM_PARAM_CAPABILITIES, &in, &out))
{
printf(" cap.dwVideoCodingType=%u (0x%08x)\n",
(unsigned)cap.dwVideoCodingType, (unsigned)cap.dwVideoCodingType);
static const char *desc[] = {
"热成像裸数据", "全屏测温数据", "实时裸数据",
"热图数据", "热成像实时流", "YUV实时数据",
"PS封装MJPEG", "全屏测温+YUV实时流", "YUV+裸数据", "YUV+裸数据","仅YUV不含测温头","测温头 + 离线测温信息 + 裸数据 + YUV"
};
for (int i = 0; i < 10+1; i++)
printf(" bit%d=%d %s\n", i,
(cap.dwVideoCodingType >> i) & 1, desc[i]);
}
}