深度挖掘NI-VISION自带dll隐藏的函数,实现
labview修改相机inferface name属性(labview自带函数无法实现)
你是否曾经有过这样的疑问,为什么nimax可以rename相机,而labview不行?(或许还有别的方法,请各位留言)
今天借这个机会,和大家一起探讨,如何深度挖掘ni-vision隐藏的函数
通过枚举相机的函数可以得到相机的interface name 也就是常见的cam 15 ,
但是我们通过摄像头属性无法得到或修改interface name这个属性值
有些时候,我们希望通过软件实现rename相机名称,以防操作人员把相机设错,引起不必要的麻烦。
既然自带函数能实现,那么我们找找其他方法。
思考一下,既然能通过枚举相机的函数得到这个interface name这个属性值,而且能通过NIMAX实现rename属性,那么nivision自带的函数库dll文件,一定有相关函数,因为nimax也是要基于这些dll运行的。因此我们从调用dll函数来找到突破口。
通过查看dll函数,我们真的找到了这个renameinterface函数,剩下的就是要知道,怎么调用这个函数了,其实就是要知道,这个函数的输入和输出数据类型。我们是否可以参考imaqdx中的类似的函数来调用呢,rename只需要输入相机引用和要修改的名称,和write attribute这函数很类似。
看看这个函数的输入类型
我们再参照这个函数的调用方式,修改一下,
把调用的函数替换掉,其他不变
经过测试,果真可以实现rename的功能。
该方法在内存泄漏方面还有待测试,仅供参考,有兴趣的可以再研究下,这个dll中的其他函数。
源码请下载: