04-18-2018 10:43 AM
お世話おになっております。
Labviewを使用し始め2週間になる者です。このたびは添付しました画像のプログラムにて、60秒毎にプログラムを繰り返したいのですが、やり方がわからず質問致しました。
ネットなどで調べたところwhileループと待機のタイマを組み合わせて実行可能とありましたが、その通りに行っても、60秒おきに繰り返しを行ってくれません。
どのようにプログラムを描けばよいのか質問させていただきました。
経験者の方々ご助言のほどよろしくお願いいたします。
解決済! 解決策の投稿を見る。
04-19-2018 12:26 AM
お世話になっております。
フォーラムへの積極的なご投稿ありがとうございます。
「60秒毎にプログラムを繰り返したい」、とは「音楽を鳴らす→60秒音なしで待機」を繰り返したいという理解でよろしいでしょうか。
音を鳴らすという点ではLabVIEWに入っているサンプルが参考になるかと思います。
LabVIEWウィンドウの上カラム「ファイル(F)...」の並びより
ヘルプ(H)
>サンプルを検索(E)
>左タブより「参照」でなく「検索」を選ぶ
>キーワード入力「サウンド」
とするとサウンドに関するサンプルが複数出てまいります。
今回のですと「サウンドファイルからの出力」が参考になるかと思うのでご覧になってみたらいかがでしょうか。
大豆様の開発を応援しております。
04-19-2018 02:04 AM
R Kasai様
ご助言ありがとうございます。
こちらからの説明不足で申し訳ありません。
今回行いたい事は、計測ファイルから60秒毎にデータを読取を行いためこのプログラムを作成致しました。
ネットを見てみますと、Whileループに待機のタイマーを置いて60秒毎に繰り返し動作をプログラムしたいと考えております。
音を鳴らす所は無事に慣らす事に成功したのですが、上記の部分で、要はプログラム全体では動作せずにこの度質問をさせて頂きました。
諸先輩方でご存じの方がおられましたら、ご助言頂けませんでしょうか。
大豆
04-19-2018 09:17 AM
当方のバージョンの問題でviそのものは開けませんが、絵のダイアグラムでいくつか気になるところはあります。
(1) Wait関数に5000が入っていますがこれは「5秒」を意味します。60秒ごとに実施したいけどここが「5秒待機」なのは、メインの音を鳴らすところが55秒くらいかかる予定だからこうしてみたのでしょうか?
(2) 次に、Wait関数で5秒待っていても、それは音を鳴らすメイン動作と「並行で」処理されてしまいます。音を鳴らす動作が20秒だとすると20秒かかっているうちにWaitは済んでしまい、音を鳴らす動作は連続的になります。(例えば、1つのループの中に、5秒Waitと10秒Waitを両方置いてもループは15秒ではなく10秒で回ります。これは両方が並行動作するため)
逆に、音を鳴らす動作が5秒未満なら、5秒Waitのほうがループを律速しますが、とりあえず5秒ごとであって60秒にはなりません(Waitはきっちり5秒は待つので、厳密にはループ処理時間がわずかに加算され「5秒+α(αは小さい)」ごとになります)。
とりあえず音を鳴らす動作自体が何秒かかるのかは不明ですが(60秒ごとに、ということで、音を鳴らす動作は60秒より短い前提で書きますが)、少なくともWait関数につないだ5000は、60000(60秒)の方が良いでしょう。
その上で、ループ周期をきっちり60秒にしたい場合は、Wait関数よりも下図の右側のアイコンを使った方が良いです。
この右側のアイコンは「次のミリ秒単位まで待つ」なので、60000にしておくと、内部タイマが60000で割り切れるミリ秒になると待機が終わりますので、ループ内の他の動作が60秒未満で終わるならループはきっちり60秒ごとに回ります。この関数はWaitのような微小な蓄積は起こらないので、ループの周期を規定したい時は右側のアイコンを使いますが、最初の1回だけはループに入るタイミングが適当なため間隔は不定で、2回目からきっちり60秒になります。
もし1回目の間隔不定を嫌う場合は、ほんのわずか周期が60秒より伸びる前提で、左のWait関数で60000でも良いかと思います。
04-19-2018 09:18 PM