Format Parser
TWELITE PAL の親機出力形式を解釈するコードです。
TWELITE PAL 親機の書式フォーマットを解釈しています。多くはその定義に従います。
関連ソースファイル
以下のソースコードにより PAL 親機より出力されるデータを解釈します。
本プロジェクトに含まれる他のソースコードに依存している場合があります。
ファイル名 | 内容 |
ITweDataPresentation.vb | UART 電文のエンコード(ASCII 書式)を解釈する。解釈ができれば、ITweDataFormat による解釈も行う。 |
ClsDataPresentationAscii.vb | ASCII書式 |
ITweDataFormat.vb | 上記 ASCII 書式で解釈されたデータ書式を表現する(アドレス情報など共通情報や、データ書式内のデータ構造など)。また書式を解釈後、ITweDataPayloadを生成する。 |
ClsDataFormatPAL.vb | PAL のデータ書式を解釈する。 |
ITweDataPayload.vb | センサー情報など各データを表現する。 |
ClsDataPayloadPalSensors.vb | SENSE PAL の個別センサーの集約データ型。 |
ClsDataPalSenseElement.vb | SENSE PAL の単独センサーのデータ型。 |
MDataGenerator.vb | ITWE??? 抽象型より、適切なクラスの生成を行うジェネレータや、諸ユーティリティ。 |
MSingedConverter.vb | VB では unsinged 型から signed 型への直接的なキャストができないため、そのための言語拡張。 |
読み出し方法
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 |
最終更新