概要Labviewのプログラム覚書Labviewのプログラムを作った時に、悩んだ事を備忘録として記録したもの。図をブロックダイアグラムにドラッグアンドドロップすれば、プログラムを確認する1ことができる。IE10になってから、直接ドラッグアンドドロップ出来なくなった。デスクトップとかにドロップして、ファイル化した後、改めてドラッグアンドドロップすれば2良い。1NIのサイトでは何でサンプルにスニペット使わないんだろう?2FireFoxとかChromeとかも同様にする必要がある。[top]いろいろ接続LabViewのデータの型チェックは結構厳しくて、合っていないとすぐに配線の接続が切れる。データ型がいろいろありすぎて、良く分からん状態。DAQの信号出力DAQのボード等の複数の出力データは、ダイナミックデータという奴になっているが、これから、一部のデータを取り出すのに、結構苦労したので。別解として、配列の指標で取り出す方法は「ダイナミックデータから変換」というモジュールを使うのがミソかな。Graphのために、ダイナミックデータってやつを、クラスタにするだけのことでかなり悩んだ。要は、配列をダイナミックデータに変換してから、信号を結合で1つにすれば良い。DAQのデジタル出力DAQのボードで、COMBOボックスからデジタル出力しようとしたら、接続できない。結局、以下のように2回変換したら接続できた。一度、ダイナミックデータに変換してから戻してるので、ちょっと冗長な感じがする。本当はもっと簡単な方法があるのかもしれないけど、まぁ出来たから良いや。[top]ファイル操作カレントパス現在のVIのパスから、VIの名前を除けばカレントパスが求められるが、exe化した場合、exeファイル名がパスとして付加されるので、さらに削る必要がある。この例はNIのサイトにあったもの。これぐらい、やってくれれば良いのに。再度、保存ボタンをONにした場合も、またダイアログが表示される表形式の文字列を配列にExcel等の表をコピーした文字列から、配列を作るこの例では配列を指標を使って、2つに分けているダイナミックデータを分岐するだけでも、2つに分けることができるこの方が、簡単かな。最初に1回だけ実行このVIを実行すると、1回だけ処理が実行される。NIのサイトに、例があったので、ちょっとマネして作ってみた。確かに、1回だけ実行出来るんだけど、起動時のみ1回実行するだけこれだと、起動シーケンスを別に書いて、ワイヤで繋いだ方が簡単じゃないかな。最初に1回だけ実行を、ちょっと改造して、ボタンを押した時に、シフトレジスタの値を初期化するようにしてみた。起動時には実行しないように、シフトレジスタの初期値はFalseにした。ついでに連続実行も出来るようにしてみた。これで一応は動くんだけど。良い方法はないのかなぁ。順番に実行するだけならば、データフローが簡単1回実行の別案(パネルの変化で動く)「フロントパネルアクティビティを待機」を置いて、ボタンの状態の変化で1回だけ実行させるようにした。この方法は簡単で良いんだけど、ボタンがONになる時も、OFFになる時も両方とも動くので、変な感じそれに、スクロールバーを動かすだけでも動いてしまうので、これはちょっとマズイ。別の制御器があれば、それでも動いてしまうだろう。1回実行の改良案ボタンの機械的動作を「押されたらラッチ」にすれば、自然な感じになるが、2回づつ動いてしまうそれで、ケースストラクチャで実行ボタンがONの時だけ実行するようにした。シフトレジスタとカウントアップの回路は、実行回数の確認のために入れたもので、実際は不要。実は、「フロントパネルアクティビティを待機」が無くても、良いのかもしれない。[top]その他コメントブロックダイアグラムに、コメントを書くには、フリーラベルを使う場所が分かりづらい→プログラミング→ストラクチャ→装飾体→フリーラベルちょっと地味な感じだ。コメントを派手にしても仕方がないけど。後から気がついたけど、単に空きスペースでダブルクリックしても、フリーラベルを入れることが出来る。作成→VIクラスのメソッド→デフォルト値→現在の設定をデフォルト設定にするで、インボークノードを生成このVIのリファレンスをインボークノードのリファレンスに接続することで、メソッドを実行できるまた、エラーワイヤを接続して、データフローにより初期化後にループが実行されるようにしたリファレンスというのは、ポインタとかハンドルのようなものインボークノードというのは、クラスのメソッドを実行するプロパティノードは、クラスのプロパティを参照・設定できるリファレンスで、変数を初期化リファレンスやローカル変数を使って、デフォルト値に初期化というのも出来るんだけど、VIスニペットにすると、リファレンスが切れてしまう。保存2のリファレンスと入れ替えれば動くけど。スニペットは便利なんだけど、いろいろ問題もあるのかもしれないなぁ。記述方法がわからなくて、結構悩んだ。分かってしまえば、なんてこと無いんだけど。こんな行列演算を記述する場合、まず、横方向を纏めてから、縦方向を纏めれば良いみたい掛け算のアイコンが判りづらい。こちらを参考にしてエラーキャンセルしようとしたが、エラー処理がVI内部にあるので、VI内部にこの記述を付け加えた。エラーは出なくなったんだけど、そのまま保存したらオリジナルのVIが変更されてしまったっぽい。これはちょっとまずいのかなぁ。別のPCにインストールするとエラーDAQmxを使ったデータ入出力プログラムを、別のPCにインストールするとエラーになる。DAQmxアシスタントを一旦削除して、新規作成して設定し直せば治るんだけど、面倒だ。これと同じエラーだと思う。Explorer)で、表示→更新すれば良いらしい。overflowUSB-6251を使った測定。多めのサンプル数にすると、時々このエラーになる(2〜30回に1回ぐらい?)記録しとかなかったので、エラーメッセージはうろ覚え一度、エラーになるとLabViewを再起動しても、次回からは必ずこのエラーになってしまう。結果としては、それ以降エラーが発生していない。そんなに回数は試していないが、対策になっている様だ。