Visual Basicによる測定器の制御方法

このQ&Aのポイント
  • GP-IBを通じてPCから測定器の制御を行えるように、Visual Basicで制御プログラムを作成する方法について教えてください。
  • 測定データの取得方法が分からず困っています。マニュアルを参考にしながらプログラムを書いていますが、初心者のためわかりにくいです。
  • 測定器はAgilentの4192B(RFインピーダンス/マテリアルアナライザ)で、VBは6.0を使用しています。データはスカラデータですが複素形式で、測定器内のデータが格納された配列からPCにデータを移す作業です。
回答を見る
  • ベストアンサー

Visual Basicによる測定器の制御について

質問させて頂きます。 GP-IBを通じてPCから測定器の制御を行えるように、 Visual Basicで制御プログラムを作っています。 測定器のマニュアルを参考にしながらプログラムを書いているのですが、 測定データの取得をどのように行えば良いのか分からず困っています。 マニュアルではHP BASICを使用する前提で書かれており、こちらについては知識がなく、またVBの方も初心者で、教本も初歩的なものしかなくどなたかアドバイス頂けたら幸いです。 測定器はAgilentの4192B(RFインピーダンス/マテリアルアナライザ)で、 VBは6.0を使用しています。 データはスカラデータですが複素形式で、 測定器内のデータが格納された配列からPCにデータを移す、という作業です。 マニュアルには次のように書かれています。 DIM DAT(1:201,1:2) OUTPUT @HP4291 ; "TRAC? DTR" ENTER @ HP4291 ; Dat(*) (1)複素データを読み出すためにNOP×2の配列を定義 (2)データトレース配列を問い合わせる (3)TRAC?により複素形式でスカラ・データが出力される 以上の作業をVBで行えるようにはどのようにしたらよろしいでしょうか。よろしくお願いいたします。

  • hal29
  • お礼率88% (15/17)

質問者が選んだベストアンサー

  • ベストアンサー
noname#227064
noname#227064
回答No.1

私はAgilentの4192Bを扱ったことがないのですが、少し気になりましたので回答します。 (測定器は4291B RFインピーダンス/マテリアル・アナライザの間違いでしょうか?) 何が気になったかといいますと、何故、HP BASICを使わないのかということです。 HP BASICがないのでしょうか? メーカーの用意した環境を使わないということは、ご自分で一からハードウェアにアクセスするプログラムを組まなければならなくなります。 件の測定器がどうPCとつながれているのかは知りませんが、例えばケーブルでつながれている場合なら、どのピンが何の信号を伝えているかがわかっていますか? そういうハードウェアの情報がないと、あなたの望むようなことはできないでしょう。 「じゃあ、そういう情報があればプログラムを組めるのか?」と問われると私にはできないので、申し訳ないのですが……

hal29
質問者

お礼

アドバイスありがとうございます。 測定器は4291Bの間違いですね、失礼しました。 ご指摘の通り、HP BASICが手元にありません。 測定器とPCはGP-IBケーブルで繋げており、PCから測定器へアクセスすることはできます。 HP BASICでのプログラム文をVBで書き直すことが出来さえすればよいのですが…。

