# HelloOrbbec
功能描述:用于演示SDK初始化、獲取SDK版本、獲取設(shè)備型號(hào)、獲取設(shè)備序列號(hào)、獲取固件版本號(hào)、SDK釋放資源,并通過(guò)ESC_KEY鍵退出程序
> 本示例基于C++ Low Level API進(jìn)行演示
打印SDK的版本號(hào),SDK版本號(hào)分為主版本號(hào),副版本號(hào)和修訂版本號(hào)
std::cout << "SDK version: " << ob::Version::getMajor() << "." << ob::Version::getMinor() << "." << ob::Version::getPatch() << std::endl;
首先需要?jiǎng)?chuàng)建一個(gè)Context,用于獲取設(shè)備信息列表和創(chuàng)建設(shè)備
ob::Context ctx;
查詢已經(jīng)接入設(shè)備的列表
auto devList = ctx.queryDeviceList();
//獲取接入設(shè)備的數(shù)量
if(devList->deviceCount() == 0) {
std::cerr << "Device not found!" << std::endl;
return -1;
}
創(chuàng)建設(shè)備
//創(chuàng)建設(shè)備,0表示第一個(gè)設(shè)備的索引
auto dev = devList->getDevice(0);
獲取當(dāng)前preset信息
auto devicePresetList = dev->getAvailablePresetList();
auto devicePreset = dev->getCurrentPresetName();
std::cout << "Available preset list: " << std::endl;
for(uint32_t i = 0; i < devicePresetList->count(); i++) {
auto name = devicePresetList->getName(i);
if(std::string(name) == std::string(devicePreset)) {
std::cout << "\t" << name << " (current preset)" << std::endl;
}
else {
std::cout << "\t" << name << std::endl;
}
設(shè)置當(dāng)前preset
auto newPreset = "High Accuracy";
if(devicePresetList->hasPreset(newPreset)) {
dev->loadPreset(newPreset);
std::cout << "Current preset is changed to " << newPreset << std::endl;
}
接下來(lái)就可以獲取和這個(gè)設(shè)備相關(guān)的信息:設(shè)備信息、設(shè)備的名稱、獲取設(shè)備的pid, vid, uid、設(shè)備的固件版本號(hào)、設(shè)備的序列號(hào)
//獲取設(shè)備信息
auto devInfo = dev->getDeviceInfo();
//獲取設(shè)備的名稱
std::cout << "Device name: " << devInfo->name() << std::endl;
//獲取設(shè)備的pid, vid, uid
std::cout << "Device pid: " << devInfo->pid() << " vid: " << devInfo->vid() << " uid: " << devInfo->uid() << std::endl;
//獲取設(shè)備的固件版本號(hào)
auto fwVer = devInfo->firmwareVersion();
std::cout << "Firmware version: " << fwVer << std::endl;
//獲取設(shè)備的序列號(hào)
auto sn = devInfo->serialNumber();
std::cout << "Serial number: " << sn << std::endl;
// By getting the connection type of the device
auto connectType = devInfo->connectionType();
獲取支持的傳感器列表
//獲取支持的傳感器列表
std::cout << "Sensor types: " << std::endl;
auto sensorList = dev->getSensorList();
for(uint32_t i = 0; i < sensorList->count(); i++) {
auto sensor = sensorList->getSensor(i);
switch(sensor->type()) {
case OB_SENSOR_COLOR:
std::cout << "\tColor sensor" << std::endl;
break;
case OB_SENSOR_DEPTH:
std::cout << "\tDepth sensor" << std::endl;
break;
case OB_SENSOR_IR:
std::cout << "\tIR sensor" << std::endl;
break;
case OB_SENSOR_IR_LEFT:
std::cout << "\tIR Left sensor" << std::endl;
break;
case OB_SENSOR_IR_RIGHT:
std::cout << "\tIR Right sensor" << std::endl;
break;
case OB_SENSOR_GYRO:
std::cout << "\tGyro sensor" << std::endl;
break;
case OB_SENSOR_ACCEL:
std::cout << "\tAccel sensor" << std::endl;
break;
default:
break;
}
控制臺(tái)結(jié)果輸出如下:
預(yù)期輸出:
