Bagikan melalui


Temukan lalu buka perangkat Azure Kinect

Artikel ini menjelaskan cara Anda dapat menemukan, lalu membuka Azure Kinect DK Anda. Artikel tersebut menjelaskan cara menangani kasus ketika ada beberapa perangkat yang terhubung ke mesin Anda.

Anda juga dapat merujuk ke Contoh yang disebutkan SDK yang menunjukkan cara menggunakan fungsi dalam artikel ini.

Fungsi-fungsi berikut ini dibahas:

Temukan jumlah perangkat yang terhubung

Pertama, dapatkan jumlah perangkat Azure Kinect yang saat ini terhubung menggunakan k4a_device_get_installed_count().

uint32_t device_count = k4a_device_get_installed_count();

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

Buka perangkat

Untuk mendapatkan informasi tentang perangkat, atau membaca data darinya, Anda harus terlebih dahulu membuka handel perangkat menggunakan 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);
}

Parameter index dari k4a_device_open() menunjukkan perangkat mana yang akan dibuka jika ada lebih dari satu yang terhubung. Jika Anda hanya mengharapkan satu perangkat terhubung, Anda dapat meneruskan argumen K4A_DEVICE_DEFAULT atau 0 untuk menunjukkan perangkat pertama.

Setiap kali Anda membuka perangkat, Anda perlu memanggil k4a_device_close() setelah selesai menggunakan pegangan. Tidak ada handel lain yang dapat dibuka ke perangkat yang sama sampai Anda menutup handelnya.

Identifikasi perangkat tertentu

Urutan perangkat yang disebutkan berdasarkan indeks tidak akan berubah hingga perangkat terpasang atau terlepas. Untuk mengidentifikasi perangkat fisik, Anda harus menggunakan nomor seri perangkat.

Untuk membaca nomor seri dari perangkat, gunakan fungsi k4a_device_get_serialnum() setelah Anda membuka handel.

Contoh ini menunjukkan cara mengalokasikan jumlah memori yang tepat untuk menyimpan nomor seri.

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

Buka perangkat default

Di sebagian besar aplikasi, hanya akan ada satu Azure Kinect DK yang terpasang ke komputer yang sama. Jika Anda hanya perlu menyambungkan ke satu perangkat yang diharapkan, Anda dapat memanggil k4a_device_open() dengan index dari K4A_DEVICE_DEFAULT untuk membuka perangkat pertama.

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

Langkah berikutnya