LabVIEW ::パート1

ご挨拶、同僚。 私が提案する記事があなたの好みに合っていて、それが開くサイクルが聴衆を見つけることを願っています。 トピックに関する他の出版物もありますが、部分的にはあなた次第ですので、資料の関連性と品質についてコメントで積極的に話すようお願いします。



データフロー+ G = LabVIEW



labviewのforviewループ

少し前に専門分野を変更しました。 それは、別のプログラミング言語への移行やタスクの異なる領域に焦点を当てただけでなく、私が従った非常に具体的なパラダイムシフトでもありました。 1年前、データフローとビジュアルプログラミングの世界に飛び込みました。 この開発ツールのブランチの最も印象的で強力な代表者は、LabVIEW(National Instruments)です。 残念ながら、このトピックに関するHabréに関する情報は事実上ないため、このギャップを埋めようとします。



私はその資料を完全に説明するふりをするわけではありません。教科書を書くつもりはありません-それらは十分にあります。 私が自分で設定した主なタスクは、LabVIEWの概念と、この環境でソフトウェアを作成するためのいくつかの技術をカバーすることです。 おそらくこれは、誰かが開発ツールを最適に選択するのに役立ち、誰かが彼らを新しい方法で自分の分野の問題を解決するようにプッシュするでしょう。 最後に、単に視野を広げることは有用です。







さて、少し休止して、LabVIEWについての唯一の投稿をご紹介します。LabVIEWは、Habréにまだ掲載されています。 私の同僚は悲しいかな、このトピックについてはもはや自分自身を見せなかったので、バトンを取ります。 彼の出版物を読んだ後、あなたが私のものに戻り、私たちが続けることを願っています...



* * *



この出版物では、LabVIEWで最も簡単なマシンを実装する方法について簡単に説明します。 私は自動プログラミングとは何かについては説明しませんが、画像はもっと言うでしょう。 よく考え抜かれたマシンの状態図により、開発者にとってコードが便利になり、プログラムが安定します。 しかし、最初は少し余談です。 LabVIEWのいくつかのポイントを明確にします。



トンネルとシフトレジスタ。



labviewのforviewループ



そのため、ループの左側には、値がゼロになったスカラー変数があります。 Nに5を付加すると、ループに5回の繰り返し、つまり i = 0..4。



ループ内の変数は、トンネル経由またはシフトレジスタ経由の2つの異なる方法で開始します。 少し後で、これらのオプションの違いがわかります。 上位3つの「ワイヤ」はサイクルを通過するだけですが、出力は異なります。 最初の一番上の出力には自動インデックスが付いているため、出力はゼロではなく、5つのゼロの配列になります。 2番目の出力では、入力と同じゼロが得られます。 3番目の出力であるswdigレジスタもゼロになります。 ただし、単純なトンネルと違いはないようです。



サイクルの中で追加ノードに巻き上げられる「配線」を見てみましょう。 変数iを追加します。 反復回数あり。



出力は何になりますか? ゼロ(ループの外側で巻き上げられる変数)を合計するため、4番目の出力(自動インデックス付き)に配列[0,1,2,3,4]が表示されます。 論理的です。 5回目はどうなりますか? 最後の値i。 トンネルには自動インデックス付けがなく、書き換え中です。



そして最後の出口はどうですか? しかし、10があります。(0 + 1 + 2 +3 +4)なぜですか? 入力のシフトレジスタはサイクルの次の反復に出力の前の値を渡し、最初の反復でのみ-入力に適用した外部ゼロを渡すため。



ご覧ください。



フロントパネル



挑戦する



それでは、タスクに直行してみましょう。 着信TCP / IP接続を待機し、クライアントにデータを送信し、切断して元のモードに戻るプログラムを作成する必要があるとします。



このサービスを実装するアプリケーションの図は次のとおりです。



チャート



次に、ソースコードを見てみましょう。



メインプログラムのループは次のようになります。



メインwhileループ



メイン構造のケースは、オートマトンの状態を決定します:init、listen、say、quit。



次に、小さなネストされたケース(接続エラーの処理と終了ボタンのクリックの処理)の詳細を示します。











メイン構造の残りのケース:















プログラムを開始し、 telnet localhost 10000に接続して、コンソールに「hello、world!」と表示します。 その後、接続が切断されます。



乾燥残渣



ビジュアルプログラミングの主な機能の1つ-コードは本当に視覚的で美しいことができます! 一方、それは簡単に麺に変わる可能性があります、結局のところ、我々はデータフロー配線を扱っています。 ただし、LabVIEWには、コードの可読性を向上させることができる多くのツール(キュー、ローカル、グローバル、ネットワーク変数、制御プロパティなど)があります。 確かに、データフローのイデオロギーを損ないます。 私が言えることは、ユーザーインターフェイスイベントを監視するための特別な構造さえあります。 OOPがあります! また、LabVIEW 2009では、データフローに適合しない再帰もあります。 ただし、LabVIEWは、開発ツールを選択する際に念頭に置く価値があります。



PSバージョン8.6以降、LabVIEWは自動プログラミング用の特別なツールを導入しました。 これまでのところ、私は仕事でそれらを使用することはできませんでしたが、一見すると、それらは機械のモデルをさらに視覚的にします。 機会があります-教えます



ご清聴ありがとうございました。



10/01/2009

キヤン・パベル



All Articles