我正在尝试通过将设备 URI 传递给 Device::open 来打开特定设备。由于某些原因,device.open 不适用于此类 uri。我收到以下消息
无法打开“1d27/0600@1/7”:设置USB接口失败!
仅当我使用 openni::any_device 获取 uri 时它才有效。但我在工作中使用了多种设备,所以这不是我的选择。当我尝试将 Asus xtion (vendorId 0x1D27 productId 0x0600) 与 ps1080 驱动程序和 openni2 一起使用时,会出现此问题。我也尝试使用 orbbec.so (由于某些原因它也适用于华硕),但问题仍然存在。
openni::OpenNI::initialize();
openni::Device device;
openni::Array< openni::DeviceInfo > deviceInfoList;
openni::OpenNI::enumerateDevices(&deviceInfoList);
for(int i=0;i<deviceInfoList.getSize();i++)
{
if(device.open(deviceInfoList[i].getUri()) != STATUS_OK)
std::cout<<openni::OpenNI::getExtendedError()<<std::endl;
//...
}
UPD:好的,我想我知道问题出在哪里。我在工作中使用 Astra 和 Asus 传感器,由于某些原因,orbbec 也可以与 Asus 一起使用,所以当我插入 Asus 时,openni 会检测到 2 个具有相同 uri 的传感器(Astra 和 PS1080)。这就是为什么 device.open 无法打开它的原因。有没有办法在没有 uri 的情况下打开设备或指定 openni 应该使用什么驱动程序?