検索

Google
Web www.icefree.org

RSS of recent changes

 

プロトコル解析

2017-06-20 (火) 23:23:54 (2994d)

PC/DoseRAE2

プロトコル

ボーレートは38400bpsです。
8bitフルに使うので、ターミナルソフトでの操作は難しいです。

以下の説明では、
クレードル上のUSBとカードをつなぐ機器を「リーダ」と呼びます。
カード本体を「デバイス」と呼びます。

注意事項

現物合わせで作っていますので、ファームウェアが更新された場合は正しく動かない可能性があります。

また、異常なコマンドを送ってしまう恐れもあります。その場合は機器が使用できなくなる場合や正常に動作しなくなる場合があるかもしれません。それらの損害について当方は責任を持ちませんので、ご了承の上、参考にしてください。

メーカーから開示された情報ではないので、メーカーに問い合わせないでください。

パケットの基本構造

複数バイトの数値はビッグエンディアンです。

  • 開始記号 1byte
    7B
  • 通信対象 1byte
    リーダが対象のときは38で、デバイスが対象のときは3Cのようです。
  • データ長 1byte
    パケット長-3です。1バイトです。そのため長いレスポンスは分割して取得するようになっています。
  • 通信方向 4byte
    リーダのコマンド(38)の場合、PCからリーダは00 00 00 01
    リーダーからPCは01 00 00 00。
    デバイスのコマンド(3C)の場合は、00 01 00 01 です。
  • コマンド 1byte
    リーダのコマンドは、リザルトも同じコマンドで返ってきます。
    デバイスのコマンドは、最下位ビットが0の場合は、PCから機器、1の場合は機器からPCです。
  • データ 不定長
    デバイスのコマンドは、2byte目も使うことがあります。
  • チェックサム 1byte
    開始記号からチェックサムまでのバイト毎の総和の下8bitが0になります。
  • 終端記号 1byte
    7D

以下の説明では、コマンド、データのみを挙げることがあります。
7Bから始まっているときはパケット全体を表しています。

定期的なデータ通信

接続すると、何もしなくても、指定間隔(デフォルト 5 秒)で情報を送ってきます。

7B 開始記号
38 機器
20 データ長
00 01 固定
00 01 固定
41 4D コマンド。 41 4Dが定期的に送られてくるデータです。
00 01 グループID?
22 B8 ユーザID
xx xx xx xx xx xx xx xx xx xx デバイスのシリアル番号
xx xx xx xx 累積の線量。0.1μSV単位
xx xx xx xx 現在の線量。0.1μSV/h単位
04 00
xx チェックサム
7D 終了記号

これで、線量は分かります。機器の表示は0.01μSV単位で表示できますが、通信で取得できるのは0.1μSV単位です。ログの記録も0.1μSV単位です。

デバイスのデータ取得・設定

その他の設定にはもう少し手順が必要です。

まず接続のための情報を取得します。

7B 38 07 00 00 00 01 3A 0B 7D

すると、

7B 38 EB 00 01 00 00 0A FD FD で始まるリザルトが返ってきます。

リザルトの中身を一箇所1に変えて、コマンド3Bで送り返します。

7B 38 EB 00 00 00 01 3B
FD FD 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 30 2E
30 2E 30 2E 30 00 00 00
00 00 00 00 00 00 30 2E
30 2E 30 2E 30 00 00 00
00 00 00 00 00 00 30 2E
30 2E 30 2E 30 00 00 00
00 00 00 00 00 00 30 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 30 2E 30 2E 30 2E 30
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 56
31 2E 30 30 20 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 xx
xx xx xx xx xx xx xx xx
xx 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 01 <= ここを1に
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00
xx チェックサム
7D

送ると、リーダからは、

7B 38 07 00 01 00 00 3B 0A 7D 

が返ってきます。

この後、7B 3Cから始まるコードを受け付けるようになります。これでデバイスの情報が取得できます。
自分で送らなくても、純正ツールで接続したあとは使える状態が維持されていますので、それを利用することもできます。

例えば、
7B 3C 08 00 01 00 01 20 20 FF 7D
で、デバイスのシリアル番号が取得できます。

ログ取得

ログ取得にはいくつか方法がありますが、全取得できればいいので、それだけに対応します。

まずログのバイナリサイズを取得します。

7B 3C 08 00 01 00 01 20 83 9C 7D

で取得します。

7B 3C 0C 00 01 00 01 21 83
xx xx xx xx サイズ
xx チェックサム
7D

が返ってきます。

次に実際のログを取得します。

7B 3C 0A 00 01 00 01 20 84 
xx xx 0からの番号
xx チェックサム 
7D 	

で取得します。一度に全部送られてくるわけではないので、カウントを増やしながら全データを取得します。

リザルトは、

7B 3C 
xx 長さ
00 01 00 01 21 84
xx 0なら継続、1なら終了
xx xx 番号
データ本体
xx チェックサム
7D 	

です。

終了になるまで、データ本体を繋げます。
データは、
・ログ概要
・ログ本体
がログ数だけ繰り返して入っています。

ログ概要
FD FD 45
30 xx xx xx xx シリアル前半
01 01 00 20 4D 80 01 00 00 00 00 00 28 00 68 61
0B 05 0F 01 07 2E 開始時刻
0B 05 0F 01 12 22 終了時刻
00 3C サンプル採取間隔
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04
00 00 00 0A サンプル数
01 01 00 00 05 18 01 00
30 xx xx 4E xx シリアル後半
01 00 00 00 22 1F 1B 16 12 A0 0B 04 1D 17 1C
00 00 1F 40 アラーム設定値
00 00 27 10 警報しきい値
05 F5 E0 FF しきい値オーバー
30

ログ本体は、累積値のデータがuint32で記録されています。
最初のログは、開始時間+サンプル採取間隔です。

ログ消去

コマンド 22 88 FF

7B 3C 09 00 01 00 01 22 88 FF 95 7D

で消せます。
成功すると、リザルト 23 88

7B 3C 08 00 01 00 01 23 88 94 7D 	

が返ってきます。

時刻設定

7B 3C 0E 00 01 00 01 22 42
0B 05 12 02 00 2A 年月日時分秒
xx 7D

リザルトは

7B 3C 08 00 01 00 01 23 42 DA 7D

で返ってきます。

積算量リセット

7B 3C 08 00 01 00 01 60 5F 80 7D

を送ります。
リザルトは、

7B 3C 08 00 01 00 01 61 5F 7F 7D

です。

その他

シリアル番号取得

20 20

リザルト

21 20
10byte シリアル番号
60 81

リザルト

61 81
2byte ユーザID
00 03
00 01
2byte データ間隔
0e 10
0e 10
00 00 00 00
20 33

リザルト

21 33
1byte 出荷年-2000
1byte 出荷月
1byte 出荷日
1byte 出荷時
1byte 出荷分
20 3d

リザルト

21 3d
1byte 有効期間 年
1byte 有効期間 月
1byte 有効期間 日
60 5c

リザルト

61 5c
00 00 パスワード?
60 87

リザルト

61 87
4byte 800
4byte 10000
60 89

リザルト

61 89
2byte 滞在時間アラーム% * 10
2byte 分*10
60 83

リザルト

61 83
4byte 800
4byte 10000
4byte 800
4byte 10000
60 5a

リザルト

61 5a
04
20 25

リザルト

21 25
00 00 00 01
60 80

リザルト

61 80
'M' 10byte 'V' 4byte
20 01 04 EC