Hands-On Introduction to LabVIEW for Scientists and Engineers

ケースストラクチャ / ケースに応じて制御器、表示器のキャプションを変化させる

制御器、表示器のラベルは実行中は変化させることができないので、ラベル表示をオフにしてキャプション表示をオンにしたうえでキャプションのテキストをプロパティノードで設定する。 Temperature_Scale_Converter_Runtime_Captioning.vi - Google ドライブ

ケースストラクチャ / 簡単な四則演算 / ゼロ除算をしたときだけ何かで知らせる

Simple_Calculator.vi - Google ドライブ

ケースストラクチャ / ステートマシン / オシロの最後のトレースをスプレッドシートに保存できるようにする

ケースストラクチャ / ステートマシン / オシロの実行中にサンプリングの設定が変更できるようにする -の改造 DigitalOscilloscope_StateMachine_SpreadSheet.vi - Google ドライブ Read DataステートとStopステートとの間にStore Dataステートを挟み込む。

ケースストラクチャ / 1~30までの整数のうち3、4、5のいずれかで割り切れる整数を探す

Multiples_of_3_4_5.vi - Google ドライブ

7セグLEDによるカウンター

ケースストラクチャの課題であるがケースストラクチャを使う必要はないようである。 Seven_Segment_Counter.vi - Google ドライブ

ケースストラクチャ / ステートマシンの練習(DO IT YOURSELF, p.386)

条件: 5つのLEDを順番に0.2秒ずつ点灯する。 停止ボタンを押したら、5つ目のLEDまで点灯したところでVIが停止する。 ステートマシンを使う。 例1: Five_Blinking_Lights.vi - Google ドライブ 例2: Five_Blinking_Lights2.vi - Google ドライブ

ケースストラクチャ / ステートマシン / オシロの実行中にサンプリングの設定が変更できるようにする

DigitalOscilloscope_StateMachine.vi - Google ドライブ

ケースストラクチャ / ステートマシンを作る / 数当てゲーム

GuessingGame.vi - Google ドライブ ―――――――――――――――――――――――――― Pythonで同じことをしてみる。 import random GenerateInteger, EnterGuess, CheckGuess, GiveHint, ReportSuccess = range(5) answer, guess, state = None, None, None def handle_Generate…

ケースストラクチャ / シフトレジスタと組み合わせてステートマシンを作る

状態遷移はシフトレジスタで行う。 ケースごとに処理を記述する。 複数あるステート名には列挙体を使うのが便利。

ケースストラクチャを試す

if文とswitch文とを兼ねたようなストラクチャである。 ここでは下のケースストラクチャを試す。 セレクターにブール制御器を配線したケースストラクチャ。VIの実行中に波形チャートをクリアする。True時の処理とFalse時の処理とをひとつずつ記述する。 セレ…

シフトレジスタを使う / 正弦波で矩形波を合成する

正弦波をいくつか合成して矩形波を近似する -では第3項まで合成したが、今回は任意の項まで合成できるようにする。 Sum_of_Sines.vi - Google ドライブ ここまででChapter 8 Shift Registersがおおむね終わり。

シフトレジスタを使う / 現在も含めて過去n回分の移動平均を計算する

シフトレジスタを使う / 現在も含めて過去9回分の移動平均を計算する -では事前に決めておいた回数だけ移動平均を計算したが今度は任意の回数だけ移動平均が計算できるようにする。 移動平均の回数を過去1回から過去144回までの間で変化させているようすを示…

シフトレジスタを使う / 現在も含めて過去9回分の移動平均を計算する

Moving_Average_9_traces.vi - Google ドライブ このVIは9回分の平均をとるので、純粋な信号成分は9倍されたのちに9で割られ、純粋なノイズ成分はsqrt(9)倍されたのちに9で割られる。結局SN比は元の3倍になる。 今、元の信号のSN比は1であり、その信号の9回…

ランダムノイズの乗った正弦波を描く / [正弦パターン.vi] (Sine Pattern.vi)と[ガウスホワイトノイズ.vi] (Gaussian White Noise.vi)とを使う

NoisySine_UnitySNR.vi - Google ドライブ あとでサブVIとして使うのでコネクターを割り当てておく。 [Sine Pattern.vi]、[Gaussian White Noise.vi]の[サンプル]はサンプル数のこと。 [Std Deviation and Variance.vi]の[加重 (サンプル)]はいわゆる「n-1法…

シフトレジスタを使う / 何かを再帰的に計算する / 総和、フィボナッチ数、ヴィエトの公式

shift_register_ex.vi - Google ドライブ ループするたびに右の▲の値が左の▼へ渡される。 下の「フィボナッチ数」の例のように左の▼を複数設けた場合は上から順番に値が降りてゆく。 ▼: 現在の値 ▼: 1つ前の値 ▼: 2つ前の値 ▼: 3つ前の値 ......

