2017-04-06 25 views
0

私は基本的な.NETプロジェクト以外のものはかなり新しくなっていますが、現在GPIB、USBなどのさまざまなメディアでSCPIを使って通信するT &M計測器で使用するテストシステムを作成しようとしています。Keysight IOライブラリインストールされ、VISA.NETのヘルプドキュメントがその中にあります。どのIVIリファレンスを使用しますか?

私のプログラムはVISAベンダーに中立(可能な限り)であることを願っており、Ivi.Visaインターフェイス経由でのみ実装を使用することに固執しました。私は、次の擬似コードのような楽器なものとの通信を符号化することを考えていました:

//Access implementation only via IVI interfaces to keep things vendor neutral 
using Ivi.Visa; 
// Get a session from the manager 
var Session = (IGpibSession)GlobalResourceManager.Open(Alias, AccessMode, Timeout); 
// Use the formatted IO interface of the session 
var io = Session.FormattedIO; 

// Some communication operations 
// UserCommand is some faux type object 
io.PrintfAndFlush("%s", UserCommand.ToString); 
if (UserCommand.Query) 
    io.Scanf("%s", out UserCommand.Result); 

// Doesn't seem to be any Close method on resource manager, session or interface? 
Session.DiscardEvents(EventType.AllEnabled); 
Session.Dispose(); 

私はちょうど私が以前、私は他のドキュメントで見たCOMの例では、主に高齢の使用に言及することを考えながら、COMの例であることが指摘しました依然として参照される(例えば、Sending SCPI/GPIB commands over USB from C#)。

さらにVisual Studio Reference Managerを調べると、VISA COMタイプライブラリだけでなく、計測器固有のIVIアセンブリ(例:IVI Scope Assembly)や同様のCOMタイプライブラリ(IviScope 3.0タイプライブラリ)。

私はこれらのすべてが何であるか、そして私が使用するはずのものと使用しないものとによって、やや困惑しています!

これらは何のためですか?私は、それらの違いは何ですか?なぜ、私は他のものを使うのでしょうか? (たぶんどこかの差異や一般的なユースケースを簡潔に説明するソースがあるでしょうか?)

+0

なぜダウン票とクローズ票ですか? – Toby

答えて

3

ここに背景情報があります。結局、あなたの質問に直接答える最新の情報を私があなたに与えることはできないと思います。あなたはさまざまなレベルからあなたの機器と通信することができ

  1. 低レベルI/O
  2. VISA
  3. ベンダーが提供するIVIドライバ
  4. クラスIVIドライバ

さまざまなレベルは、下位レベルのコンポーネントの存在に依存する場合があり、特定のレベルの下位レベルにアクセスできるようになる場合があります特徴。

低レベルのI/Oドライバは、オペレーティングシステムまたはI/Oハードウェアの製造元が提供しています。 USBTMCとGPIBは例です。

VISAはI/Oドライバを抽象化し、一般的なコードを特定のインストールのI/Oハードウェアから独立させることができます。 I/Oリソース機能の検出を可能にするので、必要に応じてRS-232ライン終端検出や低レベルGPIB機能など、特別な操作を行うブランチを持つことができます。送信するデータは、機器のコマンド言語(SCPIなど)と一致する必要があります。

IVIドライバは、計測器のドメイン固有の機能を提供するライブラリです。ドライバは、そのコマンド言語を使用して計測器と対話するため、コードを記述する必要はありません。これはパススルー機能を提供するので、ライブラリがカバーしていない機能に対して、機器のコマンド言語を使用して読み書きすることができます。 IVIドライバは通信にVISAを使用することがあり(通常は行います)、特定のVISAベンダーが必要になることがあります(通常はそうしません)。

IVIクラスドライバは、DMMや信号発生器などの1つのクラスの計測器に共通のドメイン固有の機能を提供するライブラリです。これにより、プログラムコードは計測器のベンダーから独立しています。クラスドライバでは、クラスに準拠したベンダ提供のIVIドライバをインストールする必要があります。

VISAの実装は、Visual Basic(および他のほとんどの.NET言語)で使用できるCOMまたは共有ライブラリ(関数のエクスポート)のいずれかです。最近の経験はありませんが、数年前のAgilentとNIの間、AgilentのCOMインターフェイス、NIの共有ライブラリインターフェイスなどがありました。

+0

おかげでトムは、多くの助けになりました! – Toby