コマンドプロンプトに値を返すLabVIEWプログラムを作る

その他

スポンサーリンク

この記事では、コマンドプロンプトから呼び出してコマンドプロンプトに値を返すことができるLabVIEWを作る方法を紹介しています。

ユーザーの使い方によってはコマンドプロンプトでアプリケーションを起動するのが都合がよく、その結果を使用したいという場合もあるかと思います。

この機能を実装する手間を大きく軽減してくれるVIパッケージを使用する方法を解説します。

スポンサーリンク

コマンドプロンプトへ値を返すとは

本記事で紹介する、コマンドプロンプトへ値を返す、とは、何らかのプログラムをコマンドプロンプトから呼び出して実行し、その結果をコマンドプロンプトへ返すような処理のことです。

LabVIEWで作成したプログラムに対して引数を与え、その引数をLabVIEW側で読み取って指示を行うのは特別難しいことではないのですが、その後にコマンドプロンプトへ値を返すのは通常インストールされている関数で直接そのような操作ができるものはありません。

引数の与え方については、LabVIEWのツールバーのヘルプから「サンプルを検索」で開けるNIサンプルファインダにサンプルがあります。

以下の図の、コマンドラインパラメータを渡す、のサンプルがそれにあたります。

フロントパネルに表示されている指示通りに、サンプルを実行後に文字列表示器に表示される文字列をコマンドプロンプトに貼り付けて実行することで、特定のVIを実行することができます。

ですが、次の章で紹介するVIパッケージを使用すると、以下の図のように値を返すことができます。

対象となるプログラムは、viでもexeでもできます。

ただし、プログラムを呼び出した後に、さらにコマンドプロンプトからプログラムに何か値を渡すということはなく、あくまでLabVIEW側から一方通行でコマンドプロンプトに値を渡すことになります。

ツールキットの準備

今回使用するのは、G CLIというVIパッケージで、VIパッケージマネージャからインストールしていきます。

パッケージのインストールにはVIパッケージマネージャを使用します。

これを入手するために使用するVIパッケージマネージャは、よく似た名前のNIパッケージマネージャが「NI製のソフトウェアを管理するためのツール」であるのに対して、「LabVIEWで使用できるツールキットを管理するためのツール」です。

LabVIEWをインストールしたら知らない間にインストールされていた、という方もいるかと思いますが、なかったとしてもNIパッケージマネージャからインストールすることができます。

この、LabVIEWで使用できるツールというのは無償あるいは有償で使えるものがありますが、今回紹介しているG CLIは無償になっているようです(ライセンスの入力など求められていないことから判断しています)。

インストールの手順は単純で、VIパッケージマネージャを開いて、G CLIを検索して指示通りにインストールするだけです。

項目を選択して、使用したいLabVIEWのバージョンを選択し、Installをクリックします。

途中表示される項目も基本的にデフォルト設定のまま先に進めます。

もしインストールの途中で以下の図のようなエラーが出た場合には、インストールは行われず終了します。

こんなときにはLabVIEW側で設定が必要です。

エラーが出た場合の対応方法としては、LabVIEWのメニューバーのツールを開いてオプションを選択し、VIサーバカテゴリにて「マシンアクセス」と「エクスポートVI」の二つにアスタリスクを追加します。

無事インストールが進むと、最後に項目のインストール許可の画面が出たら完了です。

インストールが済んだらこれで終わり、というわけではなく、ひと手間加えます。

VIパッケージをインストーすると、G CLIというアプリケーションも一緒にインストールされるので、これを環境変数として設定します。

G CLIがインストールされていることを確認後、Windows上で「システム環境変数の編集」という項目を検索(コントロールパネルにあります)して、設定していきます。

環境変数として、以下の図のようにg-cli.exeの入っているパス(私の場合C:\Program Files\G-CLI\binフォルダでした)を指定します。

これで準備は完了です。

正しく準備ができているかを確認するためのコマンドとして、以下のコマンドをコマンドプロンプトで入力します(入力の際のディレクトリはどこでもいいようです)。

g-cli –lv-ver <使用するlabviewのバージョン> echo — one two three

これを実行した結果、one two threeという文字が返ってきていたらとりあえずg-cliの設定ができていると言えそうです。

