Format Parser

TWELITE PAL の親機出力形式を解釈するコードです。

TWELITE PAL 親機の書式フォーマット (ASCII形式のみ) を解釈しています。多くはその定義に従います。

関連ソースファイル

以下のソースコードにより PAL 親機より出力されるデータを解釈します。

ファイル名

内容

ITweDataPresentation.cs

UART 電文のエンコード(ASCII 書式)を解釈する。解釈ができれば、ITweDataFormat による解釈も行う。

ClsDataPresentationAscii.cs

ASCII書式 :800...<CR><LF> の解釈。

ITweDataFormat.cs

上記 ASCII 書式で解釈されたデータ書式を表現する(アドレス情報など共通情報や、データ書式内のデータ構造など)。また書式を解釈後、ITweDataPayloadを生成する。

ClsDataFormatPAL.cs

PAL のデータ書式を解釈する。

ITweDataPayload.cs

センサー情報など各データを表現する。

ClsDataPayloadPalSensors.cs

SENSE PAL の個別センサーの集約データ型。

ClsDataPalSenseElement.cs

SENSE PAL の単独センサーのデータ型。

MUtils.cs

ITWE??? 抽象型より、適切なクラスの生成を行うジェネレータや、諸ユーティリティ。

読み出し方法

TWELITE PAL Viewer では、SerialPort1.DataRecievedイベントを起点として、書式の解釈が行われます。

以下のコード例では、CSnsDataクラスにデータをコピーしています。

まず、解釈のために文字列をバイト列に変換して、genDataPresentation() により、データ解釈を行います。実行後、解釈済みのClsDataPresentationAsciiオブジェクトが生成されます。

続いて、データ書式、センサー情報を取り出します。dataFmt はデータ書式で、アドレス情報などを得ることができます。dataPayはセンサー情報で複数のセンサーの情報をひとまとめにしています。

データ書式(ClsDataFormatPalApp)で得られる情報を列挙します。

名前

内容

BLQI

Byte

LQI(受信感度相当)情報

UsDataSer

UShort

続き番号

BBalPCB

Byte

SENSE PAL 種別識別子

BSrcAddr

Byte

SENSE PAL の論理ID

UiSrcAddr

UInteger

SENSE PAL のアドレス

UiRepeater

UInteger

配送経路(&H80000000UI なら直接、それ以外の場は最後に配送した中継器のアドレス)

※ PAL アプリの設定によって中継器のアドレスの定義は変化します。

次にセンサーの情報を得ます。dataPay.SensoerCode() により、センサーの種別を指定して情報を得ることができます。戻り型はList(Of ClsDataPalSenseElement)で、0個以上の要素が格納されます(Nothingにはならない)。ここでは電圧関連(ClsDataPalSenseElement.E_SNSCD.VOLT)のリストを探索します。

ここでは、電源電圧(ClsDataPalSenseElement.E_EXCD_VOLT.POWER)の情報が欲しいので、リストの中にあるか探索します。

ClsDataPalSenseElement クラス

このクラスは、各センサーの単一のデータを表現します。以下にデータの取り出しのためのプロパテを列挙します。

名前

内容

IsError

Boolean

データエラーの場合は True となる。

ErrorCode

Byte

エラーコードが入ります。

Data

Object

センサーのデータを格納します。エラーなどで Nothing になる場合があります。データについては要素数が1つであっても配列型となります。 例えば Byte型のデータが一つだけ含まれる場合であっても Byte(0) で宣言された配列オブジェクトとなります。

SensorCode

Byte

センサー種別が入ります。

Ex

Byte

拡張データが入ります。主に電圧情報など、センサー種別が同じでも、複数ある場合に使われます。

センサーの種別を調べるための列挙型ClsDataPalSenseElement.E_SNDCDの定義は以下です。

名前

内容

HALL

開閉磁気センサー

TEMP

温度センサー

HUMD

湿度センサー

LUMI

照度センサー

VOLT

電圧

電圧センサーの種別を特定するための列挙型ClsDataPalSenseElement.E_EXCD_VOLTは以下です。

名前

内容

POWER

電源電圧

ADC1

ADC1

最終更新

役に立ちましたか?