GoogleAnalytics

SyntaxHighlighter

ラベル LabVIEW の投稿を表示しています。 すべての投稿を表示
ラベル LabVIEW の投稿を表示しています。 すべての投稿を表示

2018年1月17日水曜日

“N” 曜日よりの使者

久しぶりのLabVIEWエントリですが、技術的なことはほとんどなく、ただの愚痴エントリです。

※ 2018-01-19 技術っぽい追記アリ

2015年7月29日水曜日

かれこれ15年以上LabVIEW使ってるけど数年ごとに「あれ? どうだったっけ?」と悩むのでメモしとく

内部に「Sub1.vi」をサブVIとして含む「Main1.vi」が、以下の様なディレクトリ構成で存在する。
  1. この「Sub1.vi」を、下図のように Temp 以下のサブディレクトリに移動した場合、
    • 「Main1.vi」を開く時にサブVIの再サーチがおこなわれ、
    • 自動的に「Sub1.vi」が見つかり、
    • 「Main1.vi」は未保存状態になる

  2. 逆に、Temp 以下のサブディレクトリに「Main1.vi」を移動した場合、
    • 「Main1.vi」を開く時にサブVIの再サーチがおこなわれる
    • しかし「Sub1.vi」が見つからず、ファイルオープンダイアログが開く
    • 「Main1.vi」は未保存状態になる
以上の結果から、
  • サブVIは親VI中に絶対パスで保管されているわけではない
  • サブVIが見つからない場合のサーチパスには、自身より下位ディレクトリが含まれる
ことがわかる。


以下のように、「Main1.vi」と「Sub1.vi」が異なるディレクトリにあるとする。
この Temp1 ディレクトリをリネームしてから「Main1.vi」を開いても、サブVIの再サーチはおこなわれず、未保存状態にもならない。

しかし、 Temp1 ディレクトリ内に作成したサブディレクトリへ「Main1.vi」を移動した場合には、
    • 「Main1.vi」を開く時にサブVIの再サーチがおこなわれる
    • しかし「Sub1.vi」が見つからず、ファイルオープンダイアログが開く
    • 「Main1.vi」は未保存状態になる
この結果からは、
  • サブVIは親VI中に相対パスで保管されている
ことがわかる。

つまり、サブVIというのは、下図のような「相対パスによるリファレンス呼び出しノード」の糖衣構文である、と見做すことができる。


……寝る

2011年2月28日月曜日

[LabVIEW]『統合アーカイバ』DLLライブラリの更新と解説

一晩寝て、ちょっとすっきりしたので前回エントリでアップした『統合アーカイバ』DLL用ライブラリの更新と解説を少しだけ。

[LabVIEW]俺のLabVIEWがZIPしか圧縮できないわけがない

またこのタイトルですw

以前のエントリで、「『統合アーカイバプロジェクト』プラグインDLLをLabVIEWから使って圧縮が出来るようにするLLBを書く予定は現在のところありませんw」とかホザいてましたが、仕事が手持ち無沙汰だったのでちょっと書いてみました。

…まぁ、ちょっと、というにはかなり手間かかったんスけどねw

ダウンロードと愚痴は続きから

2011年2月22日火曜日

[LabVIEW]LabVIEWからDLLを遅延バインディングで利用する

前々回前回の「LabVIEWからSusie plugin DLLを利用する」では、DLL関数に『ライブラリ関数呼び出しノード』を使ってアクセスしていました。このノードの【ダイアグラムでパスを指定】オプションを使うことで、異なるDLLにある関数を実行時に呼び分けることが可能となっていました。

ただし、これはどのDLLでも関数名・引数列が同じだから出来ていたわけで、要するに『ライブラリ関数呼び出しノード』は事前バインディングなわけです。

世の中に存在するプラグインとして機能するDLLが、全てSusie pluginのように「同じ関数名・同じ引数列」ならば良かったんですが、そんなには甘くありませんw

例えば、様々な形式の圧縮・解凍処理をプラグインDLLとして共通化されたAPIから利用しよう、という『統合アーカイバプロジェクト』ってのがあるんですが、このプラグインDLLでは、各機能を持つ関数の引数列は同じですが、関数名が「DLL固有名+機能共通名」とDLL関数によって異なっています。
これだと、LabVIEWの 『ライブラリ関数呼び出しノード』による事前バインディングでは、簡単には対応できません。

というわけで、どうにかならんもんか、と色々調査してみました。

2011年2月20日日曜日

[LabVIEW]俺のLabVIEWがこんなに対応圧縮形式が少ないわけがない

というわけで(どういうわけだw)、前回「気が向いたら実装します」としていたSusie pluginの書庫ファイル解凍に対応しました。

2011年2月13日日曜日

[LabVIEW] Susie pluginを使う

LabVIEWって、、、対応画像ファイルフォーマット、少なくないッスか?

デフォで「BMPJPEGPNG」、Vision開発モジュール入れても「JPEG2000TIFF」、、、こんだけってw

著名なとこだと「GIF」が読めません(昔は特許絡みの問題を避けるためだったんでしょうが…もう切れてるしなぁ)。

「GIF」だけ読めればイイってんなら、ココで紹介されてるようなライブラリを使う、ってのもアリですが、
読みたいフォーマット全てに対して、ローダを一から書くのは、いくら『車輪の再発明大好きっコ』な私でも勘弁願いたいところですw

こういう場合、我々日本人なら、グラフィックビューワ「Susie」に対応した「plugin」を使うのが常道ですね。
ココとかに、色んなフォーマットに対応したpluginへのリンクが貼られています。


というわけで、LabVIEWから「Susie plugin」を使ってみたいと思います。

