NI製品ディスカッション

キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 

複数のフォルダを監視する

解決済み
解決策を見る

manakaと申します。

 

表題の件で悩んでおります。

1つのフォルダを監視することは、「File System Watcher Example」で実現できたのですが、

2つのフォルダ(仮にAとBとする)を常に監視し、Aにファイルが入ったらAのケースを実行し、Bにファイルが入ったらBのケースを実行するという仕組みが作れません。

 

また、同時に入った場合も見逃さないように順に処理できるようにしたいのですが、、

どなたかお力お貸しください。

よろしくお願いいたします。

0 件の賞賛
メッセージ1/9
5,083件の閲覧回数

こんにちは

 

「File System Watcher Example」を使用して、2つのフォルダを監視したいとのことですが

 

以下のVIスニペットにありますように

While loop2つ並列に使用し、中にイベントストラクチャを配置することで

ひとまずはご希望の動作を実装できるかと思います。

 

ただし、イベントストラクチャとケースストラクチャ内に

記述される処理を一つのWhile loopに含めると

フォルダにファイルを入れてから、処理が発生するまでの時間が

非常に長くなってしまう恐れがありますので

 キューを利用した生産者/消費者ループデザインパターンを使うのも一つの方法かと思います。以下参考のリンク(英語)です。

 

Application Design Patterns: Producer/Consumer - National Instruments

https://www.ni.com/en/support/documentation/supplemental/21/producer-consumer-architecture-in-labvie...

 

 

ぜひお試しいただければと思います。

0 件の賞賛
メッセージ2/9
5,037件の閲覧回数

tombo1111様

 

ご返信ありがとうございます。

 そして質問がございます。

 

初心者の為、初歩的な質問で恐縮なのですが、

 並列Whileループについて、ChangeTypeのTrue信号は、1回出力されると

ブールが付きっぱなしになりますが、これは何が起きているということなのでしょうか?

 

動作させたいケースが膨大なため、第3のループに受け渡そうとしているのですが、

永遠にTRUEが出力されて困っています。

 

お時間あります時に教えて頂けたらと思います。よろしくお願いいたします。

0 件の賞賛
メッセージ3/9
4,978件の閲覧回数
解決策
トピック作成者manakaが受理

こんにちは

 

実際に現在作成されているプログラムを確認していないため

不具合を正確に把握することはできませんが

おそらくイベントストラクチャが入っているWhileループの中でさらに複雑な処理を行っているため

(ケースストラクチャの中にループが入っている?)、ループが回らずブールが消灯しないのではないかと推察されます。

 

こちらの問題を解消する一つの方法として前回ご案内した

キューを利用した生産者/消費者ループデザインパターンを使用すると良いかと思います。

今簡単にこちらのパターンを、以前ご紹介したサンプルの一つ目のループに追加したプログラムを作りましたので、参考までにご覧ください。

添付画像はブロックダイアグラムにドラッグすると、編集/実行できるプログラムとして配置されます。

 

また併せてキューの基本的な使い方を学ぶ上でこういった動画も参考になるかと思います。

 

脱初心者シリーズベストプラクティス - 05: Queue - YouTube

https://www.youtube.com/watch?v=WDg4bU69UhU

 

ではVIの作成、頑張ってください!

 

メッセージ4/9
4,947件の閲覧回数

tombo1111様

 

ご返信ありがとうございます。

ケースストラクチャの中にはループはいれておりません(何かでそれはだめと拝見したことがありました)

原因はまだわからないのですが、キューで解決する方がよさそうですね。。

初心者なもので、ネットで調べただけではキューが理解できず困っておりました。

 

動画を拝見したのですが、大変わかりやすく助かります!!教えて頂きありがとうございます。

 

そしてサンプルVIもありがとうございます。

ですが、2016は見れません。お手数ですが2015版でも保存していただけないでしょうか?

 

よろしくお願いいたします。

0 件の賞賛
メッセージ5/9
4,924件の閲覧回数

manaka様

 

キューの動画がお役に立ちましたようで何よりです。

ケースストラクチャの中でWhile loop等を使用していないのであれば

比較的簡単にキューを使用しての処理が行えるかと思います。

 

キューを使用したサンプルVIをバージョン 15.0用に保存いたしましたので

添付いたします。こちらのVI単体には実行に必要な関連するVIが含まれていないため、

実際に使用される際は「File System Watcher Example」プロジェクト上で「File System Watcher Example」を添付のサンプルのVIに置き換えて頂く、もしくは添付VIを参考に既存のVIを編集頂ければ良いかと存じます。

 

参考になりましたら幸いです。

 

 

 

 

0 件の賞賛
メッセージ6/9
4,899件の閲覧回数

tombo1111様

 

添付いただいたデータですが、このVIのバージョンは16.0ですとでてしまい、拝見できませんでした。お忙しいところすみませんが、もう一度お願いできますでしょうか。

0 件の賞賛
メッセージ7/9
4,873件の閲覧回数

manaka様

 

再度ファイルが開けなかったとのことで大変失礼致しました。

添付のファイルに関しては

私のPC上のLabVIEW 15.0で使用できる事を確認しましたので

ご確認頂ければと思います。

 

参考になりましたら幸いです。

 

0 件の賞賛
メッセージ8/9
4,864件の閲覧回数

tombo1111様

 

ファイル開くことが出来ました!

丁寧に教えて頂き大変感謝しております。

こちらで勉強させていただきます。ありがとうございました。

 

0 件の賞賛
メッセージ9/9
4,854件の閲覧回数