* 通信プロトコル [#f9317ded] #contents * 概要 [#fecaf6ed] SSMプロトコルによって得られる ECUデータのほかに、基板に実装された加速度センサ、LED、スイッチなどのデータをやりとりするためのものである。SSMのパケットをカプセル化するのではなく、独自仕様のプロトコルに変換する。 #br - ハンドシェイク方式 + ホスト(PC)がコマンドを送信する + 基板が応答する * 通信方式 [#j638a9a0] |方式|RS-232C| |ビット|8bit| |パリティ|なし| |フロー|なし| |ボーレート|2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400bps| * パケットの基本構造 [#de89e2a9] - Simple is Best (^^; - Big Endian ** 送信(PC)側 [#k6f7dfa6] |アドレス|MSB/LSB|データ|h |0|MSB|コマンド| |1|LSB|コマンド| |2||データサイズ (n = 0 to 255)| |||| |3 + n||チェックサム| ** 応答(基板)側 [#w10f1f51] |アドレス|MSB/LSB|データ|h |0||データサイズ (n = 0 to 255)| |||| |1 + n||チェックサム| * コマンド [#ude7a68a] - 未実装のコマンドは、応答しない... (^^; ** コマンドリスト [#p8e0f019] |>|>|>|送信(PC)側||>|>|応答(基板)側|h |コマンド番号|データサイズ|データ型|取得データ名称||データサイズ|データ型|応答、単位など|h |0x0000|0x00||Ping||0x00||なし(データサイズとチェックサムだけ返ってくる)| |0x0001|0x00||CPU Reset||||なし (応答しない)| |0x0002|0x00||EEPROM初期化||0x00||なし(データサイズとチェックサムだけ返ってくる)| |>|>|>|>|>|>|>|基板情報を取得するコマンド群| |0x0010|0x00||基板名||n|char|ASCIIコード| |0x0011|0x00||基板バージョン||n|char|ASCIIコード| |0x0012|0x00||基板ロット番号||0x02|unsigned int|| |0x0013|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|| |0x0023|0x00||現在ミリ秒を得る||0x02|unsigned int|| |0x0028|0x01|unsigned char|現在時を設定する||0x00||なし(データサイズとチェックサムだけ返ってくる)| |0x0029|0x01|unsigned char|現在分を設定する||0x00||なし(データサイズとチェックサムだけ返ってくる)| |0x002A|0x01|unsigned char|現在秒を設定する||0x00||なし(データサイズとチェックサムだけ返ってくる)| |0x002B|0x02|unsigned int|現在ミリ秒を設定する||0x00||なし(データサイズとチェックサムだけ返ってくる)| |>|>|>|>|>|>|>|スイッチを取得するコマンド群| |0x0030|0x00||スイッチ1を得る||0x01|unsigned char|スイッチFIFOから、ボタンの押下(立下りエッジ)状態 0/1 を得る| |0x0031|0x00||スイッチ2を得る||0x01|unsigned char|スイッチFIFOから、ボタンの押下(立下りエッジ)状態 0/1 を得る| |>|>|>|>|>|>|>|ギア比を取得/設定するコマンド群| |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||エンジン回転数||||| |0x2002|0x00||スロットル||||| |0x2003|0x00||ブースト圧||||| |0x2004|0x00||水温||||| |0x2005|0x00||吸気温||||| |0x2006|0x00||バッテリ電圧||||| |0x2007|0x00||Mass Air Flow||||| |0x2008|0x00||A/F||||| |0x2009|0x00||イグニッション||||| |0x200A|0x00||ノッキング||||| |0x200B|0x00||瞬間燃費||||| |0x200C|0x00||シフトポジション||||| |>|>|>|>|>|>|>|最小値を取得するコマンド群| |0x3000|0x00||車速||0x02|unsigned int|0 to 65535 km/h| |0x3001|0x00||エンジン回転数||||| |0x3002|0x00||スロットル||||| |0x3003|0x00||ブースト圧||||| |0x3004|0x00||水温||||| |0x3005|0x00||吸気温||||| |0x3006|0x00||バッテリ電圧||||| |0x3007|0x00||Mass Air Flow||||| |0x3008|0x00||A/F||||| |0x3009|0x00||イグニッション||||| |0x300A|0x00||ノッキング||||| |0x300B|0x00||瞬間燃費||||| |0x300C|0x00||シフトポジション||||| ** データタイプ [#w95505c1] *** INTEGER [#f7ba0765] |Type|Bits|Min|Max|h |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 [#la16d457] - IEEE-754 |Type|Bits|E Min|E Max|N Min|N Max|h |float, double|32|-126|127|2^-126|2^128| * 実行例 [#bde573a3] ** Ping [#rf5b4a85] -送信|0x00 0x00 -応答|0x00 0x00 * History [#z5067fec] ** Rev.0 2008/12/-- [#k1bbb1d1] - 初版作成