2011年2月8日火曜日

[LabVIEW]DirectShowLib_for_LabVIEWのNTSCキャプチャへの対応

以前に紹介した「DirectShowLib_for_LabVIEW」ですが、『PC-SDVD/U2G』のようなNTSCキャプチャーデバイスに対応させるため、一部変更を行いました(ダウンロードは本エントリからどうぞ)。

DS_PrepareFromCameraName.viを、手作業でフィルターピンを繋ぐやり方から、ICaptureGraphBuilder2::RenderStreamメソッドを使うやり方に変更しました。
これにより、NTSCキャプチャーデバイスからの映像処理に必要なクロスバー用フィルタの作成が自動で行われるようになっています。

デジカメ『GE C1033』からのライブビューを『PC-SDVD/U2G』でキャプチャーし、それをLLB同梱のDemo_CameraSnap.viで取り込んだときの様子です。


これで応用範囲が広がりんぐですねw

2011年2月1日火曜日

[LabVIEW]DirectShowNET LibraryをLabVIEWから使うライブラリ

一連のエントリの総まとめとして、DirectShowNET LibraryをLabVIEWから利用するためのサブVIをLLBにまとめました。
ダウンロードと解説は続きから…

2011年1月28日金曜日

[LabVIEW]NI-IMAQを使わないでUSB接続Webカメラを使う - 修正編

前回のエントリで最後に作った、Webカメラから静止画をキャプチャするVIですが、
自動でレンダーさせると環境によっては、サンプルグラバーに正しくピンが接続されないことがありました。

というわけで修正編として、ピンを明示的に接続させたものを簡単な解説とともに挙げておきます。

[LabVIEW]NI-IMAQを使わないでUSB接続Webカメラを使う

以前のエントリで、

> さて、次回はUSB接続Webカメラのプレビュー表示です
> …といきたいところですが、そろそろ仕事がヤバげなので、
> どうなるか不明ですw

とか書いてたんですが、しばらく放置ってのもモヤモヤするので、
とりあえずサクっとやってみました。



2011年1月27日木曜日

[LabVIEW]NI-IMAQを使わないで動画再生&静止画キャプチャ その3

前回のエントリでは、[IBasicVideo.GetCurrentImage()]メソッドによるキャプチャでしたが、
今回は[SampleGrabber]フィルタによるキャプチャを行ってみます。

[LabVIEW]NI-IMAQを使わないで動画再生&静止画キャプチャ その2

前回のエントリでは、LabVIEWフロントパネル内で動画を再生しました。

では、ここから静止画キャプチャを行ってみましょう。

DirectShowでの静止画キャプチャには、
  1. [IBasicVideo.GetCurrentImage()]メソッドによるキャプチャ
  2. [SampleGrabber]フィルタによるキャプチャ
の2種類がありますが、今回は

・ [IBasicVideo.GetCurrentImage()]メソッドによるキャプチャ

の実装を行ってみます。

[LabVIEW]NI-IMAQを使わないで動画再生&静止画キャプチャ その1

前回のエントリで、

> 『YOU、LabVIEWでDirectShow直接叩いチャイなYO!』

という電波を受信したので、色々調べて勉強がてらに、先ずは

・ DirectShowを使ってLabVIEWで動画再生

から作ってみることにしました。

[LabVIEW]NI-IMAQを使わないで動画再生&静止画キャプチャ その0

私には「仕事の〆切が近づくと必要のないコードが書きたくなる」
という悪癖があります。

しかも「仕事と完全に無関係ではないけど必須ではない」という
微妙なコードが書きたくなってしまうのです。

というわけで、以降、数エントリかけて露悪してみますw

2010年11月15日月曜日

LabVIEWでスクリーンキャプチャを撮ってみた

先日、同僚から
「Windows環境で、アクティブウィンドウ以外の任意領域のヒストグラムを取るアプリってある?」
と聞かれました。

「探せばあるんじゃないの?」
「さんざん探したけど、どういうワードで検索すればイイかもわかんなかった」

用途を聞いてみると、PCにCCDカメラを接続してて、
ライブビューはカメラ付属のソフトウェアで出来るんだけど、
そのソフトにライブヒストグラム機能が付いてない、ということらしい。

そのPCには、CCDカメラで撮影した画像ファイルの解析のために、
LabVIEWがインストールされているので、
「LabVIEWから直接CCDカメラをコントロールして、
ライブビュー撮ればイイんじゃね?」

とは言ったものの、なんかしっくりきません。

LabVIEWからスクリーンキャプチャを取得して、それを2Dピクチャに出来れば、
あとはどうにでも解析できるはずです。

というわけでテストしてみました。

2010年9月21日火曜日

LabVIEWでオレオレ言語処理系

LabVIEW で計測・制御するVIとか書いてると、解析手法なんかが変わるたびに、いちいちVI 書き換えるのは億劫です。

こういう場合には、「スクリプト言語によるマクロ機能」を持たせるのが常道らしいですよ、奥さん。

「あぁ、~の機能だったらマクロ書いたら簡単にできるよ」とか、言ってみたいですよねw …例えそれが同僚数人しか使わないようなアプリであってもw

とはいうものの、スクリプト言語『で』書くのは楽チンでも、スクリプト言語『(の処理系)を』書くのは面倒です。なんてったって、LabVIEW には yacc がありませんからね(lex っぽいのはある)。

でも、dllで書かれた既存の言語処理系をLabVIEWから呼び出すとか、VBScriptOCXを叩く、ってのはなんか、勝ち負けで言ったら「負け」な気がします。

で、漢らしくLabVIEW自体でスクリプト言語の処理系を作ってみました。