VISA,仪器设备的万能遥控器

33 阅读3分钟

VISA,(Virtual Instrument Software Architecture) 就像一个“万能遥控器”


生成展示 VISA 的图片.png

场景设定:

想象你家里的娱乐设备越来越多:

  • 一台老式的索尼电视机(只有红外遥控,且是特殊编码格式)-> 相当于 GPIB仪器
  • 一台新的小米智能电视(支持Wi-Fi和蓝牙控制)-> 相当于 LAN(LXI)或USB仪器
  • 一个音响功放(用特定的串行接口控制,比如RS-232)-> 相当于 串口仪器
  • 一台蓝光播放器(用另一种红外遥控)-> 相当于另一台 GPIB仪器

你想用一个手机App来控制所有这些设备,实现一键观影模式(打开电视、功放、播放器,并切换正确输入源)。

如果没有VISA(传统方式):

你需要:

  1. 为索尼电视编写红外编码驱动程序,并连接一个红外发射器。
  2. 为小米电视调用其Wi-Fi API,可能还要处理登录和协议。
  3. 为功放编写串口通信代码,发送特定的二进制命令。
  4. 为蓝光播放器再编写一套红外编码。

你需要管理四种不同的通信方式,每种都有其独特的协议和物理接口,非常麻烦。

有了VISA(万能遥控器):

你只需要一个“万能遥控器”App(相当于你的测试程序),这个App内部集成了 VISA 库

VISA 作为“万能遥控器”的核心功能和特性:

  1. 统一的控制接口(核心功能)
    • 功能:在App里,你控制任何设备都调用同样的函数,比如 SendCommand(device, "POWER ON")
    • 技术对应:VISA 提供统一的 viWriteviRead 等函数,无论底层是红外、Wi-Fi还是串口。
  2. 设备发现与资源描述
    • 功能:App能扫描并列出家里所有可控制的设备,每个设备有一个唯一标识,比如 IR::SONY_TVWIFI::XIAOMI_TVCOM3::AMP
    • 技术对应:VISA 资源管理器可以枚举各种总线上的仪器,并给出标准资源字符串。
  3. 通信协议转换
    • 功能:当你发送“POWER ON”命令时,VISA底层会根据设备类型自动转换:
      • 对索尼电视:转换为红外编码并发射。
      • 对小米电视:转换为Wi-Fi JSON报文发送。
      • 对功放:转换为串口指令并发送。
    • 技术对应:VISA 的厂商驱动负责将标准VISA命令转换为仪器特定的协议。
  4. 高级控制功能
    • 功能:你可以设置命令超时时间(比如5秒没响应就报错),可以监听设备发来的事件(比如电视开机完成发送事件),可以一次读取多行响应等。
    • 技术对应:VISA 的超时、事件、读写终止符等属性设置。
  5. 厂商与平台无关性
    • 功能:这个万能遥控器App可以在不同手机(iOS或Android)上运行,并且可以控制不同品牌的设备,因为它的底层遵循统一的VISA标准。
    • 技术对应:VISA 是一个开放标准,NI、Keysight等厂商的实现兼容,使得同一套代码在不同系统和不同仪器上都能工作。

总结:

通过这个“万能遥控器”(VISA),你作为用户(开发者)只需要学习一种控制方式(一套API),就可以管理所有设备(仪器)。当你新增一个设备(比如投影仪)时,只要这个设备支持VISA(即能被万能遥控器兼容),你就可以用同样的方式控制它,而不需要重新学习新的通信方式。

所以,VISA 在仪器控制中的作用就是:将各种仪器的通信细节抽象化,提供统一、简洁、可靠的编程接口,极大地降低了多仪器系统的开发和维护成本。