• Tidak ada hasil yang ditemukan

LabVIEW 定数配列参考プログラム

N/A
N/A
Protected

Academic year: 2024

Membagikan "LabVIEW 定数配列参考プログラム"

Copied!
7
0
0

Teks penuh

(1)

LabVIEW 定数配列参考プログラム

(最終改訂 2017/12/08)

LED_scroll.zipの内容

LabVIEWの VI 実行時に必要なデータが外部のファイル中に存在するとき、ファイルパスを直接指

定してプロンプト無しに読込み、外部データであることを意識することなく実行することは可能である。

ただし、この場合は必要なファイルと当該VI のパスの相対位置関係を(ソースを修正しない限りは)

維持する必要があり、必要データをLabVIEWのVIソース中に定数として保持できるならば定数化し ておく方がソフトウェアの管理上有用である。

LED_scroll.zipにはこの例題として、電光掲示板を模したLED_scroll.vi(ソースVI、実行ファイル)

および LED_scroll.vi で使用するフォント情報をファイルから取込み定数化するtabulator.vi(ソース

VIのみ)のLabVIEW2013版とLabVIEW7.1版(ファイル名に_LV71が付く)が含まれている。実行 ファイルを開く場合には同名の設定ファイル(拡張子.ini)を同じフォルダに置く。

1. tabulator.vi

LabVIEWでは、ソースVI(実行ファイルでは不可)を実行後フロントパネルの表示器に表示される

(配列では隠れている要素を含む)内容を停止時にそのままブロックダイアグラムにドラグ&ドロップ してデータ型、配列次元等が表示器と同じプロパティを持つ定数として配置することができる。

tabulator.viは、下記のURLからダウンロードした8×14フォントファイルを読込んでフォント情報

をLED_scroll.viで使用する形式でフロントパネルの表示器(ラベル”pattern”、キャプション”14x256

font array”)に表示するVIである。

http://ftp.bue.de/MTGR/Extras/Fonts/8x14/

(2)

前記URLの8×14フォントファイルはASCII256文字セットのパタンを横8縦14のドットで表現

した 3584B のファイルで、文字データ中の最初(アドレスが若い)のバイトが上端の行、バイト中の

MSBが各行左端のドットのブール値を示す。p. 1図1はBOLD.fntの先頭部分をバイナリエディタで 表示した例で、図1左はwxHexEditorによる1行14バイトの16進文字表示、図1右はTSXBINに よる1行1バイトのビット表示で、双方の黄枠内はASCIIコード0x01に対応する部分(図3左ではこ のコードを指定して切出された部分配列と8×14のドットパタンが表示されている)である。

tabulator.vi(図 2 にブロックダイアグラムを示す)では、While ループの外側でフォントファイル

を読込み、ASCII 文字コードを指定してフォント情報を切出せる様に2D配列に整形する。LabVIEW ではメモリ上の配列要素は C と同じ row-major order(LabVIEW 同様に業界標準システムである MATLABはFORTRANと同じcolumn-major orderであることに注意。p.6図8参照)で配置され、

配列のサイズは(14×256ではなく)256×14となる。このまま行指標で切出す方が処理も速いが、こ こではフロントパネル上で2D表示してチェックする便宜のため転置して14×256の配列として表示し

(列指標による切出しとなる)、この形で定数配列化している。

図2 フォントファイルを読込み2D表示するtabulator.viのブロックダイアグラム

図3は、tabulator.viの実行停止後にフロントパネルの表示器を指定(破線の枠が点滅する:図3左)、

ドラグ(フロントパネル上の枠と同サイズでブロックダイアグラムに点線の枠が表示される:図3中)、 ドロップ(枠の中央に配置される:図3右)により新規VIのブロックダイアグラム上に定数として作 成する過程を示している。

図3 フロントパネルの表示器をブロックダイアグラムにドラグ&ドロップして定数化する

(3)

2. LED_scroll.vi

LED_scroll.viは、前述のtabulator.viの機能により13種の8×14フォントファイルを定数配列化し て組込み、14行80欄のLEDアレイにASCII文字(日本語など2バイト文字は使えない)のテキスト をスクロール表示させる電光掲示板デモVIである。機能は次の通りで図4、5に実行画面の例を示す。

● "TOD / text"ボタン【起動時の既定ON】により表示文字列をTOD文字列とするか”ASCII text”に 入力した文字列とするかを選択する(図4参照)。

