我有一个GPIB设备,我正在使用NI USB到GPIB进行通信。 USB转GPIB效果很好。
我想知道什么会导致GPIB设备无响应?如果我关闭设备并将其重新打开,它会响应,但是当我运行我的程序时,它会首先响应。然后切断我甚至无法与GPIB设备进行通信。
我是否填满了缓冲区?
来自其他提问者的一些细节
我正在使用PyVisa控制National Instruments GPIB卡(不是USB)。 GPIB总线上的仪器是Newport ESP300运动控制器。在几个小时的会话期间(一直向ESP300发送命令和从ESP300读取),ESP300有时会停止收听并且没有响应。所有读取都超时,甚至*idn?
都没有产生响应。
我能做些什么可能会清除这种状态?例如驾驶IFC线?
答案 0 :(得分:1)
应该有一个明确的命令(类似"*CLS?"
,但不要引用我)。当我第一次连接到设备时,我总是运行它。然后确保你有一个很好的超时持续时间。我发现我的设备大约1秒钟的作品。不到1秒就可以了,所以我在写完后就错过了读。大多数情况下,超时是因为您错过了它,或者您在没有返回的命令后阅读。确保在写入之间检查错误队列中的错误,以确保在通过时实际正确写入。
答案 1 :(得分:1)
即使设备不再监听,命令* CLS也将不起作用(在这里可能就是这种情况)。无论状态如何(监听或不监听),强制重置设备接口的唯一方法是发送低级gpib总线消息“已选择设备清除”(由标准gpib库的功能“ ibclr”实现,例如{ {3}}第3-7页,但我不知道Python中的等效项)。该命令旨在在发生GPIB错误时使用,我一直在执行,并且从未遇到过问题。为了使它正常工作,您还应该监视所有gpib调用的返回值-通常人们不这样做,因此在程序挂起之前,他们不知道错误。
答案 2 :(得分:1)
由于使用的是National Instruments硬件,因此可以在后台运行NI Trace,以检查从程序发出的所有命令。在“跟踪”中,检查从程序中发出的导致硬件挂起的最后一个命令及其参数。