JAI GO-2400M-USB 相机在 NI MAX 里能看到,一点开就报 IMAQdx 0xBFF69011 "Unable to get attribute";相机本身是好的,用原厂软件能正常取图。处理这类报错的关键不是猜属性,而是先让 Camera Validator 指出到底哪一项取不到。

在 NI MAX 里点开相机时弹出的 IMAQdx 错误框:0xBFF69011

资源管理器里的 Utility、Data、XML 三个目录:CameraValidator 与相机文件

Camera Validator 报告:GO-2400M-USB 测试全部 FAIL,码 0xBFF69012
01 现象
环境是 Windows 10 64 位,LabVIEW 2015 SP1(32 位和 64 位都装了),驱动为 NI-IMAQdx USB3 Vision 15.5.5.49152,相机是 JAI GO-2400M-USB。
相机在 NI MAX 里能看到(名为 cam1),但每次点击它就弹出 IMAQdx 的错误框:
"Error 0xBFF69011 --- Unable to get attribute."
有两条补充信息很关键。一是相机本身没问题------用 JAI 自家的软件和驱动能正常取图;二是为了让它出现在 NI MAX 里,不得不先把 JAI 的驱动和软件卸掉。
02 根因
0xBFF69011 的含义是"取不到属性",但它不会告诉你取不到的是哪一个。相机有一长串属性:宽度、高度、像素格式、各种使能项。相机描述文件里只要有一项在这台相机上不成立,MAX 打开相机时就可能卡在这里,报出这个笼统的错误。
所以入口不该是猜,而该是一份报告:用相机校验工具(Camera Validator)把相机逐项跑一遍,让它指出到底哪一项取不到。有了报告,才能决定是去掉那一项,还是改别的做法。
这里有个容易踩的坑:报告要看对相机。现场的数据目录里同时存在两台------cam0 是一台 Axis IP Camera(来源不明),cam1 才是 JAI。第一次跑出来的报告其实是 Axis 那台的,对着错误的报告改文件,只会白折腾一轮。
03 怎么做
- 到 C:\Program Files (x86)\National Instruments\NI-IMAQdx\Utility 目录下运行 Camera Validator。
- 报告会生成在 C:\Users\Public\Documents\National Instruments\NI-IMAQdx\Compatibility Reports,打开看是哪一项取不到。
- 如果确认是某一项的问题,可以试试把这一项从相机文件里去掉,再看能否正常工作。
- 也可以用"删文件让相机重下"的办法:到 C:\Users\Public\Documents\National Instruments\NI-IMAQdx\Data,删掉该相机对应的 .iid 文件;再到同级的 XML 目录,删掉该相机对应的 .xml 文件。把所有引用清掉之后重新接上相机,相机会重新下载一份 XML。
- 处理多台相机时,先把无关的相机文件清掉,或者至少确认报告是哪台相机生成的,再去动文件。
第 4 步这次实际做过,结果是没效果:重新接上相机之后,cam1.iid 和对应的 .xml 又被原样生成了,问题照旧。数据目录里躺着 cam0(Axis IP Camera)和 cam1(JAI)两台相机的文件,XML 目录里有 PreProcessedCache 和一份 JAI 的 xml。把报告对象换成正确的相机之后,报错从 0xBFF69011 变成了 0xBFF69012:"Attribute value is out of range"------取属性这一步的问题过去了,换成另一个属性越界的问题。
也就是说,走到这里问题并没有收尾,但方向已经从"模糊的取不到属性"收窄到了具体的属性取值范围。后续按同一套路:再跑一次 Camera Validator 拿到正确相机的报告,看是哪一项越界。
还有一个现象一直挂着:相机 xml 文件里的 ModelName 写的是 "GO5100USB",实际型号却是 GO-2400M-USB(文件名倒是对的,形如 JAI Corporation_GO-2400_GO-2400M-USB_1.0.0.0_....xml)。当时自述"可能不影响",这条一致性差别是否与报错有关,没有定论。
04 记住这几条
- 0xBFF69011 只说"取不到属性",不说取哪一个;先跑 Camera Validator 拿报告,再动手改文件。
- 装了多台相机时,先确认报告是哪台的,再决定删哪份 .iid 和 .xml。
- 删掉 .iid 与 .xml 后重连相机可以重建文件,但如果相机本身就不支持某项属性,重建出来的还是一样。
- 报错码会随问题收敛而变:从 0xBFF69011 变成 0xBFF69012,说明前一项过了、后一项越界,值得顺着追下去。
我们专注 LabVIEW 软件开发与测试测量系统集成,从硬件选型、方案设计到现场交付调试,提供一站式服务。手上有一台设备想接进 LabVIEW,或者几台设备要串成一套系统,欢迎在评论区留言;身边朋友有类似项目,也欢迎帮忙引荐。