Delen via


Zoek vervolgens het Azure Kinect-apparaat openen

In dit artikel wordt beschreven hoe u uw Azure Kinect DK kunt vinden en openen. In het artikel wordt uitgelegd hoe u het geval kunt afhandelen waarbij meerdere apparaten zijn verbonden met uw computer.

U kunt ook het sdk-opsommingsvoorbeeld raadplegen, waarin wordt uitgelegd hoe u de functies in dit artikel kunt gebruiken.

De volgende functies worden behandeld:

Het aantal verbonden apparaten detecteren

Haal eerst het aantal verbonden Azure Kinect-apparaten op met behulp van k4a_device_get_installed_count().

uint32_t device_count = k4a_device_get_installed_count();

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

Een apparaat openen

Als u informatie over een apparaat wilt ophalen of gegevens wilt lezen, moet u eerst een ingang voor het apparaat openen met behulp van 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);
}

De index parameter van k4a_device_open() geeft aan welk apparaat moet worden geopend als er meer dan één is verbonden. Als u verwacht dat slechts één apparaat is verbonden, kunt u een argument van K4A_DEVICE_DEFAULT of 0 doorgeven om het eerste apparaat aan te geven.

Wanneer u een apparaat opent, moet u bellen k4a_device_close() wanneer u klaar bent met het gebruik van de ingang. Er kunnen geen andere ingangen op hetzelfde apparaat worden geopend totdat u de greep hebt gesloten.

Een specifiek apparaat identificeren

De volgorde van apparaten die per index worden opgesomd, wordt pas gewijzigd als apparaten zijn gekoppeld of losgekoppeld. Als u een fysiek apparaat wilt identificeren, moet u het serienummer van het apparaat gebruiken.

Als u het serienummer van het apparaat wilt lezen, gebruikt u de k4a_device_get_serialnum() functie nadat u een ingang hebt geopend.

In dit voorbeeld ziet u hoe u de juiste hoeveelheid geheugen toewijst om het serienummer op te slaan.

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

Het standaardapparaat openen

In de meeste toepassingen is er slechts één Azure Kinect DK gekoppeld aan dezelfde computer. Als u slechts verbinding hoeft te maken met het verwachte apparaat, kunt u bellen k4a_device_open() met index of K4A_DEVICE_DEFAULT om het eerste apparaat te openen.

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

Volgende stappen