赞
踩
前面一篇文章,讲了工业相机参数如何设置与获取,使用sdk能够将自己想要的参数快速的配置进自己的程序,但是,在实际使用中,我们会发现,sdk配置的参数似乎在断电只会就消失啦,不能实现断电生效???
软件开发过程中,只能够配置常见的参数,一些偏门的参数,非常见的相机调试参数,如何批量设置进相机、如果断电能够保存???
这一篇文章就是来介绍、解决这个问题
参考相机用户手册提供的方法,主要操作分为3步
//初始化部分,放在Opendevice之后即可
nRet = MV_CC_SetEnumValue(handle, "UserSetSelector", 1);
if (MV_OK != nRet)
{
printf("error: SetEnumValue UserSetSelector fail [%x]\n", nRet);
}
nRet = MV_CC_SetEnumValue(handle, "UserSetDefault", 1);
if (MV_OK != nRet)
{
printf("error: SetEnumValue UserSetDefault fail [%x]\n", nRet);
}
//设置Command型节点-发送参数保存命令
//大部分参数修改完成后,调用此命令进行保存,不建议频繁调用
nRet = MV_CC_SetCommandValue(m_handle, "UserSetSave");
if (MV_OK != nRet)
{
printf("error: SetCommandValue fail [%x]\n", nRet);
}
nRet = MV_CC_SetEnumValue(handle, "UserSetSelector", 1);//切换不同的参数组
if (MV_OK != nRet)
{
printf("error: SetEnumValue UserSetSelector fail [%x]\n", nRet);
}
nRet = MV_CC_SetCommandValue(m_handle, "UserSetLoad");//load
if (MV_OK != nRet)
{
printf("error: SetCommandValue fail [%x]\n", nRet);
}
// ch:打开设备 | en:Open device nRet = MV_CC_OpenDevice(handle); if (MV_OK != nRet) { printf("Open Device fail! nRet [0x%x]\n", nRet); break; } printf("Start export the camera properties to the file\n"); printf("Wait......\n"); // ch:将相机属性导出到文件中 | en:Export the camera properties to the file nRet = MV_CC_FeatureSave(handle, "FeatureFile.ini"); if (MV_OK != nRet) { printf("Save Feature fail! nRet [0x%x]\n", nRet); break; } printf("Finish export the camera properties to the file\n\n"); //-------------------------------------------------------------------------- printf("Start import the camera properties from the file\n"); printf("Wait......\n"); // ch:从文件中导入相机属性 | en:Import the camera properties from the file nRet = MV_CC_FeatureLoad(handle, "FeatureFile.ini"); if (MV_OK != nRet) { printf("Load Feature fail! nRet [0x%x]\n", nRet); break; } printf("Finish import the camera properties from the file\n"); // ch:关闭设备 | Close device nRet = MV_CC_CloseDevice(handle); if (MV_OK != nRet) { printf("ClosDevice fail! nRet [0x%x]\n", nRet); break; }
调用MV_CC_FeatureSave接口,可以将相机参数导出到本地,形成一个.ini结尾的文件,打开这个文件可以看见相机的参加参数,例如曝光、增益等
修改这个文件中的你想要修改的参数值,再调用MV_CC_FeatureLoad可以重新导入修改之后的参数
如果是批量应用的话,事先导出一份ini文件,然后使用FeatureLoad的接口,就可以实现批量化的参数设置,减少人员调试
当然,这个功能暂时也有几个缺点:
MV_CC_FILE_ACCESS stFileAccess = {0}; stFileAccess.pUserFileName = "UserSet1.bin"; stFileAccess.pDevFileName = "UserSet1"; if (1 == g_nMode) { //ch:读模式 |en:Read mode g_nRet = MV_CC_FileAccessRead(pUser, &stFileAccess); if (MV_OK != g_nRet) { printf("File Access Read fail! nRet [0x%x]\n", g_nRet); } } else if (2 == g_nMode) { //ch:写模式 |en:Write mode g_nRet = MV_CC_FileAccessWrite(pUser, &stFileAccess); if (MV_OK != g_nRet) { printf("File Access Write fail! nRet [0x%x]\n", g_nRet); } }
如果想要断电生效,还需要参考方法1,useset对参数进行保存
缺点:
方法4:MVS导入导出功能
MVS此功能的实现与FileAccess 功能一致,导出的都是userset参数
版本要求:MVS3.2.1版本及其以上
使用方法很简单,链接相机后,在属性界面的上方找到导入/导出的图标按钮,点击即可,生成.mfs后缀的文件即可
方法 | 优点 | 缺点 |
---|---|---|
UserSetLoad (推荐使用) | 操作简单、MVS、sdk都可以操作实现 | 批量机台复制操作不易 |
FeatureLoad/FeatureSave | ini文件可读性高,批量机台复制简单、参数修改简单 | 需代码开发;MVS不兼容 |
FileAccess | 批量复制简单,与MVS兼容 | 文件不可读,不可被修改; |
MVS导入导出(推荐使用) | 批量复制简单,SDK可兼容 | 文件不可读,不可被修改; |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。