文字列から数字を抜き出して数値に変換する / [パターンで一致]函数(Match Pattern)と[小数/指数文字列を数値に変換]函数(Fract/Exp String To Number)とを使う

ParseAndConvertMultimeterString.vi - Google ドライブ これでChapter 7 Data Files and Character Stringsまでがだいたい終わり。

バイナリファイルから読み取る / [バイナリファイルから読み取る]函数(Read From Binary File)を使う

[バイナリファイルから読み取る]函数(Read From Binary File)を使ってバイナリファイルを読み取る。 ReadBinary.vi - Google ドライブ

何かをバイナリファイルに書き込む / [バイナリファイルに書き込む]函数(Write to Binary File)

BinaryStorage.vi - Google ドライブ [バイナリファイルに書き込む]函数(Write to Binary File)を使って何かをバイナリファイルに書き込んでみる。 先頭に行数、列数(ここでは2行3列)が記録される。

ループするたびに新規ファイルを作って何かを書き込む

multiTextFiles.vi - Google ドライブ [パス作成]函数(Build Path)を使ってパスを組み立てる。 ここではテキストを組み立てるのに[文字列にフォーマット]函数(Format Into String)を使ったが[文字列連結]函数(Concatenate Strings)、[テキスト作成.vi]も同じ…

出来合いのVIは使わずに個々の函数を組み合わせてテキストファイルを読み込む

ReadSpreadsheetByteStream.vi - Google ドライブ [テキストファイルから読み取る]函数(Read From Text File)を使う。 [テキストファイルから読み取る]函数を右クリックして[EOLを変換]を解除したのでEOLが\n (LF)ではなく \r\n (CR+LF)になっている。

取得したデータを取得したそばからファイルへ書き込む / [ファイル位置を設定]函数(Set File Position)を使う

RuntimeSpreadsheetStorage3.vi - Google ドライブ [ファイル位置を設定]函数(Set File Position)を使って、取得したデータを取得したそばからファイルへ(ここではファイルの末尾へ)書き込んでみる。 この方法だと途中でシステムがクラッシュしてもその時点…

[スプレッドシートファイルから読み込む.vi] (Read From Spreadsheet File.vi)

今度は[スプレッドシートファイルから読み込む.vi] (Read From Spreadsheet File.vi)を使って.csvファイルを読み込んでみる。 ReadSpreadsheet.vi - Google ドライブ

[文字列連結]函数(Concatenate Strings) / エスケープシーケンスを使う

SpreadsheetStorage_6.vi - Google ドライブ 文字列の入力にはエスケープシーケンスも使える。 EOLに関してはCR (\r)もLF (\n)もエスケープシーケンスで入力できるがWindows以外のプラットフォームで利用する場合を考慮して[復帰改行定数] (\r\n)を指定した…

テキストとして書き出すデータにヘッダーテキストを追加する / [文字列連結]函数(Concatenate Strings)

[文字列連結]函数(Concatenate Strings)を使う。 SpreadsheetStorage_5.vi - Google ドライブ

出来合いのVIは使わずに個々の函数を組み合わせて何かをテキストファイルに書き出す

今度は、[スプレッドシートファイルに書き込む.vi] (Write To Spreadsheet File.vi)は使わずに個々の函数を使って同じようなことをしてみる。 基本は「ファイルを開いて」→「ファイルに書き込んで」→「ファイルを閉じる」という3つのステップである。 Spread…

1次元排列を2つ組み合わせて2次元排列にしてテキストファイルに書き出す

2つの1次元排列を[配列連結追加]で1つの2次元排列にまとめる。 SpreadsheetStorage_3.vi - Google ドライブ [配列連結追加]の原文は[Build Array]

1次元データ排列をテキストファイルに書き出す / 行と列とを転置する

今度はExcelで扱いやすいよう行と列とを転置してみる。 SpreadsheetStorage_2.vi - Google ドライブ

1次元データ排列をテキストファイルに書き出す

SpreadsheetStorage.vi - Google ドライブ カンマを区切り文字(デフォルトはタブ区切り)に設定して.csvに出力してみる。このviを実行するとファイル保存用のダイアログボックスが表示されるのでそこでファイル名や保存先を指定する。

振幅の周波数特性

Chapter 6、Problem 4、p.249 周波数範囲10~2010 Hz、25 Hz刻みで振幅の周波数特性を描く。 動かない、わからない。ひとまず断念する。 Bode_Magnitude_Plot.vi - Google ドライブ [信号シミュレーション]のプロパティ: [Analog Output]のプロパティ: [Anal…

ソフトウェアタイミングによる正弦波の生成 / DAQアシスタント

myDAQのAout 0から正弦波を出力する。周波数は遅延函数とサンプルレートとで決まる。 SinWaveGenerator_Software_Timed.vi - Google ドライブ 1周期を10分割しかしていないので粗い。1刻みが10 ms、それが1周期に10回繰り返されるので1周期は10 ms × 10 = 10…