セクションの複数ページをまとめています。 印刷またはPDF形式で保存...

もとのページに戻る

2024-05-07 現在

超簡単!標準アプリによる親機・中継機アプリからの出力

超簡単!標準アプリからデータを受信した際の出力書式

    0x81:相手端末からの状態通知

    受信した入力信号の状態を出力します。

    データ形式

    #データ内容備考
    charヘッダ:のみ
    0uint8送信元の論理デバイスID
    1uint8コマンド番号0x81のみ
    2uint8パケット識別子アプリケーションIDより生成
    3uint8プロトコルバージョン0x01のみ
    4uint8LQI0-255
    5uint32送信元のシリアルID0x8???????
    9uint8送信先の論理デバイスID
    10uint16タイムスタンプ1秒で64カウント
    12uint8中継回数
    13uint16電源電圧単位はmV
    15int8-(未使用)
    16uint8デジタル信号LSBから順にDIxへ対応、0がHigh
    MSBが1なら定期送信
    17uint8デジタル信号マスクLSBから順にDIxへ対応、1が有効
    18uint8AI1の変換値アナログ信号の計算を参照、0xFFで未使用
    19uint8AI2の変換値アナログ信号の計算を参照、0xFFで未使用
    20uint8AI3の変換値アナログ信号の計算を参照、0xFFで未使用
    21uint8AI4の変換値アナログ信号の計算を参照、0xFFで未使用
    22uint8AIxの補正値LSBから2ビットずつ順にAIxへ対応
    uint8チェックサムLRC8
    charフッタCR (0x0D/'\r')
    charフッタLF (0x0A/'\n')

    アナログ信号の計算

    AIxの入力電圧 \(V\)は、受信した変換値\(e_{r}\)および補正値\(e_{fr}\)を使って次のように表すことができます。

    $$\begin{align*} V &= e+e_f \\ \text{where} \\ e &= 16e_r \\ e_f &= 4e_{fr} \\ \end{align*}$$

    単位は mV

    出力データの例

    :78811501C98201015A000391000C2E00810301FFFFFFFFFB
    #データ内容
    :charヘッダ:
    780uint8送信元の論理デバイスID0x78
    811uint8コマンド番号0x81
    152uint8パケット識別子0x15
    013uint8プロトコルバージョン0x01
    C94uint8LQI201/255
    8201015A5uint32送信元のシリアルID0x201015A
    009uint8送信先の論理デバイスID0x00
    039110uint16タイムスタンプ14.27
    0012uint8中継回数0
    0C2E13uint16電源電圧3118mV
    0015int8-
    8116uint8デジタル信号DI1 L DI2 H
    DI3 H DI4 H
    (定期送信)
    0317uint8デジタル信号マスクDI1 DI2
    0118uint8AI1の変換値16mV
    FF19uint8AI2の変換値未使用
    FF20uint8AI3の変換値未使用
    FF21uint8AI4の変換値未使用
    FF22uint8AIxの補正値AI1 0x03
    FBuint8チェックサム0xFB
    charフッタ\r
    charフッタ\n

    データの判別条件

    親機・中継機アプリは、さまざまな種類の子機からデータを受信することができます。

    出力されたデータが超簡単!標準アプリのものであるかを確認するには、次の箇所を参照してください。

    #データ項目条件
    1uint8コマンド番号0x81であること
    3uint8プロトコルバージョン0x01であること
    5uint32送信元のシリアルIDMSBが1であること(0x8???????
    --ペイロードのサイズ23バイトであること(:とチェックサムの間)

    パーサの実装例

    0x01:任意のデータの受信

    データ形式

    #データ内容備考
    charヘッダ:のみ
    0uint8送信元の論理デバイスID親機0x00,子機0x01-0x64,未設定子機0x78
    1uint8コマンド番号0x01のみ
    2[uint8]任意のデータ長さ\(N\)のバイト列
    uint8チェックサムLRC8
    charフッタCR (0x0D/'\r')
    charフッタLF (0x0A/'\n')