2017-06-08 16 views
1

Keysight波形発生器とpyVisaを使用していますが、コードが正常に終了せず終了した場合、コードを試みるためにデバイスをハードリセットする必要があります。再び。PyVISA SerialInstrumentが故障後に接続するためのハードリセットが必要

私は__del__メソッドでデバイスをリセットしようとしましたが、デバイスは既知の状態ですが動作していないようです。私もpyvisa.resources.SerialInstrument.clear()を使ってみました。他に誰かがこのような問題を抱えていて、それをどうやって解決しましたか?

ホストコンピュータはWindows 7を実行しています。PyVISAのバージョンは1.8です。私が単純に* IDNを送信しようとするpythonスクリプトをキャンセルするプログラムが失敗した後は?私はエラー 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)を取得し、デバイス上のpyvisa.resources.SerialInstrument.clear()を呼び出すようにしようとした場合

pyvisa.errors.VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed.

:SCPIデバイスへのコマンドと、私はエラーを取得します。

+0

エラーは何ですか? pyvisaのどのバージョン?どのようなOSですか? –

+0

@StephenRauch、あなたの質問に答える質問を編集しました。 – boymeetscode

+0

ああ!私はこれが起こる原因を見つけたと思う。私がvisa.ResourceManager.list_resources()を呼び出すと、デバイスが2回アップしています。それは 'USB0 :: ...'と 'ASRL10 :: INSTR'の両方として登場します。最初のリストを取得するコードを初めて実行したときに2回目のリストを再度取得しようとしたが、2番目のリストを取得して失敗してしまいます。 – boymeetscode

答えて

1

問題は、デバイスがまだ別のインスタンスによって接続されていたことでした。これは、visa.ResourceManager()。list_resources()を実行していたため、USBデバイスとして1回、ASRLとして2回リストされていたためです。

解決策は、visa.ResourceManager().list_resources(query='USB?*')を呼び出して、機器が自分の結果に1回だけリストされていることを確認することでした。 (代わりに、デバイス設定でUSBまたはGPIBを無効にできた可能性があります)。エラーが発生したためにそこに未読データがある可能性があるため、リソースを開いた直後にdevice.clear()に電話をかけてください。これは問題を解決しました。

関連する問題