06-21-2016 10:01 PM
こんにちは。
シリアル通信で複数の計測器を、複数のVIから制御したいと思っています。
各VIで指定する計測器はその都度変わる運用を考えています。
ここで、既に通信中のCOMポートを指定してVIを実行した場合にエラーが発生するようにしたいと考えています。
例えばUSB-シリアル変換機でCOM1が使用できる状況とします。
サンプルプログラムの「連続シリアル書き込み読み取り」でCOM1を指定しVIを実行した状態で、COM1をMAXの「VISAテストパネルを開く」をクリックすると、以下のエラーが発生します。
Error opening resource:
ASRL1::INSTR
VISA: (Hex 0xBFFF0072) リソースは有効ですが、現在VISAはアクセスできません。
逆も同じで、MAXでCOM1のVISAテストパネルを開いた状態で「連続シリアル書き込み読み取り」を実行すると同様のエラーが発生します。
ただ、「連続シリアル書き込み読み取り」を別名で保存し、2つのVIとした場合、それぞれCOM1ポートを指定して実行してもエラーが発生しません。
エラーを発生させるにはどうすればよいでしょうか?
宜しくお願いします。
06-22-2016 10:42 AM
こんにちは。
VISAのパレットを開くと「VISA Lock Async.vi」というものがあります。
実機がないのでテストできませんが、VISAのリソースに対してアクセス制限をかけられる様なので試してみてください。
06-22-2016 02:36 PM
「連続シリアル書き込み読み取り」VI内でVISA関数を使用する際、VISA Open, VISA Closeを使われていますか?
06-23-2016 05:57 AM
コメントありがとうございます。残念ながら意図した動作になりませんでした。
06-23-2016 05:58 AM
MAXでVISAテストパネルを開いていると、VIでVISA Openを使用しなくてもエラーが発生します。