依赖IVI、VISA的设备调用问题

25 篇文章 0 订阅

一、背景及问题

话不多说,直接上问题:

1.“Ivi.Visa.GlobalResourceManager”的类型初始值设定项引发异常。

应用程序: xx.exe Framework 版本: v4.0.30319 说明: 由于未经处理的异常,进程终止。异常信息: System.DllNotFoundException 在 Ivi.Visa.ConflictManager.Internal.NativeMethods.VISACM_Close() 在 Ivi.Visa.ConflictManager.ConflictManager.Finalize() 

2.VISA status code = ERROR_RSRC_NFOUND (0xBFFF0011 hex, -1073807343 decimal)
VI_ERROR_RSRC_NFOUND: No matching resources found / no more matches

IVI和VISA不多做介绍,上述问题出现的场景是,C#程序里调用Keysight的81160A信号发生器,在已经安装了开发环境的电脑上程序是可以正常运行,在同事电脑上就回产生问题1的错误并且软件崩溃掉(事件查看器——Windows日志)。

二、解决思路

1.先尝试按顺序安装IVI Shared ComponentsIVI.NET Shared Components(实际上没有必要,因为C#程序中已经引用了对应的静态库,不然调用代码是编译不通过的,并且程序安装包已经将引用的dll打包在程序根目录下,即使未安装.net驱动以至于将dll放入全局程序集缓存 (GAC)中,也是不影响在软件根目录下找到引用dll的)

2.尝试安装VISA and VISA.NET Shared Components(官网原文:VISA and VISA.NET Shared Components install common components needed to provided consistency across VISA implementations from multiple vendors. These installers are not available on this download page because they are distributed as part of a vendor's installer for its VISA implementation. Please contact a vendor directly if you wish to use these installers separately.),大意是这玩意不能直接安装,都是在供应商的软件里实现的(灵光一现,转折来了

3.设备供应商是Keysight,安装其依赖库软件“IOLibSuite_18_1_24130.exe”,安装后问题1不再出现,变为问题2且软件崩溃问题不再发生

4.安装Keysight另一个通过API可以调用供应商所有设备执行指令的软件“CommandExpert_MSI_1_9_034.exe”,问题2解决

三、问题总结

产生问题的原因在于,同事电脑上开发环境几乎空白,相对于开发环境,最直接的方式就是找到差异(安装供应商的依赖库——思路3、用于验证API的官方软件——思路4)

至于标题为何和IVI、VISA强相关,是因为博主之前在调用罗德施瓦茨(R&S)示波器的调试过程中,也是遇到各种调用不起来的问题,亦是同样的解决思路:

1.前提是安装了基本依赖驱动或其他软件,调试过程中发现导致error的问题

2.使用官方demo软件或代码进行验证(若官方未提供,相信在git hub或其他代码托管平台上也能找到)

3.若demo软件不能正常调用则可能需要重新检查依赖(比如某个型号设备的专有驱动需要另外下载),对比官方demo代码对自身代码进行检查

4.若问题仍存在,就经验来说,可能解决的操作有:检查被调用设备的配置(一般是远程调用接口设置一定要打开)、检查防火墙设置(若被调用设备上有操作系统,需要允许被调用应用通过防火墙)等等

5.一般通过上述流程即可自己解决大部分问题,若问题仍无法解决,建议联系供应商官方技术支持(为何将技术支持放在最后的原因是,进行了上述操作至少会对设备调用过程有个大致了解,不至于和人家沟通时需要把概念向你解释半天,有助于提高自身解决问题的能力,也有助于对方帮我们快速定位问题)。

 

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ivi.visa.interop是一个Visa支付系统的组成部分,用于实现不同支付系统之间的数据交互和互操作性。 Visa是一家国际支付技术公司,提供全球范围内的支付解决方案。而ivi.visa.interop是Visa支付系统中的一个重要模块,其主要功能是实现不同支付系统之间的数据交流和互相连接。 在支付系统中,不同的机构和合作伙伴可能会使用不同的支付系统和技术,因此需要能够实现互操作性,使得不同系统之间可以进行数据交互和通信。ivi.visa.interop就是为了实现这一目的而设计的。 ivi.visa.interop通过使用统一的数据格式和标准化的接口,使得不同支付系统之间能够相互理解和交流。它可以将不同支付系统产生的数据进行转换和映射,使其与其他系统兼容。这样,不同支付系统之间就能够进行有效的数据交换,实现支付的互操作性和无缝连接。 ivi.visa.interop的使用可以带来许多好处。首先,它可以降低不同支付系统之间的互联成本和复杂性,提高整个支付系统的效率和可靠性。其次,它可以促进支付创新和提供更好的客户体验,因为不同的支付系统可以更加灵活地进行协作和整合。最后,ivi.visa.interop也可以提供更好的安全性和风控措施,因为它可以帮助支付系统实现更好的数据共享和监控。 总而言之,ivi.visa.interop是Visa支付系统中的一个重要组成部分,用于实现不同支付系统之间的数据交互和互操作性,它可以降低互联成本、提高效率、促进创新,提供更好的客户体验,同时也能够提供更好的安全性和风控措施。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值