本文内容
● 发现已毗连装备数
● 打开装备
● 识别特定装备
● 打开默认装备
● 后续步骤
本文先容怎样查找然后打开 Femto Bolt。 本文将诠释如那里置赏罚有多个装备毗连到盘算机的情形。
你还可以参考 SDK 枚举示例,其中演示了怎样使用本文所述的函数。
本文将先容以下函数:
● k4a_device_get_installed_count()
● k4a_device_open()
● k4a_device_get_serialnum()
● k4a_device_close()
发现已毗连的装备数
首先使用 k4a_device_get_installed_count() 获取当前已毗连的 Femto Bolt 装备数。
打开装备
若要获取装备的相关信息或从中读取数据,首先需要使用 k4a_device_open() 打开gai装备的句柄。
k4a_device_t device = NULL;
for (uint8_t deviceIndex = 0; deviceIndex < device_count; deviceIndex++)
{
if (K4A_RESULT_SUCCEEDED != k4a_device_open(deviceIndex, &device))
{
printf("%d: Failed to open device\n", deviceIndex);
continue;
}
...
k4a_device_close(device);
}k4a_device_open() 的 index 参数指示当毗连了多个装备时要打开哪个装备。 若是你预期只会毗连一个装备,可以转达 K4A_DEVICE_DEFAULT 的参数或 0 来指示第一台装备。
用完句柄后,每当打开装备时,都需要挪用 k4a_device_close()。 在关闭句柄之前,无法打开统一装备的其他句柄。
识别特定的装备
在附加或疏散装备之前,设备an索引枚举的顺序不会更改。 若要识别物理装备,应使用装备的序列号。
若要读取装备中的序列号,请在打开句柄后使用 k4a_device_get_serialnum() 函数。此示例演示怎样分配适量内存来存储序列号。
char *serial_number = NULL;
size_t serial_number_length = 0;
if (K4A_BUFFER_RESULT_TOO_SMALL != k4a_device_get_serialnum(device, NULL, &serial_number_length))
{
printf("%d: Failed to get serial number length\n", deviceIndex);
k4a_device_close(device);
device = NULL;
continue;
}
serial_number = malloc(serial_number_length);
if (serial_number == NULL)
{
printf("%d: Failed to allocate memory for serial number (%zu bytes)\n", deviceIndex, serial_number_length);
k4a_device_close(device);
device = NULL;
continue;
}
if (K4A_BUFFER_RESULT_SUCCEEDED != k4a_device_get_serialnum(device, serial_number, &serial_number_length))
{
printf("%d: Failed to get serial number\n", deviceIndex);
free(serial_number);
serial_number = NULL;
k4a_device_close(device);
device = NULL;
continue;
}
printf("%d: Device \"%s\"\n", deviceIndex, serial_number);打开默认装备
在大多数应用法式中,只会将单个Femto Bolt 附加到统一台盘算机。 若是预期只需毗连单个装备,可以团结 K4A_DEVICE_DEFAULT 的 index 挪用 k4a_device_open() 打开第一台装备。
k4a_device_t device = NULL;
uint32_t device_count = k4a_device_get_installed_count();
if (device_count != 1)
{
printf("Unexpected number of devices found (%d)\n", device_count);
goto Exit;
}
if (K4A_RESULT_SUCCEEDED != k4a_device_open(K4A_DEVICE_DEFAULT, &device))
{
printf("Failed to open device\n");
goto Exit;
}后续步骤