● "TOD / text"がOFFで "scroll"ボタン【既定ON】がONのとき、"with text" ボタン【既定ON】

を表示し、ONで表示サイクルに”ASCII text”の内容を含める。文字列はスクロール中固定(先頭の 文字が画面左に達したとき更新)されるため、連結の順序はTOD文字列が先になる。

● "TOD / text"がOFFで"date-time / time-date" ボタン【既定OFF】を表示し、TOD文字列で日付、

時刻の何れを先にするかを選択する。ON では字配りのため先頭に1文字空白が付き、"scroll"が OFFの停止時に時計として機能する。

● "TOD / text" OFF、"scroll" ON、"date-time / time-date" OFF【既定】のとき、"advance 5s"ボタ ン【既定ON】を表示する。"date-time / time-date" ONでは先頭の空白を表示時に時刻が更新され るが"date-time / time-date" OFF では表示のタイミングで5秒遅れるため、"advance 5s" ONで5 秒進めてこれを補正する(図5参照)。

図4 LED_scroll.vi起動時の既定の設定画面

(4)

3. LED_scroll2.vi【2017/12/02追加】

LED_scroll2.vi は、LED_scroll.vi のフロントパネルをメイン画面として、スクロールすると現れる

サブ画面(図6)を設け、クリック可能な文字パタン一覧とタイマーによる設定変更機能を追加したも のである。2Dピクチャが等倍表示ではない場合(ここではプロパティノードの「ズーム」値を 2とし て文字パタン一覧を拡大表示)プロパティノードの「マウス」で取得される座標が版により異なる

(LabVIEW7.1ではフロントパネル上の相対座標そのままであるのに対しLabVIEW2013 ではズーム 係数で補正している)ため_LV71版のソースVIをLabVIEW2013で開いても正しく動作しない。追加 機能は次の通りである。

● キーボードには無い文字もサブ画面指定フォント(起動時の既定は”reverse”)の文字パタン一覧か ら選択して ”append” でサブ画面の文字列制御器 ”ASCII text” のテキスト末尾に追加 し、

“transfer”をクリックするとタイマー動作とは無関係にサブ画面の”ASCII text”の内容をメイン画 面の”ASCII text”に転送する。

● 押しボタンSW ”Time stamp / waiting time” 【既定ON】でタイマー動作設定の制御器を切替え、

OFFでタイムスタンプ(ボックス内で文字列を編集、または右側のカレンダーアイコンをクリック して設定:起動時の既定は起動時刻)、ON で数値(動作待時間を秒で指定:起動時の既定は 10)

を表示する。

● ”SET”ボタンのクリックで(タイムスタンプの設定時刻がクリック以降であるかまたは待時間の値

が正であるとき)タイマーが起動し、”Time stamp / waiting time” 切替SWは非表示となり、”SET”

ボタンとタイマー設定制御器は”RESET”ボタン(クリックで起動したタイマーを解除)と動作まで のカウントダウン(秒)の表示に切替わる。

● タイマー動作時刻にメイン画面の表示設定がサブ画面の設定内容に切替わり、”Time stamp / waiting time” 切替SW、”SET” ボタン、タイマー設定制御器が復帰表示される。

図6 はサブ画面の表示例で、この状態で”SET”ボタンをクリックすると10秒後にメイン画面は反転 フォント、時刻先行のTOD文字列表示、スクロール無しの時計表示となる。

図6 LED_scroll2.viのスクロールで現れるサブ画面

(5)

4. tabulator2.vi【2017/12/05追加】

LED_scroll.vi(および追加の LED_scroll2.vi)で使用するフォントデータを定数化するための専用

VIであるtabulator.viの機能を汎用化してバイト順(2017/12/08追加)、データ型、メモリ上の配列要 素配置順、配列サイズを指定して外部ファイルを 2 次元配列定数化用に表示する VI が tabulator2.vi である。データ型は一般的な64b浮動小数点数(LabVIEW既定のデータ型)と32b整数(符号付きま たは符号無し)に音響、信号処理等では使用頻度の高い128b複素数(2017/12/08追加)を加え、複素 数取込みの目的でファイル読取り位置のオフセット指定(2017/12/08追加)を可能にしている(註参照)。

tabulator.vi の 項 で 記 述 の 通 り 実 行 フ ァ イ ル に は 利 用 価 値 が 無 い た め LED_scroll.zip に は

