Vyhledejte a otevřete zařízení Azure Kinect
Tento článek popisuje, jak můžete najít a pak otevřít Azure Kinect DK. V tomto článku se dozvíte, jak zpracovat případ, kdy se k počítači připojuje více zařízení.
Můžete se také podívat na příklad výčtu sady SDK , který ukazuje, jak používat funkce v tomto článku.
Jsou pokryté následující funkce:
Zjištění počtu připojených zařízení
Nejprve získejte počet aktuálně připojených zařízení Azure Kinect pomocí k4a_device_get_installed_count() .
uint32_t device_count = k4a_device_get_installed_count();
printf("Found %d connected devices:\n", device_count);
Otevření zařízení
Chcete-li získat informace o zařízení nebo číst data z něj, je nutné nejprve na zařízení otevřít popisovač pomocí k4a_device_open() .
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);
}
indexParametr určuje, k4a_device_open() které zařízení se má otevřít, pokud je k dispozici více než jedna připojená. Pokud očekáváte, že bude připojeno pouze jedno zařízení, můžete předat argument K4A_DEVICE_DEFAULT nebo 0, který označuje první zařízení.
Kdykoli otevřete zařízení, které potřebujete zavolat, až k4a_device_close() budete s použitím tohoto popisovače hotovi. Žádné jiné popisovače nelze otevřít na stejné zařízení, dokud neuzavřete popisovač.
Identifikace konkrétního zařízení
Pořadí vyčíslení zařízení podle indexu se nezmění, dokud nebudou zařízení připojena nebo odpojena. K identifikaci fyzického zařízení byste měli použít sériové číslo zařízení.
Pokud chcete načíst sériové číslo ze zařízení, použijte k4a_device_get_serialnum() funkci po otevření popisovače.
Tento příklad ukazuje, jak přidělit správné množství paměti pro uložení sériového čísla.
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);
Otevřete výchozí zařízení.
Ve většině aplikací se ke stejnému počítači připojí jenom jedna Azure Kinect DK. Pokud se potřebujete připojit pouze k jednomu očekávanému zařízení, můžete volat pomocí nástroje k4a_device_open() index K4A_DEVICE_DEFAULT a otevřít první zařízení.
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;
}