このたびExcel VBAを使用し、プログラミングを作成することになりました。
プログラム内容は、Agilent様のPSA測定機器から測定結果をExcelに表示する。という内容です。
プログラミングはほぼ初心者です。
そこで質問です。
どの様な順序でプログラムを組んでいけばよいのか詳しい方、
いませんか?
ちなみにGPIBインタフェースはNational Instruments様を使用です。
ノートPCからGPIBカードを使用する形で制御を考えています。
マニュアルはあるのですが、VB.netやC言語のサンプルが多いです。
VBAで作成するにはどの様な点を注意して読めばいいですか?
No.5ベストアンサー
- 回答日時:
ExcelのVBAを使ったGPIB制御に関しては最初の回答が全てです。
このあたりは情報が無く試行錯誤で得られるノウハウです。
これ以降の開発情報は有り余るほど公開されているので自力で行ってください。
プログラムはVB6で記述することになります。
Excelへの表示はVBAを使います。
ExcelのVBAはVB6+VBAなので入門編としてはタフです。
これらに関して数冊本を購入して熟読してください。
*RSTや*CLSは計測器固有の命令ですのでマニュアルを読んでください。
計測器のマニュアルも必須です。
また、計測システム開発はいくら習熟しても本体無しでは何も進みません。
GPIBで接続できてから、remoteになるか、resetできるかと一歩一歩コミュニケーションを確立しながら計測器を制御していくものです。
先ず本体を入手することを優先してください。
この技術は習熟すれば食っていけます。
そのためにはプログラミング言語を習得し、自分のスタイルを確立し、忘れないように定期的にプログラムを書き続けることが必要です。
計測器は、メーカーや命令は気にしないでその測定ぼ本質を理解すること。
きつい分、あなたの付加価値を高めます。
頑張ってください。
No.4
- 回答日時:
この種のシステム開発の経験者です。
以下はNI社のGPIB-USBを使ってExcelのVBAからGPIB機器を制御する場合の手順です。
(1)先ず付属のCD-ROMからGPIB-USBのドライバをdefault設定でinstallします。移植性を考えて常にdefault設定にしときます。
これでGPIB-USBをUSBに差し込むと自動認識されるようになりWindowsからGPIBが制御可能となります。
(2)ExceのVBAに標準モジュール、即ち、どこからでも呼び出せるサブルーチンとしてGPIB制御関数を組み込みます。
NI社のVB用の関数は、CD-ROMをdefaultで導入すると、
C:\Program Files\National Instruments\NI-488.2\Languages\Visual Basic
にVB用関数が入るので、この関数を以下のように読み込みます。
Excelを起動後、ツール->マクロ->VisualBasicEditor でVBEditorを開く
VBEditorで、ファイル->ファイルのインポート から上記のNationalInsturumentのFolderから
NIGLOBAL
VBIB32
の2つをインポートします。これらはVBAProjectの標準モジュールに入ります。
これでGPIBの命令が使用可能になります。
(3) VBAでプログラムを作成します。
VBAはVB6のサブセットです。Form1上にCommand1ボタンを配置した状態だと以下の
以下はコマンドボタンに命令を詰め込んだ例です。
Private Sub CommandButton1_Click()
'計測器の認識
Agilent = ildev(0, 11, 0, T2s, 1, &H140A) 'AgilentのGPIBアドレスを11としてます
'初期化
wtbuf$ = "*RST": ilwrt Agilent, wtbuf$, Len(wtbuf$)
wtbuf$ = "*CLS": ilwrt Agilent, wtbuf$, Len(wtbuf$)
というように命令を送ります
上記の形式でデータ転送命令を送って計測器からデータを読み込む場合は
rdbuf$ = Space(100): ilrd Agilent, rdbuf$, 100
でrdbuf$に文字列として読み込めます。
計測器の認識は1回実行すればよいのでVB6だとForm1_Loadに設定してますが、ExcelのVBAのFormにはLoadが無いので、計測器認識を行うボタンと測定ボタンを分けたほうが良いでしょう。
ちなみに、この例でのはGPIBの番号を格納したローカル変数で、このサブルーチンのみ有効です。ボタンで認識と測定を分ける場合、グローバル変数にしておいてください。
この場合、プログラムの先頭、サブルーチンの外に
Dim Agilent As Integer
と記述すると、認識ボタンで変数Agilentにカード番号が書き込まれ測定ボタンのGPIB制御命令で使えます。
読み込んだ文字列はheaderのような余分な情報が添付されているので必要な情報のみtrimやmid関数で切り出します。
これをファイルに書き込むか、ExcelのCellに表示することになります。この辺は市販本にも多く記述されているので自分で苦労してください。
(4)計測器の制御ではタイマーがないと不便なので以下からフリーのタイマーのactivexを組み込めます。
http://kasayan86.hp.infoseek.co.jp/html/activex. …
これはVB6のタイマー関数と同じように使えます。
健闘を祈ります。
解答ありがとうございます。
いくつか質問があるのですが、
まずGPIBカードを使用しリモート制御をかけたいのですが、
そちらに関しましてはどういったプログラムを組めばよろしいでしょうか
(2)に関しまして。
ドライバ等のインストールは個人ではインストールさせていただけない状況になっておりまして、ひとまずプログラムを先に組もうと思っているのですが、ドライバをインストールしてからのほうがよろしいでしょうか?
(3)に関しまして。
(1)*RSTや、*CLSににはどの様な意味合いがあるのですか?
(2)Dimで宣言するのはAgilentのみでよろしいのでしょうか。
アドレスなどの宣言も必要でしょうか?
(3)データを読み込んだあとは、どの様な処理でCellに表示させればよろしいでしょうか?
今のところは以上です、よろしくお願いいたします。
No.3
- 回答日時:
PCにはGPIBインターフェースが搭載されていませんので、使用予定のNI製GPIBインターフェースはUSBやPCI Expressなどのインターフェース変換を行っているはずです。
上記の場合は必ずメーカからドライバとAPIが提供されます。ActiveXやDLLファイルで提供されていれば、VBAなどの言語に関係なく、APIを呼び出してGPIBを制御できるはずです。
おそらく、ハンドシェーク等の低水準部分は覆い隠されたAPIになっているはずで、「送信」、「受信」などの関数を呼び出すだけでGPIB通信処理ができるのではないでしょうか?
構築手順は、
・メーカが提供するAPIを理解する。
・GPIBの基本的な事項(アドレスやデリミタなど)を理解する。
・制御対象機器の制御方法(取説にコマンド等の説明があります)を理解する。
・(VBAなどで)プログラム
となると思います。
上記と異なり、easyGPIBというVBAでの制御を目的としたフリーのツールもあります。Webで検索すると、ダウンロードや使用方法がわかると思います。
知人の話では、これが一番簡単な方式となるそうです。ただし、easyGPIBはすべてのGPIBインターフェースに対応しているわけではありませんので、もしこのツールを使用するつもりであれば、対応しているインターフェースを調べて、選定する必要があります。
しばらくこれず、お礼が遅れましてすみません。
>使用予定のNI製GPIBインターフェースはUSBやPCI Expressなどのインターフェース変換を行っているはずです
そうですね。PCMCIAのカードを使用しています。
会社で作成なのでフリーツールが使用できない状態ですのでeasyGPIBというツールは使用できない状態です。
解答ありがとうございました。
参考にさせていただきます。
No.2
- 回答日時:
理念が高いのはよいことですが、通信というのは相手があるものであり、その相手が用意している手順に従って通信するようにソフトを作らなければダメです。
とにかく、まずは測定機器の説明書を良く読んで、通信手順を完全に理解してください。そこをちゃんと押さえておかないと、ソフト制作はできません。質問者さんが頑張って高度なハンドシェークを実装したのに、肝心の測定機器が用意している手順が垂れ流しだけだったら、これはシャレになりませんよね。GPIB制御の専用のVBA言語というのは存在しませんが、VBAでGPIBを簡単に利用できるようにするActiveXコントロールだったらあるでしょう。ただそれは、GPIBインターフェースの製品次第(そのメーカーが用意するもの)ですから、それは何とも言えません。APIだけ提供するから、後は何とかしてねって言う可能性もありますし。そもそもVBAっていうのは、ExcelやWordを制御するものであり、それにGPIB専用機能を求めることは本来なら筋違いでしょう。
No.1
- 回答日時:
基本的に通信系の話になると思います。
なので、プログラムする上で次の二点は必須事項でしょう。これは、測定機器の説明書に書かれているはずなので、そちらをよく確認してください。1)測定機器とのやりとりにはどういうコマンドを使うか
2)ハンドシェークが必要か
ハンドシェークというのは、データをやりとりする時の手順みたいなものです。いきなりデータを投げて後は知らん顔、という無責任な方法(俗に言う垂れ流し)もありますが、そうではなくて、「これからデータを送りたいが準備は良いか」と相手に尋ね、「準備OK」という返事をもらってから送るような方法がハンドシェークです。これも厳密なやり方だけではなく、いきなりデータを投げつけるが、相手からエラー応答が返ってきたら再送する、という簡易な方法もあります。どういうやり方でデータを授受するのか、それがわからないとソフトは組めないので、ここの確認は重要です。
VBAから制御する場合は、ドライバが用意しているAPIを呼び出すか、ActiveXコントロールが提供されているなら、それをフォームに貼り付けることになります。これに関しては、ネットにもいろいろ情報が落ちていますし、あるいは参考書もたくさんあるので、それで調べた方が良いでしょう。実際に使っているところを見た方が解りやすいはずです。
ActiveXをVBAから使う例の解説
http://www.sigoto.co.jp/excel/activex/actmenu01. …
APIの場合
http://www.ne.jp/asahi/hishidama/home/tech/excel …
回答ありがとうございます。
出来るならばハンドシェーク法でプログラミングを組みたいです。
こちらにするとやはり難しくなるのでしょうか?
GPIB制御の専用のVBA言語とかってあるのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) Accessフォームからパラメーターで表示したレコードを指定のExcelのセルへ転送する方法について 2 2022/08/22 18:04
- Visual Basic(VBA) VBA アドインについて お詳しい方 ご教授をお願いします。 相談事項 現在以下の対応を実施した所、 1 2022/11/02 16:53
- Excel(エクセル) エクセル バーコード作成で他のシートを参照するには? 2 2023/05/03 16:57
- その他(プログラミング・Web制作) プログラムの勉強のおすすめは 7 2022/12/09 20:09
- Visual Basic(VBA) VBAでArrayListを使う為の「mscorlib.tlb」の参照設定について 3 2022/03/23 19:45
- 英語 会社で英語を使うことになっての英語の勉強方法 5 2022/07/03 11:49
- Visual Basic(VBA) ChatGPTに作らせたい Excel VBA 1 2023/04/05 19:56
- Visual Basic(VBA) Vba UserFormを前面に出す方法を教えてください 1 2023/08/17 11:08
- Excel(エクセル) 【Excelの集計について質問です。】 7 2022/12/03 16:51
- Visual Basic(VBA) VBAコードを張り付け後のエクセルの進め方 2 2023/02/07 18:24
このQ&Aを見た人はこんなQ&Aも見ています
-
カンパ〜イ!←最初の1杯目、なに頼む?
飲み会で最初に頼む1杯、自由に頼むとしたら何を頼みますか? 最初はビールという縛りは無しにして、好きなものを飲むとしたら何を飲みたいですか。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
土曜の昼、学校帰りの昼メシの思い出
週休2日が当たり前の今では懐かしい思い出ですが、昔は土曜日も午前中まで学校や会社がある「半ドン」で、いつもよりちょっと早く家に帰って食べる昼ご飯が、なんだかちょっと特別に感じたものです。
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
14歳の自分に衝撃の事実を告げてください
タイムマシンで14歳の自分のところに現れた未来のあなた。 衝撃的な事実を告げて自分に驚かせるとしたら何を告げますか?
-
exeファイルの中身を見ることは可能ですか?
フリーソフト
-
GPIBとRS232Cの違いについて
その他(パソコン・スマホ・電化製品)
-
エクセル VBA でのCOMポート認識
その他(プログラミング・Web制作)
-
-
4
VBAを使用して、USBでつないだ機器の制御が出来るでしょうか?
Access(アクセス)
-
5
エクセルの散布図のX軸に文字を表示したいのですが、どうしたらよいのでしょうか?
Excel(エクセル)
-
6
GPIB ソフトウェア・シミュレータについて
工学
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・【大喜利】【投稿~11/22】このサンタクロースは偽物だと気付いた理由とは?
- ・お風呂の温度、何℃にしてますか?
- ・とっておきの「まかない飯」を教えて下さい!
- ・2024年のうちにやっておきたいこと、ここで宣言しませんか?
- ・いけず言葉しりとり
- ・土曜の昼、学校帰りの昼メシの思い出
- ・忘れられない激○○料理
- ・あなたにとってのゴールデンタイムはいつですか?
- ・とっておきの「夜食」教えて下さい
- ・これまでで一番「情けなかったとき」はいつですか?
- ・プリン+醤油=ウニみたいな組み合わせメニューを教えて!
- ・タイムマシーンがあったら、過去と未来どちらに行く?
- ・遅刻の「言い訳」選手権
- ・好きな和訳タイトルを教えてください
- ・うちのカレーにはこれが入ってる!って食材ありますか?
- ・おすすめのモーニング・朝食メニューを教えて!
- ・「覚え間違い」を教えてください!
- ・とっておきの手土産を教えて
- ・「平成」を感じるもの
- ・秘密基地、どこに作った?
- ・【お題】NEW演歌
- ・カンパ〜イ!←最初の1杯目、なに頼む?
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
GPIB制御
-
マルチTIFを一枚のTIFに...
-
アプリのプログラムを見るには...
-
バッチファイルでUSB挿入時に実行
-
例外アプリケーションエラーを...
-
Bluestacks内でダウンロードし...
-
機械語とバイオスの関係と歴史
-
TeraPadの拡張子関連付けについて
-
iTunesがノートンにブロックさ...
-
InstallShield ってプログラム...
-
C言語 ループ 詳細ver.
-
C、C++、C#のソースが見...
-
【CASLプログラム】 定数(80と...
-
65536は2の何乗なのでしょうか?
-
0除算して、落ちるプログラムと...
-
排他的論理和 BCC(水平パリテ...
-
あるプログラムのコマンドライ...
-
正しい五十音順について
-
C++ で、「)」が必要 というエ...
-
CASLIIで三角形の面積を求めた...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Bluestacks内でダウンロードし...
-
アプリのプログラムを見るには...
-
GPIB制御
-
バッチファイルでUSB挿入時に実行
-
インテル マネジメント エンジ...
-
みつも郎でエラーが出るのですが…
-
マルチTIFを一枚のTIFに...
-
積算ソフトのプログラムを作り...
-
例外アプリケーションエラーを...
-
InstallShield ってプログラム...
-
brotherのマシニングセンタとP...
-
BIOS.binをバイナリエディタで...
-
「フラグをたてる」とは?
-
自分の声が遅れて聞こえてくる...
-
再配布できないファイルの作製
-
iTunesがノートンにブロックさ...
-
MpcStarのアンインストール
-
プログラム言語はどうやって勉...
-
acrobat reader dc が正常に起...
-
C言語学習用のフリーソフト
おすすめ情報