你这SDK能不能写好点
问题描述
MV-CS200-10GM
在使用程序的过程中偶尔会出现相机占用的问题,一打印发现两次启动的相机都是同一个,于是开始debug
启动相机前,查看相机列表
C
MV_CC_DEVICE_INFO_LIST stList;
memset(&stList, 0, sizeof(MV_CC_DEVICE_INFO_LIST)); //深拷贝
MV_CC_EnumDevices(MV_GIGE_DEVICE | MV_USB_DEVICE, &stList);
for (unsigned int i = 0; i < stList.nDeviceNum; i++)
{
QString sn = QString::fromLatin1((const char*)stList.pDeviceInfo[i]->SpecialInfo.stGigEInfo.chSerialNumber);
CameraWorker* w = new CameraWorker(stList.pDeviceInfo[i], i, this);
w->openCamera();
m_workers.append(w);
}

第一个相机是243,编号是数组0

然后我们继续程序,打开这个第一个相机,你偶尔会发现,里边0号相机变了,变成了986,同时1号相机变成了刚刚的0号相机243,也就说这结构体里边的顺序还会变


他还是偶尔变,偶尔不变,一开始我都不知道问题出在哪
解决
添加判断策略,变化了就取第一个,逻辑自洽
c
//数据顺序发生变化,需要访问第0个
if (i != 0 && firstID == sn)
{
CameraWorker* w = new CameraWorker(stList.pDeviceInfo[0], i, this);
w->openCamera();
m_workers.append(w);
return ;
}