Localizar e, em seguida, abrir o dispositivo Azure Kinect
Este artigo descreve como pode encontrar e, em seguida, abra o Azure Kinect DK. O artigo explica como lidar com o caso em que existem vários dispositivos ligados ao seu computador.
Também pode consultar o Exemplo de Enumeração do SDK que demonstra como utilizar as funções neste artigo.
As seguintes funções são abrangidas:
Descobrir o número de dispositivos ligados
Primeiro, obtenha a contagem de dispositivos Azure Kinect atualmente ligados com k4a_device_get_installed_count()
.
uint32_t device_count = k4a_device_get_installed_count();
printf("Found %d connected devices:\n", device_count);
Abrir um dispositivo
Para obter informações sobre um dispositivo ou para ler dados do mesmo, primeiro tem de abrir uma alça para o dispositivo com 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);
}
O index
parâmetro de k4a_device_open()
indica o dispositivo a abrir se existir mais do que um ligado. Se apenas esperar que um único dispositivo esteja ligado, pode transmitir um argumento de K4A_DEVICE_DEFAULT
ou 0 para indicar o primeiro dispositivo.
Sempre que abrir um dispositivo, tem de ligar k4a_device_close()
quando terminar de utilizar a alça. Não é possível abrir outras alças no mesmo dispositivo até fechar a alça.
Identificar um dispositivo específico
Os dispositivos de encomenda enumerados por índice não serão alterados até que os dispositivos estejam ligados ou desanexados. Para identificar um dispositivo físico, deve utilizar o número de série do dispositivo.
Para ler o número de série do dispositivo, utilize a k4a_device_get_serialnum()
função depois de abrir uma alça.
Este exemplo demonstra como alocar a quantidade certa de memória para armazenar o número de série.
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);
Abrir o dispositivo predefinido
Na maioria das aplicações, haverá apenas um único DK do Azure Kinect anexado ao mesmo computador. Se apenas precisar de ligar ao dispositivo único esperado, pode ligar k4a_device_open()
com index
de K4A_DEVICE_DEFAULT
para abrir o primeiro dispositivo.
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;
}
Passos seguintes
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários