- バックアップ一覧
- ソース を表示
- Products/G-SSM65/BinaryProtocol は削除されています。
CPU処理が追いつかない & メモリが足りないので、とりあえず実装しない... ぁぅ...
通信プロトコル †
概要 †
SSMプロトコルによって得られる ECUデータのほかに、基板に実装された加速度センサ、LED、スイッチなどのデータをやりとりするためのものである。SSMのパケットをカプセル化するのではなく、独自仕様のプロトコルに変換する。
- ホスト(PC)がコマンドを送信する
- 基板が応答する
通信方式 †
方式 | RS-232C |
ビット | 8bit |
パリティ | なし |
フロー | なし |
ボーレートとエラー率 | 2400bps | -0.02% |
4800bps | 0.04% |
9600bps | -0.08% |
19200bps | 0.16% |
38400bps | 0.16% |
57600bps | 0.64% |
115200bps | -0.79% |
230400bps | 2.12% |
460800bps | -3.55% |
パケットの基本構造 †
- Simple is Best
- Big Endian
送信(PC)側 †
アドレス | MSB/LSB | データ |
0 | MSB | コマンド |
1 | LSB | コマンド |
2 | | データサイズ (n = 0 to 255) |
| | |
3 + n | | チェックサム |
応答(基板)側 †
アドレス | MSB/LSB | データ |
0 | | データサイズ (n = 0 to 255) |
| | |
1 + n | | チェックサム |
コマンド †
- 未実装のコマンドは、応答しない...
コマンドリスト †
送信(PC)側 | | 応答(基板)側 |
コマンド番号 | データサイズ | データ型 | 取得データ名称 | | データサイズ | データ型 | 応答、単位など |
0x0000 | 0x00 | | CPU Reset | | | | なし (応答しない) |
0x0001 | 0x00 | | Ping | | 0x00 | | なし(データサイズとチェックサムだけ返ってくる) |
基板情報を取得するコマンド群 |
0x0010 | 0x00 | | 基板名 | | n | char | ASCIIコード |
0x0011 | 0x00 | | 基板バージョン | | n | char | ASCIIコード |
0x0012 | 0x00 | | 基板シリアル番号 | | 0x02 | unsigned int | |
0x0018 | 0x00 | | ファームウェア名 | | n | char | ASCIIコード |
0x0019 | 0x00 | | ファームウェアバージョン | | n | char | ASCIIコード |
0x001A | 0x00 | | プロトコルバージョン | | n | char | ASCIIコード |
日時を取得/設定するコマンド群 |
0x0020 | 0x00 | | 現在時を得る | | 0x01 | unsigned char | |
0x0021 | 0x00 | | 現在分を得る | | 0x01 | unsigned char | |
0x0022 | 0x00 | | 現在秒を得る | | 0x01 | unsigned char | |
0x0028 | 0x01 | unsigned char | 現在時を設定する | | 0x00 | | なし(データサイズとチェックサムだけ返ってくる) |
0x0029 | 0x01 | unsigned char | 現在分を設定する | | 0x00 | | なし(データサイズとチェックサムだけ返ってくる) |
0x002A | 0x01 | unsigned char | 現在秒を設定する | | 0x00 | | なし(データサイズとチェックサムだけ返ってくる) |
ギア比を取得/設定するコマンド群 |
0x0040 | 0x00 | | 最終減速比 | | 0x02 | unsigned int | (0 to 65535) / 1000 |
0x0041 | 0x00 | | 1速 | | 0x02 | unsigned int | (0 to 65535) / 1000 |
0x0042 | 0x00 | | 2速 | | 0x02 | unsigned int | (0 to 65535) / 1000 |
0x0043 | 0x00 | | 3速 | | 0x02 | unsigned int | (0 to 65535) / 1000 |
0x0044 | 0x00 | | 4速 | | 0x02 | unsigned int | (0 to 65535) / 1000 |
0x0045 | 0x00 | | 5速 | | 0x02 | unsigned int | (0 to 65535) / 1000 |
0x0046 | 0x00 | | 6速 | | 0x02 | unsigned int | (0 to 65535) / 1000 |
0x0047 | 0x00 | | 7速 | | 0x02 | unsigned int | (0 to 65535) / 1000 |
0x0048 | 0x02 | unsigned int | (0 to 65535) / 1000 最終減速比 | | 0x00 | | なし(データサイズとチェックサムだけ返ってくる) |
0x0049 | 0x02 | unsigned int | (0 to 65535) / 1000 1速 | | 0x00 | | なし(データサイズとチェックサムだけ返ってくる) |
0x004A | 0x02 | unsigned int | (0 to 65535) / 1000 2速 | | 0x00 | | なし(データサイズとチェックサムだけ返ってくる) |
0x004B | 0x02 | unsigned int | (0 to 65535) / 1000 3速 | | 0x00 | | なし(データサイズとチェックサムだけ返ってくる) |
0x004C | 0x02 | unsigned int | (0 to 65535) / 1000 4速 | | 0x00 | | なし(データサイズとチェックサムだけ返ってくる) |
0x004D | 0x02 | unsigned int | (0 to 65535) / 1000 5速 | | 0x00 | | なし(データサイズとチェックサムだけ返ってくる) |
0x004E | 0x02 | unsigned int | (0 to 65535) / 1000 6速 | | 0x00 | | なし(データサイズとチェックサムだけ返ってくる) |
0x004F | 0x02 | unsigned int | (0 to 65535) / 1000 7速 | | 0x00 | | なし(データサイズとチェックサムだけ返ってくる) |
タイヤサイズを取得/設定するコマンド群 |
0x0050 | 0x00 | | タイヤ幅 | | 0x02 | unsigned int | (0 to 65535) mm |
0x0051 | 0x00 | | 扁平率 | | 0x01 | unsigned char | (0 to 255) % |
0x0052 | 0x00 | | 直径 | | 0x01 | unsigned char | (0 to 255) Inch |
0x0058 | 0x02 | unsigned int | (0 to 65535) mm タイヤ幅 | | | | なし(データサイズとチェックサムだけ返ってくる) |
0x0059 | 0x01 | unsigned char | (0 to 255) % 扁平率 | | | | なし(データサイズとチェックサムだけ返ってくる) |
0x005A | 0x01 | unsigned int | 0 to 255) Inch 直径 | | | | なし(データサイズとチェックサムだけ返ってくる) |
現在値を取得するコマンド群 |
0x1000 | 0x00 | | 車速 | | 0x02 | unsigned int | (0 to 65535) km/h |
0x1001 | 0x00 | | エンジン回転数 | | 0x02 | unsigned int | (0 to 65535) rpm |
0x1002 | 0x00 | | スロットル | | 0x01 | unsigned char | (0 to 100) % |
0x1003 | 0x00 | | ブースト圧 | | 0x02 | int | (-32768 to 32767) / 1000 kg/cm^2 |
0x1004 | 0x00 | | 水温 | | 0x02 | int | (-32768 to 32767) C |
0x1005 | 0x00 | | 吸気温 | | 0x02 | int | (-32768 to 32767) C |
0x1006 | 0x00 | | バッテリ電圧 | | 0x01 | unsigned char | (0 to 255) / 10 V |
0x1007 | 0x00 | | Mass Air Flow | | 0x02 | unsigned int | (0 to 65535) / 100 |
0x1008 | 0x00 | | A/F | | 0x02 | unsigned int | (0 to 65535) / 100 |
0x1009 | 0x00 | | イグニッション | | 0x02 | int | (-32768 to 32767) / 100 deg |
0x100A | 0x00 | | ノッキング | | 0x02 | int | (-32768 to 32767) / 100 deg |
0x100B | 0x00 | | 瞬間燃費 | | 0x02 | unsigned int | (0 to 65535) / 100 km/h |
0x100C | 0x00 | | シフトポジション | | 0x01 | unsigned char | (0 to 255) Shift |
0x100D | 0x00 | | X軸加速度 | | 0x02 | int | (-32768 to 32767) / 1000 G |
0x100E | 0x00 | | Y軸加速度 | | 0x02 | int | (-32768 to 32767) / 1000 G |
0x100F | 0x00 | | Z軸加速度 | | 0x02 | int | (-32768 to 32767) / 1000 G |
最大値を取得するコマンド群 |
0x2000 | 0x00 | | 車速 | | 0x02 | unsigned int | (0 to 65535) km/h |
0x2001 | 0x00 | | エンジン回転数 | | 0x02 | unsigned int | (0 to 65535) rpm |
0x2002 | 0x00 | | スロットル | | 0x01 | unsigned char | (0 to 100) % |
0x2003 | 0x00 | | ブースト圧 | | 0x02 | int | (-32768 to 32767) / 1000 kg/cm^2 |
0x2004 | 0x00 | | 水温 | | 0x02 | int | (-32768 to 32767) C |
0x2005 | 0x00 | | 吸気温 | | 0x02 | int | (-32768 to 32767) C |
0x2006 | 0x00 | | バッテリ電圧 | | 0x01 | unsigned char | (0 to 255) / 10 V |
0x2007 | 0x00 | | Mass Air Flow | | 0x02 | unsigned int | (0 to 65535) / 100 |
0x2008 | 0x00 | | A/F | | 0x02 | unsigned int | (0 to 65535) / 100 |
0x2009 | 0x00 | | イグニッション | | 0x02 | int | (-32768 to 32767) / 100 deg |
0x200A | 0x00 | | ノッキング | | 0x02 | int | (-32768 to 32767) / 100 deg |
0x200B | 0x00 | | 瞬間燃費 | | 0x02 | unsigned int | (0 to 65535) / 100 km/h |
0x200C | 0x00 | | シフトポジション | | 0x01 | unsigned char | (0 to 255) Shift |
0x200D | 0x00 | | X軸加速度 | | 0x02 | int | (-32768 to 32767) / 1000 G |
0x200E | 0x00 | | Y軸加速度 | | 0x02 | int | (-32768 to 32767) / 1000 G |
0x200F | 0x00 | | Z軸加速度 | | 0x02 | int | (-32768 to 32767) / 1000 G |
最小値を取得するコマンド群 |
0x3000 | 0x00 | | 車速 | | 0x02 | unsigned int | (0 to 65535) km/h |
0x3001 | 0x00 | | エンジン回転数 | | 0x02 | unsigned int | (0 to 65535) rpm |
0x3002 | 0x00 | | スロットル | | 0x01 | unsigned char | (0 to 100) % |
0x3003 | 0x00 | | ブースト圧 | | 0x02 | int | (-32768 to 32767) / 1000 kg/cm^2 |
0x3004 | 0x00 | | 水温 | | 0x02 | int | (-32768 to 32767) C |
0x3005 | 0x00 | | 吸気温 | | 0x02 | int | (-32768 to 32767) C |
0x3006 | 0x00 | | バッテリ電圧 | | 0x01 | unsigned char | (0 to 255) / 10 V |
0x3007 | 0x00 | | Mass Air Flow | | 0x02 | unsigned int | (0 to 65535) / 100 |
0x3008 | 0x00 | | A/F | | 0x02 | unsigned int | (0 to 65535) / 100 |
0x3009 | 0x00 | | イグニッション | | 0x02 | int | (-32768 to 32767) / 100 deg |
0x300A | 0x00 | | ノッキング | | 0x02 | int | (-32768 to 32767) / 100 deg |
0x300B | 0x00 | | 瞬間燃費 | | 0x02 | unsigned int | (0 to 65535) / 100 km/h |
0x300C | 0x00 | | シフトポジション | | 0x01 | unsigned char | (0 to 255) Shift |
0x300D | 0x00 | | X軸加速度 | | 0x02 | int | (-32768 to 32767) / 1000 G |
0x300E | 0x00 | | Y軸加速度 | | 0x02 | int | (-32768 to 32767) / 1000 G |
0x300F | 0x00 | | Z軸加速度 | | 0x02 | int | (-32768 to 32767) / 1000 G |
データタイプ †
INTEGER †
Type | Bits | Min | Max |
char | 8 | -128 | 127 |
unsigned char | 8 | 0 | 255 |
int | 16 | -32768 | 32767 |
unsigned int | 16 | 0 | 65535 |
long | 32 | -2^31 | 2^31 -1 |
unsigned long | 32 | 0 | 2^32 -1 |
FLOATING POINT †
Type | Bits | E Min | E Max | N Min | N Max |
float, double | 32 | -126 | 127 | 2^-126 | 2^128 |
実行例 †
CPU Reset †
- 送信
- 0x00 0x00 0x00 0x00
- 応答
Ping †
- 送信
- 0x00 0x01 0x00 0x01
- 応答
- 0x00 0x00
最終減速比を設定する †
- 最終減速比 3.900
- 3900 = 0x0f3c
- Checksum = 0x00 + 0x48 + 0x02 + 0x0f + 0x3c
- 送信
- 0x00 0x48 0x02 0x0f 0x3c 0x95
- 応答
- 0x00 0x00
最終減速比を取得する †
- 送信
- 0x00 0x40 0x00 0x40
- 受信
- 0x02 0x0f 0x3c 0x4d
History †
Rev.1 2008/12/10 †
Rev.1.A 2008/12/30 †
- 初版は未実装にする (ぉ
- テスト実装したプロトコル処理が重い, 思ったより速度が出ない
- メモリが足りない