我正在使用Keysight波形发生器和pyVisa,我注意到,如果我的代码没有成功完成并结束,我需要执行设备的硬重置来再次尝试我的代码。在
我尝试过在__del__
方法下重置设备,使设备处于已知状态,但似乎不起作用。我也尝试过使用pyvisa.resources.SerialInstrument.clear()
。有没有其他人遇到过这样的问题?你是怎么解决的?在
主机正在运行windows 7。PyVISA版本是1.8。程序失败后,我取消了python脚本,我将尝试发送一个简单的*IDN?SCPI命令发送到设备,我得到错误:
pyvisa.errors.VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed.
如果我想打电话pyvisa.resources.SerialInstrument.clear()在设备上出错
pyvisa.errors.VisaIOError: VI_ERROR_INV_SETUP (-1073807302): Unable to start operation because setup is invalid (usually due to attributes being set to an inconsistent state)
。在
问题是设备仍由另一个实例连接。原因是因为跑步visa.ResourceManager().list\u resources()将设备列出两次,一次作为USB设备,另一次作为ASRL。在
解决方案是调用
visa.ResourceManager().list_resources(query='USB?*')
,以确保该工具在我的结果中只列出一次。(或者,我可以在设备设置中禁用USB或GPIB。)然后在打开资源后立即调用device.clear()
,以确保缓冲区是空的,因为出现错误时那里可能有未读数据。这就解决了问题。在相关问题 更多 >
编程相关推荐