这次并不满足我的使用,后面我又改成C开发了,C++开发只做到这里,当然也有很多参考价值,C开发也差不多,这里是X86的,因为和下位机的通信是32位的,也要变成X86的。
主要工作模块与功能:
创建基于对话框的MFC工程,生成FIRAAPP
配置引用头文件:
配置Lib文件:
下面是用序列号打开设备的举例:
//打开设备,此处以序列号为例打开设备,序列号以实际设备为准。用户可以选择其他方式打开设备。 #ifdef_DEBUG CGXDevicePointerobjDevicePtr = IGXFactory::GetInstance().OpenDeviceBySN("RN0001007012", GX_ACCESS_EXCLUSIVE); //获取远端设备属性控制器 CGXFeatureControlPointer objFeatureControl = objDevicePtr->GetRemoteFeatureControl(); //设置心跳超时时间5分钟 objFeatureControl->GetIntFeature("GevHeartbeatTimeout")->SetValue(300000); #endif
具体说明:需要注意上面这个打开方式有前提,而且心跳时间需要改或者用第二种方式重启:
注意事项:提供管理员身份运行才可以打开设备:
下面是打开相机的四种方式:
GxIAPICPP::gxdeviceinfo_vector vectorDeviceInfo; IGXFactory::GetInstance().UpdateDeviceList(1000, vectorDeviceInfo); /* SN为设备序列号 UserID为用户自定义名称(不支持UserID的设备此项为空字符串) MAC为设备MAC地址(非千兆网相机此项为空字符串) IP为设备IP地址(非千兆网相机此项为空字符串) */ if (vectorDeviceInfo.size()> 0) { //打开链表中的第一个设备 CGXDevicePointerobjDevicePtr; GxIAPICPP::gxstringstrSN = vectorDeviceInfo[0].GetSN(); GxIAPICPP::gxstringstrUserID = vectorDeviceInfo[0].GetUserID(); GxIAPICPP::gxstringstrMAC = vectorDeviceInfo[0].GetMAC(); GxIAPICPP::gxstringstrIP = vectorDeviceInfo[0].GetIP(); //用户也可以直接指定打开的设备信息,下面代码中使用的信息为伪造信息,用户以实际设备为准 //GxIAPICPP::gxstring strSN = "GA0140100002"; //GxIAPICPP::gxstring strUserID = "MyUserName"; //GxIAPICPP::gxstring strMAC = "A1-0B-32-7C-6F-81"; //GxIAPICPP::gxstring strIP = "192.168.0.100"; objDevicePtr = IGXFactory::GetInstance().OpenDeviceBySN(strSN, GX_ACCESS_EXCLUSIVE); //objDevicePtr = IGXFactory::GetInstance().OpenDeviceByUserID(strUserID, GX_ACCESS_EXCLUSIVE); //objDevicePtr = IGXFactory::GetInstance().OpenDeviceByMAC(strMAC, GX_ACCESS_EXCLUSIVE); //objDevicePtr = IGXFactory::GetInstance().OpenDeviceByIP(strIP, GX_ACCESS_EXCLUSIVE); }