2

我有一个 GPIB 设备,我正在使用 National Instruments USB 转 GPIB 进行通信。USB转GPIB很好用。

我想知道什么会导致 GPIB 设备无响应?如果我关闭设备并重新打开它会响应,但是当我运行我的程序时它会首先响应。然后它切断了我什至无法与它只是超时的 GPIB 设备通信。

我填满缓冲区了吗?

来自另一位提问者的一些细节

我正在使用 PyVisa 控制 National Instruments GPIB 卡(不是 USB)。GPIB 总线上的仪器是 Newport ESP300 运动控制器。在几个小时的会话期间(一直向 ESP300 发送命令和从 ESP300 读取),ESP300 有时会停止收听并变得无响应。所有读取都超时,甚至没有*idn?产生响应。

我能做些什么来清除这种状态吗?例如,驾驶 IFC 生产线?

4

3 回答 3

1

应该有一个明确的命令(类似"*CLS?",但不要引用我的话)。当我第一次连接到设备时,我总是运行它。然后确保你有一个好的超时时间。我发现我的设备大约需要 1 秒。不到 1 秒就完成了,所以我错过了写入后的读取。大多数情况下,超时是因为您刚刚错过了它,或者您正在阅读一个没有返回的命令。确保您还在写入之间检查错误队列中的错误,以确保写入时正确正确。

于 2013-03-20T02:59:26.353 回答
1

由于您使用的是 National Instruments 硬件,您可以在后台运行 NI Trace 以检查从程序发出的所有命令。在 Trace 中,请检查最后一个命令及其参数,这些命令是从导致硬件挂起的程序发出的。

您可以在此处下载 NI IO Trace

于 2019-10-02T09:49:27.720 回答
1

如果设备不再监听(这里可能就是这种情况),即使命令 *CLS 也将不起作用。强制重置设备接口的唯一方法是发送低级 gpib 总线消息“Selected Device Clear”(它由标准 gpib 库的函数“ibclr”实现,例如https ://www.l-com.com/multimedia/manuals/M_USB-488.PDF第 3-7 页,但我不知道 Python 中的等价物是什么)。此命令旨在在发生 GPIB 错误时使用,我一直在这样做并且从未遇到过问题。为了使它正常工作,您还应该监视所有 gpib 调用的返回值 - 通常人们不会这样做,因此在程序挂起之前他们不会意识到错误。

于 2018-11-06T15:01:10.190 回答