3

我正在尝试通过 Python 与一个非常古老的仪器(CCD 相机)进行通信。仪器制造商于 1999 年出版的 GPIB 编程手册仅提供了基本命令列表。它还描述了 GPIB 通信的一些标准过程。

我之前已经成功地编写了一些 Python 程序(使用 PyVisa)来控制和获取通过以太网或 USB 与计算机连接的仪器的数据。然而,GPIB 对我来说是新的,它在 ATN、SRQ、谈话者或听众方面似乎与他们有很大不同。

我从 PyVisa API 文档中找到了 GPIBInterface 和 GPIBInstrument 类,但找不到任何有关谈话者或听众设置的信息。

以下是我的问题,

一个。我对数据采集过程的以下假设是否正确?

  1. 将控制器 (PC) 设置为说话者,将仪器设置为听者。
  2. 控制器断言 ATN。
  3. 控制器命令仪器采集数据。
  4. 等待来自仪器的 SRQ。
  5. 将仪器设置为说话者,将控制器设置为听者。
  6. 控制器将 ATN 置低。
  7. 仪器向控制器发送数据信息。
  8. 单次采集完成。

湾。来自控制器的控制消息和 GPIBInstrument 类中的直接“写入”函数有什么区别?

下面的代码仍然有效,尽管它省略了设置 ATN、说话者或听众。为什么?

import pyvisa

RM = pyvisa.ResourceMananger()
INSTRUMENT = RM.open_resource('instrument address')
print(INSTRUMENT.query('*IDN?'))

C。他们有任何通过 PyVisa 进行 GPIB 编程的示例或教程吗?

找不到合适的。。

任何评论都会有所帮助。提前致谢。

4

1 回答 1

2

一个。我对数据采集过程的以下假设是否正确?

  1. 将控制器 (PC) 设置为说话者,将仪器设置为听者。
  2. 控制器断言 ATN。
  3. 控制器命令仪器采集数据。
  4. 等待来自仪器的 SRQ。
  5. 将仪器设置为说话者,将控制器设置为听者。
  6. 控制器将 ATN 置低。
  7. 仪器向控制器发送数据信息。
  8. 单次采集完成。

我已经编写基于 VISA 的仪器控制代码 20 多年了,我不知道这个问题的答案,而且几乎可以肯定你也不需要知道它。

只有当您自己实际实现 VISA API,或在您设计的仪器上调试 GPIB 接口时,您才需要担心 ATN 或 SRQ 信号的操作,或分配谈话者和听众。

下面的代码仍然有效,尽管它省略了设置 ATN、说话者或听众。为什么?

简而言之,因为由 pyVisa或方法调用的 Visa viWrite()(或)函数会为您处理一切。viQuery()write()query()

类似地viRead(),由 pyVisaread()方法调用的函数将负责从从设备读取消息所需的所有低级信号操作。

有一天,如果运气不好,您可能会发现您需要执行一些低级功能,例如GTL(转到本地,告诉仪器返回前面板控制),GET(组执行触发,同时触发多个仪器),或回应一个SRQ。但即使是这些,VISA 库也提供了一个抽象接口,因此您不必直接操作各个总线线路。

C。他们有任何通过 PyVisa 进行 GPIB 编程的示例或教程吗?

pyVisa文档提供了几个示例,例如在标题下

与您的仪器通信

一个更复杂的例子

读取和写入值

于 2021-04-14T05:00:05.653 回答