LabVIEW2013のソースVIのみを含めている。要素のビット内容には無関係である配列要素配置順(起

動時の既定はC、LabVIEWの ”row-major”)、整数の符号の扱い(起動時の既定は ”signed”)、配列サ イズ(起動時の既定は1×1)はファイル読込み後に変更が可能である。

註:MATLABでワークスペース変数をファイルに保存する関数saveはバイナリ(既定の”-mat”オプ ション)であってもファイルにはヘッダが付くため MATLAB 以外のシステムでの読込みには関数 fwriteを使用するのが適切であるが、fwriteでは複素数データの保存はできない。関数saveで保 存したファイルのヘッダ長はバイナリエディタで容易に確認できるが、tabulator2.viで読込む前にオフ セット、データ型、配列要素配置順を確認するための簡易ビュワーVI(次項type_check.vi:2017/12/08 追加)を同梱した。

tabulator2.viを起動直後の既定設定のフロントパネルを図7に示す。ファイルの定数化の流れは次の

通り(p.6 ①~⑥の項番は図7中の数字に対応)である。

(6)

① ファイル読込みプロンプトのファイル名フィルタパタン(既定は ”*.*”)を指定する。

② ファイル読込み後には変更できない(読込みが正常終了の場合に制御器の操作を無効化)読取り位 置(”offset”:既定は0で先頭から)、バイト順(註参照:既定は”little endian”)、データ型(既定 は64b浮動小数点数)を指定する。

③ “READ”ボタンをクリックし、プロンプトに従い参照するファイルを指定する。”offset” 0で先頭か

ら読む指定では、ファイルサイズが指定データ長の倍数ではない場合、”type mismatch”が点灯し読 取りを中止する。”offset” が 0 ではない場合は、指定位置以降のバイト数を指定データ長で割った 整数商の要素を読込む。

④ 配列要素配置順(既定は”row-major”)、配列サイズ(既定は 1×1)、整数の場合は符号の有無を指 定する。読込まれた要素数と配列サイズとが整合しない場合 ”size mismatch”が点灯し、サイズが 小さい場合はサイズ分のみ使用、大きい場合は過剰な要素の値を0とする。

⑤ 指標を指定して配列要素(ビットパタンと値が表示される)を確認する。停止して再開ではなく設 定を変更してファイルを読込む場合は無効化された制御器を復帰させるため“READ”をクリックし てプロンプトをキャンセルする(VIプロパティの実行カテゴリで「自動エラー処理を有効」のチェ ックを外している)。

⑥ “HALT”ボタンまたは「実行を中断」ボタンをクリックして停止する。

以後の処理はtabulator.vi におけるp.2図3の操作と同様である。例として行番号を実部、列番号を 虚部とする4×4の複素行列Zを作成し(ここではMATLAB互換のOctaveを使用)、関数saveで保 存したバイナリファイルtest(ヘッダ長53B:LED_scroll.zipに同梱)を読取って表示した例を図8に 示す。MATLABの配列要素のメモリ上の配置順はLabVIEWとは逆の”column-major”(配列要素を連 続して参照するループでは外側のループ変数が列の指標)である。図8左上はOctaveの実行結果、左 下 は test の バ イ ナ リ エ デ ィ タ wxHexEditor に よ る 表 示 、 右 は tabulator2.vi で test を 読 込 み、”column-major”、配列サイズ4×4を指定して停止後に配列表示器を指定(黄枠内の点滅する破線 部分)したフロントパネルで、それぞれ赤の角型枠内は行列要素Z(4,1)(MATLABの指標は 0では なく1から始まる)を示す。

図8 Octave実行結果(左上) wxHexEditorの表示(左下) tabulator2.vi実行結果(右)

註:2B以上のデータではデータを指定するアドレスのバイトがMSBを含む場合(big endian)とLSB を含む場合(little endian)とがありデータのバイト順が異なる。PC系は後者であるが、メインフレー

ム機、PowerPC系CPUは前者である。因みにIPアドレス、ポート番号はbig endianで記述すること

とされLabVIEWのファイル読取りVIはbig endianを既定としている。

(7)

5. type_check.vi【2017/12/08追加】

type_check.viは、tabulator2.viでの読取り準備としてヘッダ付ファイルのデータ開始位置、バイト