また、関数パレット上に専用の関数が見えるかも確認しておきます。

基本的な使い方

このVIパッケージの使い方はGitHubから飛べる資料があります。

なのでより詳しい説明はこの資料を見てください。

Installation - G-CLI Documentation

ここでは、ひとまず基本的な使い方として、VIパッケージインストール時に一緒に入手できるサンプルプログラムの機能を紹介します。

コマンドプロンプトから値(引数)を受け取り、コマンドプロンプトに値を返す、という動作だけであれば、このサンプルのプログラムだけでできます。

サンプルは、C:\Program Files (x86)\National Instruments\<LabVIEW version>\examples\Wiresmith Technology\G CLIのフォルダで見つけられます(32 bitのLabVIEWの場合)。

このサンプルを使用する場合、コマンドプロンプトには、

g-cli –lv-ver 2020 “C:\Program Files (x86)\National Instruments\<LabVIEW version>\examples\Wiresmith Technology\G CLI\CLI Demo.vi” — <引数>

と入力します。(最初の方にある2020とは使用するLabVIEWのバージョンです)

こうすることで、上記サンプルプログラムが開いて実行中状態となるので、「Send ~~」と書かれたブールボタンを押してコマンドプロンプトに値を渡せているか確認してみてください。

ブロックダイアグラムを見ると、いくつかの専用の関数が使用されているのが確認できます。

ただ、何となく意味は分かるかなと思います。

最初にstartと書かれたアイコンの関数を配置し、その後は鉛筆マークのアイコンでコマンドプロンプトに値を書き込んで、終わったら閉じる、という流れになっています。

なお、LabVIEWプログラム自体は実行状態である必要はありますが別にでかでかと表示させておく必要はないので、例えばVIのフロントパネルウィンドウを最小化状態にして自動的に何か処理が走るようなプログラムとして動作させることもできます。

なお、私が試したところ、どうやら呼び出すviのパスに日本語が入っているとうまくコマンドプロンプトとLabVIEWプログラムが通信できないようです。

ちなみに、G CLIの関数について、操作を終了するとき用のExitの関数は二つあります。

何がどう違うの?ということで実験してみました。

結果としては、Exit with Error Cluster Code.viを使用した場合、この関数にエラー情報が渡されると、コマンドプロンプトにそのエラー情報が表示されるようになります。

表示例は以下の図をみてみてください。

エラーの情報をユーザーに知らせる必要があるか、で使い分けができそうです。

裏で実行させる場合

使い方によっては、LabVIEWのフロントパネルを開く必要はなく、何かしらの処理を行ってその結果だけを知りたい(コマンドプロンプトに表示させたい)ということもあるかと思います。

上で紹介した、フロントパネルの表示を最小化するという方法も一つですが、やり方は他にもあります。

例えば、コマンドプロンプトから実行する際に引数としてあるファイル名を渡し、そのファイルの中身に対して特定の処理を行って別のファイルに保存するというプログラムを実行、この「別のファイル」のパスをコマンドプロンプトに表示させる、という場合を考えます。

この場合、VIプロパティの設定で、実行中はフロントパネルの透明度を100%にしておいたり、プログラム実行後にフロントパネルを閉じるようにプログラムをしておきます。

また、呼び出すプログラムは、VIプロパティの実行カテゴリで「開かれたら実行」にチェックをいれておきます(サンプルもこうなっています)。

以下は、コマンドプロンプトから引数としてファイル名を与えることで、そのファイルの中身を読み取って適当に処理し新たなファイルを作成、処理が終わったらその新しく作成されたファイルの場所をコマンドプロンプトに返すプログラムの例です。

これはviでもいいのですが、今回はEXEにビルドして試しました。

実際にコマンドプロンプトからEXEを呼び出したときの結果例が以下の図です。

本記事では、コマンドプロンプトから呼び出してコマンドプロンプトに値を返すことができるLabVIEWを作る方法を紹介しました。

コマンドプロンプトによって各プログラムを動かす方が操作が早かったり手間が少ないという場合もあるかと思うので、そのような場合に参考になればうれしいです。

ここまで読んでいただきありがとうございました。

コメント

タイトルとURLをコピーしました