PyVISA SerialInstrument需要硬重置才能在故障后连接

2024-09-23 16:25:50 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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)。在


Tags: to代码erroroperation重置viresourcesclear
1条回答
网友
1楼 · 发布于 2024-09-23 16:25:50

问题是设备仍由另一个实例连接。原因是因为跑步visa.ResourceManager().list\u resources()将设备列出两次,一次作为USB设备,另一次作为ASRL。在

解决方案是调用visa.ResourceManager().list_resources(query='USB?*'),以确保该工具在我的结果中只列出一次。(或者,我可以在设备设置中禁用USB或GPIB。)然后在打开资源后立即调用device.clear(),以确保缓冲区是空的,因为出现错误时那里可能有未读数据。这就解决了问题。在

相关问题 更多 >