関連するQ&A

  • GPIB制御

    このたびExcel VBAを使用し、プログラミングを作成することになりました。 プログラム内容は、Agilent様のPSA測定機器から測定結果をExcelに表示する。という内容です。 プログラミングはほぼ初心者です。 そこで質問です。 どの様な順序でプログラムを組んでいけばよいのか詳しい方、 いませんか? ちなみにGPIBインタフェースはNational Instruments様を使用です。 ノートPCからGPIBカードを使用する形で制御を考えています。 マニュアルはあるのですが、VB.netやC言語のサンプルが多いです。 VBAで作成するにはどの様な点を注意して読めばいいですか?

  • Visual C++をつかったGPIBのプログラム

    GPIB初心者です。プログラムもあまり詳しくありません。 Visual C++をつかって、Agilentのスキャナ(34970A)をGPIBで測定制御したいと思っています(用途:温度測定)。以下、私の環境です。 ・OS: Windows XP Professional version Service Pack 2002 ・開発環境: Visual C++ ・GPIBハードウェア: PCMCIA-GPIB (National Instrument, NI488.2) ・測定機器: スキャナ(Agilent、34970A) ・組みたいプログラム:温度測定 中身; 「数十秒間隔で電圧を読み込む」→「電圧値を変換式に代入し、温度に変換」→「グラフ化」 電圧を読み込めるとこまでいければ後は問題ないのですが、いたっていません。どうすればGPIBの信号を読み書きできるでしょうか。できれば高いソフトなどは購入せず、済ませたいと思っています。 質問がまとまっておらず、すみません。何かヒントをいただけたら助かります。 *1;GPIBカードのドライバはインストールできたと思います *2;AgilentのBenchlink Data logger 3というフリーソフトを使って、34970Aの電圧を数十秒間隔で読み込む、ということはできました。電圧を複雑な変換式に代入し別の値で出力する、という機能は提供されていませんでした。

  • Visual Basic 2005でRS-232Cを用いて機器を制御する際のエラーについて

    現在,ディジタルマルチメータをPCで制御するため,PCとディジタルマルチメータをRS-232Cケーブルで接続し,Visual Basic 2005を用いて制御しようとプログラムを作成しています. 以前は,Visual Basic 6.0で制御していたのですが,今後の為を考え,2005へ移行することにしました. そこで,VB6のプログラムと同様の設定を用いて,同じ命令をマルチメータ側に送信しようとするのですが,マルチメータ側で命令を受信した後に,マルチメータがエラーを出してしまいます. 全ての命令に対してエラーを出すのではなく,マルチメータ側から返信を伴う命令に対してのみエラーが出るようです. 環境は,PC:Windows XP (Home),マルチメータ:Agilent 34401Aです. 以下がソースの一部です. [VB6] With SerialPort .CommPort = 4 .Settings = "9600,n,8,1" .Handshaking = comNone .RThreshold = 1 .SThreshold = 1 .InputLen = 0 .PortOpen = True End With SerialPort.Output = ":SYST:REM" & vbCrLf 'マルチメータをリモートにする SerialPort.Output = "MEAS:VOLT:DC? 10V,0.003V" & vbCrLf '直流電圧を測定 [VB2005] With SerialPort .PortName = "COM4" .BaudRate = 9600 .DataBits = 8 .Parity = IO.Ports.Parity.None .Handshake = IO.Ports.Handshake.None .Open() End With SerialPort.WriteLine("SYST:REM" & vbCrLf) 'マルチメータをリモートにする(エラーは出ない) SerialPort.WriteLine("MEAS:VOLT:DC? 10V, 0.003V" & vbCrLf) '直流電圧を測定(エラーが出る) 原因などが分かれば,教えてください. よろしくお願いします.

  • VB6.0 テキストデータの受け取り

    VB初心者です。 VB6.0を使用しています。 Agilentのスペアナからのトレースデータをテキストで、"RecvData1"という文字列に受け取らせたいと考えています。 下記のように記述したのですが、RecvData1にテキストデータをうまく受け渡すことができません。 どこを改善すればよろしいでしょうか。 Dim RecvData1 As String stats = viVPrintf(vi, "TRAC:DATA? TRACE1" + Chr$(10), 0) stats = viVScanf(vi, RecvData1, 0) viVScanfの定義 ↓ Public Declare Function viVScanf Lib "VISA32.DLL" Alias "#272" (ByVal vi As Long, ByVal readFmt As String, params As Any) As Long なお、「stats = viVPrintf(vi, "TRAC:DATA? TRACE1" + Chr$(10), 0)」の部分のコマンドが測定機に正しく送られていることは確認済みです。 やりたいことをVisa Assistantを使用して行った場合のC言語の記述と結果 ↓ -------------------------------------------------------------------- viPrintf(vi,"TRAC:DATA? TRACE1\n"); char buf[32768]; int bufLength = sizeof(buf); ViScanf(vi,"%#t", &bufLength, buf); buf[] = {"-28.986280,-30.730440,-44.042957,-68.885155,-80.233..... bufLength = 5071; --------------------------------------------------------------------

  • 構造体の定義の仕方

    こんにちわ。 初心者質問で申し訳ないのですが。 VB.net2005で質問があります。どなたか お判りになる方いらっしゃいましたら 教えてもらえないでしょうか? 内容としてはタイトルにある構造体なのですが どのように書けばよいのか分からず、ご質問させてもらってます。 最終的には St(0).name = "名前A" St(0).dat(0) = "XXXXX" St(0).dat(1) = "YYYYY" St(1).name = "名前B" St(1).dat(0) = "AAAAA" St(1).dat(1) = "BBBBB" のようなデータ代入をループでまわしたいのです。 色々探してみたのですが構造体を配列にし、その中にさらに 配列にするサンプルが見当たらなく… 分かる方いらっしゃいましたら、ご教授ください。

  • クリスタルレポートについて

    VB.NETで作成していて、SQLから抽出したデータをグローバル配列変数に持っています この内部配列に持っているデータをクリスタルレポートに印刷するにはどのようにすれば可能でしょうか? それとクリスタルレポートの作成方法や進め方マニュアルやお勧めWebサイトなんてのはあるのでしょうか? 初めてなのでヘルプをみても使い方が判りづらいので よろしくお願い致します

  • ServletからJSPへのデータの受け渡し

    サーブレットにてDBから取得したデータをJSP側に受け渡しをしたいのですが、いろいろと本を読んだり、ネットで情報を調べたりしているのですが、配列データを受け渡す方法が良くわかりません。 どなたか、ココに説明されているHPがある!や、こうすればよいなどのアドバイスをいただければ幸いです。 自分で調べてみたところ以下のところまでは作ったのですが、この後がわからなくなってしまいました。 Servlet側 Enumeration enu_dat = vector.elements(); request.setAttribute("enu_dat", enu_dat); JSP側 session = request.getSession(true); Enumeration data_dat = (Enumeration request.getAttribute("enu_dat"); JSP側で受け取ったとき data_datは「null」 enu_datは「java.util.Vector$1@a2bd15」 のようになっています。

    • ベストアンサー
    • Java
  • VBでの画面間のデータの引渡し

    VBのソート関連で何度か質問をしましたが、今抱えている画面でいろいろな制約があり、困っています。 (1) 画面間のデータの転送にDLLを使用する。 (2) データの転送時、データをソートをかける。 (3) ソートの元と先がGrid形式になっているので   ソートすべきエリアが配列の形式になっている。 (4) 配列のエリアを使用するが構造体でない形式になっている。 変な条件ですが、どのような方法をとれば、負荷がすくないDLLを作成できるでしょうか?よろしくお願いします。

  • WEBのメッセージプロトコルフォーマット

    インターネットで、パソコンからサーバーに送られるデータフォーマットですが、FTP、HTTP、メールなどなど、それぞれどのような形式で 詳細データは送られていますか? 詳しい方お願いします。あるいは、マニュアルを紹介してください。 メールならメール本文とヘッダーその前後に続くフィールドさらに制御フィールドなどです。その形式をお願いします。

  • datファイルとidxファイルで

    お世話になってます。 VB.NET2005 + mdb(2000形式) で作りこんでいるのですが、データ量が多いためか単純なSQL文でもレスポンスが遅いのです。 発行するSQL文自体はシンプルなものばかりなのでmdbではなくdatファイルとidxファイルで自前のDBを作り高速化を図ろうと考えています。 datファイルとidxファイルでやり取りをするサンプルや勉強できるサイトなど、ご存知でしたら紹介して頂けませんでしょうか。