Keresse meg, majd nyissa meg az Azure Kinect-eszközt

Ez a cikk azt ismerteti, hogyan keresheti meg, majd nyithatja meg az Azure Kinect DK-t. A cikk azt ismerteti, hogyan kezelheti azt az esetet, amikor több eszköz csatlakozik a géphez.

Tekintse meg az SDK Enumerate példáját is, amely a függvények használatát mutatja be ebben a cikkben.

A következő függvények tartoznak a hatálya alá:

A csatlakoztatott eszközök számának felderítése

Először lekérje a jelenleg csatlakoztatott Azure Kinect-eszközök számát a használatával k4a_device_get_installed_count().

uint32_t device_count = k4a_device_get_installed_count();

printf("Found %d connected devices:\n", device_count);

Eszköz megnyitása

Ahhoz, hogy információt kapjon egy eszközről, vagy adatokat olvasson belőle, először meg kell nyitnia egy leírót az eszköz számára a használatával 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);
}

A index paramétere k4a_device_open() azt jelzi, hogy melyik eszközt kell megnyitni, ha egynél több csatlakoztatva van. Ha csak egyetlen eszköz csatlakoztatására számít, a vagy a 0 argumentumot K4A_DEVICE_DEFAULT is megadhatja az első eszköz jelzéséhez.

Bármikor megnyithat egy eszközt, amit fel kell hívnia k4a_device_close() , ha végzett a fogópont használatával. Más fogópontok nem nyithatók meg ugyanahhoz az eszközhöz, amíg be nem zárja a fogópontot.

Adott eszköz azonosítása

Az index alapján enumerált rendelési eszközök nem változnak, amíg az eszközök nincsenek csatlakoztatva vagy leválasztva. Egy fizikai eszköz azonosításához használja az eszköz sorozatszámát.

Ha be szeretné olvasni a sorozatszámot az eszközről, használja a k4a_device_get_serialnum() függvényt egy fogópont megnyitása után.

Ez a példa bemutatja, hogyan foglalhatja le a megfelelő mennyiségű memóriát a sorozatszám tárolásához.

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);

Az alapértelmezett eszköz megnyitása

A legtöbb alkalmazásban csak egyetlen Azure Kinect DK lesz csatlakoztatva ugyanahhoz a számítógéphez. Ha csak az egyetlen várt eszközhöz kell csatlakoznia, a használatával indexK4A_DEVICE_DEFAULT hívhatja k4a_device_open() az eszközt az első eszköz megnyitásához.

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;
}

Következő lépések