問題タブ [gpib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
606 参照

python - MATLAB の GPIB を PyVISA に変換する

GPIB 接続を介して XYZ ステージをプログラムするために使用される MATLAB コードをいくつか継承しました。Python の既存のコードとの互換性を高めるには、PyVISA パッケージなどを使用して何らかの方法で翻訳する必要があります。私は本当にそれでいくつかの助けが欲しいです!

だから、私がこれまで取り組んできたことは、基本的なことです。

これから、識別コマンドを使用して、デバイスの ID を正しく取得できます。

では、次の MATLAB を適切な PyVISA コマンドに変換する方法はありますか? 私の最大の問題は、構文を翻訳する方法が本当にわからないことです...

0 投票する
1 に答える
460 参照

matlab - GPIBを使用して「\r\n」文字を送信

まず、私の英語が完璧でない場合は申し訳ありません。Matlab を使用して波形を生成し、Agilent 33522A 関数発生器に送信して任意波形を生成するバイナリ ファイル (波形ポイントに基づく) を作成しています。私の問題は、自分のコンピューターで生成されたバイナリ ファイルに "\r\n" 文字が含まれており、33522a でデータをダウンロードしようとするとエラーが発生することです。EOSCharacter を変更しようとしましたが、バイナリ ファイルで \n が見つかった場所で置き換えられます。

すべてのデータが 1 行に収まるようにバイナリ ファイルを生成すると、データを送信できますが、サンプル レート、サンプル数、最大 / 最小電圧などの一部の情報がファンクション ジェネレーターによって読み取られません。

私のバイナリファイルは次のようなものです:


Line 1
Line 2
Line 3
Data:
integer value 1
intege value 2
...

EOI モード、EOS モード、EOS キャラクターで遊んでみましたが、Agilent 33522A のメモリに、複数行にデータが書き込まれたファイルを書き込むことができませんでした。データを USB スティックに入れると、各行の末尾に \r\n 文字が含まれていても、バイナリ ファイルは aparat によって正しく読み取られます。

複数の CR および LF \r\n 文字を含むバイナリ ファイルを GPIB 経由で送信する方法に関するアイデアはありますか?

0 投票する
2 に答える
8003 参照

c++ - 「const void*」から「PVOID {aka void*}」への無効な変換 [-fpermissive]

私はプログラムを作成しています (まあ... Tektronix のサンプル コードを使用して) ラボのスペクトル アナライザへのネットワークを介したメッセージ交換をテストしています。

「decl-32.h」というヘッダー ファイルが提供されており、サンプル コードには次の行と、生成されるエラーが含まれています。

ibwrt(GpibDevice, "SYSTem:ERRor:ALL?", strlen("SYSTem:ERRor:ALL?"));

「'const void*' から 'PVOID {aka void*}' への無効な変換 [-fpermissive]」

ヘッダー ファイル内で、次のコード行がエラーとして強調表示され、次のエラーが表示されます。

extern int __stdcall ibwrt (int ud, PVOID buf, long cnt);

「'int ibwrt(int, PVOID, long int)' [-fpermissive] の引数 2 を初期化しています」

問題は、私がそのような複雑な変数の定義、使用、および変換に慣れていないことです。

どなたか親切にアドバイスをいただけないでしょうか。これは、そのような変数の型や変換などに慣れていない他の多くの人に関係があると確信しています.

前もって感謝します!

0 投票する
1 に答える
330 参照

c++ - Linux でパイプ/fifo の反対側から読み取ろうとする試みを検出する

Linux用のC / C ++で一種のデーモン/サービスを実装することを考えています。これは、シェルを介して(linux-gpibライブラリを使用して)特定のgpibデバイスと通信します。アイデアは、デーモンがすべての既存のデバイスをスキャンし、各デバイスのファイル/パイプ/dev/gpib#-*(*指定された gpib バス上のアドレス) を作成するというものです。のような使い方になります/dev/com#。次に、コマンドラインに次のように入力できます。

echo "*IDN?" > /dev/gpib1-12

どちらが「*IDN?」を送信しますか? ボード 1 のデバイス 12 に文字列を接続します。これまでのところ、問題はありません...

問題は、デバイスからデータを取得したいときに始まります。類推的に機能させたいので、

cat /dev/gpib1-12

デバイスが言うべきことを書き出すでしょう...しかし、デバイスに送信したどのコマンドがデバイスに文字列(値)を返させ、どれが返させないのかわかりません。だから私のオプションは次のとおりです。

  1. デバイスに応答するものがあるかどうかを繰り返しチェック ( while-loop ) し、後で対応するパイプに送信します。
    -また-
  2. /dev/gpib#-*クライアント プログラムがパイプからの読み取りを試みる場合にのみ、デバイスにクエリを実行します。これは、「シグナル」と「待機」を通じて提供する必要があります。

明らかな理由 (パフォーマンスおよび/またはレイテンシーのハンディキャップ) により、ソリューション1を実装したくありません。他のことを行う方法はわかりませんが...オールマイティなLinuxで実装できるはずだと思いますが、どうすればよいでしょうか? 私はこれを読みましたが、関数のいくつかのスピンはselect()正しい方法だと思いますが、私の問題にそれを使用する方法がわかりません。私もこれに出くわしました。そこでは、男が似たようなことを行う方法を説明していますが、非常に異なっています(コードmosfet.c)。

問題は、パイプ/FIFO/ファイルの反対側から信号、待機、または割り込みを介して読み取ろうとする試みをすぐに検出して対応するにはどうすればよいかということです。

答えてくれてありがとう。



PS: ここは朝の 7 時半です(また眠れぬ夜です) 。 (ファイル I/O を介して個々のデバイスにアクセスする) ことは、linux-gpib ライブラリを介して可能であると尋ねています。お知らせください。linux-gpib のドキュメントと src を読みましたが、何も役に立ちませんでした。linux-gpib ライブラリが提供するものはすべて、C、Python などへのバインディングです。
PPS:パイプを使用する他の方法はありますか?

0 投票する
1 に答える
866 参照

python - Anritsu PyVISA の問題

Anritsu MG69377B マイクロ波発生器との通信に問題があります。

リモートモードに入って測定器を識別することに問題はありませんが、値を返す他のコマンドはタイムアウトになり、測定器は書き込みコマンドに応答するようです。PyVISAを使用して計測器と通信しています。

*STB? は標準の IEEE コマンドであり、標準に従うすべての機器 (基本的にはすべて) で動作するはずです。私はマニュアルを見てきましたが、他のコードの構文にも問題があるようには見えません。PyVISA を使用してリモートで接続すると、計測器が機能しないようです。(これが PyVISA の問題なのか、それとも私の機器の問題なのかは不明です)。

0 投票する
2 に答える
1090 参照

python - PyVISA にないメソッド

Win 7 x64、NI 488.2、PyVISA 1.5、および numpy/scipy/ipython を使用した python を実行しています。GPIB-USB 接続を介してケースレー機器に接続し、簡単なコマンドを送信しようとしています。しかし、インストゥルメント オブジェクトを作成しようとすると、PyVISA の ResourceManager には、インストゥルメントの検索、読み取り、書き込みに必要なメソッドが欠落していることがわかりました。

PyVISA のページのサンプル コードに従うと、現在、次のようになっています。

get_instrument が存在しないというエラーを返します。タブ補完を使用して、リソース マネージャー rm から利用できるものを確認します。rm.init、rm.close、およびその他のいくつかのみを含む、必要なすべてのメソッドが実質的に不足していることを明らかにしています。これらはすべて何もしないか、4099L を返します。rm 自体を呼び出そうとすると、文字列 'ResourceManager()' が出力されます。

さらに調べてみると、visa.VisaLibrary() がどこにも見つからず、問題はインストールの失敗であることが示唆されます。ただし、(pip を使用して) パッケージ全体を再ダウンロードして再インストールすると、ファイルが見つからないという問題が解決しません。Visa モジュール自体は正常に読み込まれますが、重要なファイルのほとんどが欠落しています。インストールを台無しにしていますか、それとも何か他のことが起こっていますか?