順、データ型、配列要素配置順を確認するための簡易ビュワーVIで、ファイルの指定位置から32Bを 符号無し整数およびASCII文字で表示し、指定位置から4B、8B、16Bの内容をそれぞれ整数(符号付 き、符号無し)、浮動小数点数、複素数と解釈して2種類のバイト順で並行表示する。LED_scroll.zip にはLabVIEW2013のみ(LabVIEW7.1では配列のスクロールバーを表示できない)ソースVIおよび 実行ファイルを含めている。

type_check.vi を起動して”READ”をクリックし、バイナリファイル test を開いた直後のフロントパ

ネルを図 9 に示す。配列のスクロールバーまたは配列指標の増減ボタンでデータ開始位置を探索し、

little endian、big endianの両表示を見て何れのバイト順であるかを確認する。

図9 バイナリファイルtestを開いたtype_check.viのフロントパネル

図10はデータの先頭に位置付けた画面で、以後、”byte”を16にして”increment”をクリックし要素 を順次表示して配列要素配置順が”column-major”であることを確認できる。“clear index”をクリックす るとファイル先頭に位置し、続いて”decrement”をクリックするとファイル最後尾に位置する。

Referensi

Dokumen terkait

郵送での図書の貸出 (送料は図書館負担) 【受付期間】6 月 1 日(月)~9 月 11 日(金)18 時で受付終了。 【対 象】学部生、大学院生 【対象資料】本学図書館須磨・ポートアイランド・三宮 に所蔵されている図書 ※『予約』が表示されない資料は対象外です。(例:禁帯出図書、視聴覚資料、雑誌等) 【貸出冊数】現在借用中の図書を含めて、学部生は 5

1並んでいる数字の規則 ずつ増えているので, 2論理で解決する問題 それぞれの場合を表にしてみると,次の様になります。 村人がうそつき村の住人 村人が正直村の住人 正直村が右側 はい はい 正直村が左側 いいえ いいえ 村人は「はい」と答えたので,正直村は右側です。 3展開図の平面図形を考える問題 右の図のように,展開図は正方形となる

結果と考察 左岸側の水深急変部を中心として,その周辺の流速分布の詳細を示したものであるが図−1 である.240 m〜260m付近の水深急変部を挟んで,速度分布も急変していること,左岸側の水制域内部では微小ではあ るが,複雑な流向の流れが存在していることが分かる. 乱れ特性量として,主流方向および水路幅方向の乱れ強さu' u,v' u及び Reynolds

科目コード 科目コードは、学問分野の中でその科目がどの様な位置付けとなっているかを示す、学問分野中での住所のような 役割を持っている。科目コードの示し方は大学・大学院により多様だが、基本的に 3 文字か 4 文字からなる文字コー ド部と、3 ~ 5 桁からなる数字コード部とであらわす方式が一般的である。 桜美林大学大学院では、3 文字からなる文字コード(3

特別講演 コーポレートガバナンス・コードの制定と ROE 活用の是非 櫻井通晴 <論文要旨> 政府は2016年6月に,コーポレートガバナンス・コードを発表した.そのコーポレートガバナンス・ コードの理論的支柱の1つが2014年8月に公表された「持続的成長への競争力とインセンティブ―企業

中央値 最小値 最大値 第 1 四分位数 第 3 四分位数 ☆ ⑴ 「四分位範囲」とは,箱ひげ図における右図の☆の長さを 表し,1975 年度から 2000 年度まで長さは減少しているから, 0は正しい。 1990 年度,2000 年度,2010 年度においては,右側のひげ の長さが左側のひげの長さより長いから,1は正しくない。 1990

要旨 近年、日本語教育分野では、学習者の多様化はもはや新しい問題ではない(浜田他,2006)。学 習者の多様なニーズと学習過程の個別性に合わせるために、日本語知識を伝授することだけでは なく、教師に対する要求が高くなってくる。個々の学習者の個別性に対応しながら学習効果をあ げるために、学習者自身が学習の主体となり、さまざまなリソースを利用して学習活動を行う自

指定したスペクトル幅での測定 ・mf1,3 jexp3 wft 実験エリア 1のFID データを実験エリア3 にコピ ーし、FTデータとして表示させる。 ・dscale スケール表示 ・Expand スペクトルの表示されている部分以外はカット ・movesw set spectrum width ・nt = ○○ 積算回数の設定 ・ga