ec2-3-15-2-68.us-east-2.compute.amazonaws.com , 56857th | 2024/11/22 UPDATED |
[更新履歴] 2012.1.5 初版 2012.1.18 料金所番号ファイルに首都高などが入っていなかったので第2版に追加 2012.3.31 料金所番号ファイル第3版 2013.4.13 [Ver1.01] 64bitOSで ODBCエラーが出るので、32bitで動作するようコンパイルしなおした。 COMポートが空白のままだとエラーで落ちるのを警告表示するようにした。 2013.4.16 料金所番号ファイル第4版 2013.10.31 料金所番号ファイル第5版 2014.10.17 料金所番号ファイル第6版 2015.3.1 料金所番号ファイル第7版 2015.9.25 料金所番号ファイル第8版 2016.8.14 料金所番号ファイル第9版 2017.2.7 料金所番号ファイル第10版 2017.6.17 [Ver1.02] ODBCを使用しないようにした。.net Framework 4.6対応に変更した。 USBシリアルの種類によっては正しく通信できないことがあるのを修正した。 表示フォントを Meiryo UIに変更した。登録日取得コマンドの実装が無いモデルに 対応した。 9U812V型で新発見したコマンドを掲載。 履歴レスポンスの日付が秒の項目を追加 2017.9.6 料金所番号ファイル第11版 2018.9.12 料金所番号ファイル第12版 2019.4.28 料金所番号ファイル第13版 2020.1.29 料金所番号ファイル第14版 2020.5.7 料金所番号ファイル第15版 2020.11.20 料金所番号ファイル第16版 2021.4.14 検証機種追加(EP-9U716V) 2021.5.7 料金所番号ファイル第17版 2021.11.26 料金所番号ファイル第18版 2022.3.2 料金所番号ファイル第19版 2022.6.26 料金所番号ファイル第20版 2022.11.14 料金所番号ファイル第21版 2023.5.11 料金所番号ファイル第22版 2023.11.21 料金所番号ファイル第23版 2024.4.22 料金所番号ファイル第24版 2024.11.22 料金所番号ファイル第25版
通信連携機能が使えるのは、後部にナビゲーション通信端子が搭載されている EP-7xx、EP-8xxxxであると思われる。 また、カロッツェリアの純正ETC車載器は三菱のOEMで、7xxシリーズの適当なモデルと同一であるようだ。
通信可能と思われるモデルをリストアップすると下記ようになるが、新旧モデル間でコマンド有無があるようなので注意して欲しい。
2006年 EP-406B 0376 2007年 EP-9U77 0402 (実機検証済) EP-9U47N 0404 Panasonic CN-EN802CT 0445 (実機検証済) 2009年 EP-9U79 0471 2010年 EP-9U810V 0519 2012年 EP-9U812V 0546 (実機検証済) 2014年 EP-9U714V 0590 (実機検証済) 2016年 EP-9U716V 0600 (実機検証済)
車載器側通信コネクタ(ヒロセ GT8E-8/2P-2H)
PC接続ケーブルの配線
ETC DSUB9メス -------------------- TxD ------ 2 RxD RxD ------ 3 TxD GND ------ 5 GNDヒロセのコネクタが入手できればそれを使うのが良いが、秋月とかで売っている 2.0mmピッチの汎用ヘッダコネクタを8ピン分切断して使用するのが手っ取り早い。 オークションなどで出ている中古の連携ケーブルを切断して使うのもありだ。
ETCイベントの表示と履歴を読み出すソフトを作ってみた。
信号は RS232Cレベル、非同期 19,200bps, 8bit, Even Parityである。
チェックサム(SUM)は+1番目~LEN-3番目までの合計(16進数 大文字ASCII)の 下2桁である。
(車載器番号要求 'B' 長さ 6の場合)
PC→ETC 0xfa 0x0d [通信要求] ETC→PC 0xf0 0x0d 0x01 0xc2 0x30 0x46 0x32 0x0d [通信可能][通信確認] PC→ETC 0x02 0xc0 0x43 0x30 0x0d [ACK] ← ここまで手続きするとETCの外部通信がオンライン状態になる。 PC→ETC 0x01 0xc6 0x4c 0x31 0x32 0x0d [履歴要求] ETC→PC 0x02 0xc1 0x37 0x46 0x38 0x0d [履歴あり] PC→ETC 0x01 0xc6 0x4c 0x31 0x32 0x0d [履歴要求] ETC→PC 0x02 0xe5 (履歴データー・・・・・・) [履歴] PC→ETC 0x01 0xc6 0x4d 0x31 0x33 0x0d [継続要求] ETC→PC 0x02 0xe5 (履歴データー・・・・・・) [履歴] ・ ・ PC→ETC 0x01 0xc6 0x4d 0x31 0x33 0x0d [継続要求] ETC→PC 0x02 0xc1 0x38 0x46 0x39 0x0d [継続なし]
名称 | 通信方向 | LEN | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | 説明 |
---|---|---|---|---|---|---|---|---|---|---|---|
コマンド・ACK | |||||||||||
通信要求 | PC→ETC | 2 | 0xfa | 0x0d | 通信要求をする。電源投入時はこのコマンドしか受け付けない | ||||||
通信確認 | PC→ETC | 6 | 0x01 | 0xc6 | '1' | SUM | 0x0d | ETCが通信可能かどうかのチェック可能であれば '0'が返ってくる | |||
利用料金確認 | PC→ETC | 6 | 0x01 | 0xc6 | '3' | SUM | 0x0d | 最後に利用した料金のリクエスト。 支払金額レスポンスが返ってくる | |||
車載器番号要求 | PC→ETC | 6 | 0x01 | 0xc6 | 'B' | SUM | 0x0d | ETC車載器番号を読み出す | |||
登録日要求(※1) | PC→ETC | 6 | 0x01 | 0xc6 | 'C' | SUM | 0x0d | 車載器がセットアップされた日付を読み出す。 実装が無い古い機種はコマンド無効レスポンスが返る | |||
カード確認 | PC→ETC | 6 | 0x01 | 0xc6 | 'G' | SUM | 0x0d | カードが挿入されているかチェックする。 無効なカードでも挿入されていれば「あり」が返ってくる。 |
|||
累積金額 | PC→ETC | 6 | 0x01 | 0xc6 | 'H' | SUM | 0x0d | 車載器で利用した累積金額を読み出す。累積金額クリアコマンドで 0にリセットできる。 | |||
累積金額クリア | PC→ETC | 6 | 0x01 | 0xc6 | 'I' | SUM | 0x0d | 累積金額のクリア。 | |||
形式番号要求 | PC→ETC | 6 | 0x01 | 0xc6 | 'J' | SUM | 0x0d | ETC車載器の形式番号を読み出す | |||
機器名要求 | PC→ETC | 6 | 0x01 | 0xc6 | 'K' | SUM | 0x0d | ETC車載器の機器名を読み出す | |||
利用履歴要求 | PC→ETC | 6 | 0x01 | 0xc6 | 'L' | SUM | 0x0d | 最初の 'L'で、レスポンス:履歴あり '7'/履歴なし '5'が返される。履歴ありの場合は もう1度だけ 'L'を送出し、最新履歴を1行取得したのち、その後継続要求'M'を、継続なし '8'を受け取るまで繰り返す。 |
|||
履歴継続要求 | PC→ETC | 6 | 0x01 | 0xc6 | 'M' | SUM | 0x0d | 次の履歴を要求する。 次の履歴が無い場合は レスポンス'8'が返される。 | |||
消音(※2) | PC→ETC | 6 | 0x01 | 0xc6 | '9' | SUM | 0x0d | 音量0 (消音)にセットする | |||
音量1(※2) | PC→ETC | 6 | 0x01 | 0xc6 | 'A' | SUM | 0x0d | 音量1にセットする | |||
履歴SWモニタ(※2) | PC→ETC | 6 | 0x01 | 0xc6 | 'O' | SUM | 0x0d | 本体の履歴SWを押下と同時にPCへデータを転送するのを有効にする。カード挿入時は最終履歴、抜去時は累積金額が転送される。無効に戻すコマンドの実装は無く、電源OFFでリセットするしかない。 | |||
バルクダンプ(※2) | PC→ETC | 6 | 0x01 | 0xc6 | 'R' | SUM | 0x0d | カードの内容(?) 128byteを読み出す | |||
ACK | PC→ETC | 5 | 0x02 | 0xc0 | SUM | 0x0d | 受信確認 ACK。 ETCから送出される頭が 0x01のパケットには ACKを返さなければいけない。 | ||||
メッセージ | |||||||||||
通信確認 | ETC→PC | 6 | 0x01 | 0xc2 | '0' | SUM | 0x0d | 0xfa 0x0dの通信要求を行うと、0xf0 0x0dの次に送出される。 このメッセージのACKを返した時点で、通信がオンラインになる。 このやりとりが完了しないとETCは他のコマンドは受け付けない。 PCは ACKを返さなければならない。 | |||
未挿入警告 (エラー01) |
ETC→PC | 6 | 0x01 | 0xc2 | '1' | SUM | 0x0d | ゲートやお知らせアンテナ通過時にカード未挿入であると送出される。 PCは ACKを返さなければならない。 | |||
カードエラー (エラー03) |
ETC→PC | 6 | 0x01 | 0xc2 | '3' | SUM | 0x0d | カード挿入時、エラーが検出されると送出される。PCは ACKを返さなければならない。 | |||
カードエラー (エラー05) |
ETC→PC | 6 | 0x01 | 0xc2 | '5' | SUM | 0x0d | カードICチップの読み出しエラー。PCは ACKを返さなければならない。 | |||
カード挿入 | ETC→PC | 6 | 0x01 | 0xc2 | 'D' | SUM | 0x0d | カードが挿入されると送出される。PCは ACKを返さなければならない。 | |||
カード取出 | ETC→PC | 6 | 0x01 | 0xc2 | 'E' | SUM | 0x0d | カードがイジェクトされると送出される。PCは ACKを返さなければならない。 | |||
ゲートイン | ETC→PC | 6 | 0x01 | 0xc7 | 'a' | SUM | 0x0d | 料金所入口を正常通過すると送出される。PCは ACKを返さなければならない。 | |||
ゲート通過 エラー |
ETC→PC | 6 | 0x01 | 0xc7 | 'b' | SUM | 0x0d | 料金所ゲートでエラーになると送出される。PCは ACKを返さなければならない。 | |||
お知らせアンテナ 通過 |
ETC→PC | 6 | 0x01 | 0xc7 | 'c' | SUM | 0x0d | お知らせアンテナ通過時送出される。(カードが正常だとこの通知はされないようだ) PCは ACKを返さなければならない。 | |||
ゲートアウト | ETC→PC | 6 | 0x01 | 0xc7 | 'A' | SUM | 0x0d | 料金所出口を正常通過すると送出される。PCは ACKを返さなければならない。 | |||
支払通知 | ETC→PC | 11 | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | 決済が確定すると送出される。PCは ACKを返さなければならない。 |
0x01 | 0xc5 | 料金(ASCII スペース詰め右寄せ) | |||||||||
+8 | +9 | +10 | |||||||||
SUM | 0x0d | ||||||||||
最終履歴(※2) | ETC→PC | 40 | +0 | +1 | 'O'コマンドでSW転送有効後、カード挿入時に履歴SWを押下すると発生する。フィールドの詳細は履歴レスポンスと同一。 PCはACKを返さなければならない。 | ||||||
0x01 | 0xc4 | ||||||||||
+2 | +3 | +4 | +5 | ||||||||
"0108" | |||||||||||
+6 | +7 | +8 | +9 | +10 | |||||||
区分(入) | 番号(入) | ||||||||||
+11 | +12 | +13 | +14 | ||||||||
"0108" | |||||||||||
+15 | +16 | +17 | +18 | +19 | |||||||
区分(出) | 番号(出) | ||||||||||
+20 | +21 | +22 | +23 | +24 | +25 | +26 | +27 | ||||
年(西暦) | 月 | 日 | |||||||||
+28 +29 +30 | +31 | +32 | +33 | +34 | +35 | +36 | |||||
車種 | 料金(ASCII 右寄せ) | ||||||||||
+37 | +38 | +39 | |||||||||
SUM | 0x0d | ||||||||||
累積金額(※2) | ETC→PC | 11 | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | 'O'コマンドでSW転送有効後、カード抜去時に履歴SWを押下すると発生する。PCはACKを返さなければならない。 |
0x01 | 0xce | 料金(ASCII スペース詰め右寄せ) | |||||||||
+8 | +9 | +10 | |||||||||
SUM | 0x0d | ||||||||||
レスポンス | |||||||||||
ハートビート | ETC→PC | 2 | 'U' | 0x0d | 車載器の電源投入後数秒間送出される。 | ||||||
通信可能 | ETC→PC | 2 | 0xf0 | 0x0d | 通信要求 0xfa 0x0dを送ると返ってくる。直後に通信確認メッセージが送られてくる。 | ||||||
登録日(※1) | ETC→PC | 9 | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | C コマンドの返答。 |
0x02 | 0xcc | 年(BCD 4桁) | 月 | 日 | SUM | ||||||
+8 | |||||||||||
0x0d | |||||||||||
カードあり | ETC→PC | 6 | 0x02 | 0xcd | 0x01 | SUM | 0x0d | G コマンドの返答。 | |||
カードなし | ETC→PC | 6 | 0x02 | 0xcd | 0x00 | SUM | 0x0d | G コマンドの返答。 | |||
車載器番号 | ETC→PC | 13 | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | Bコマンドの返答。番号は上位4bit下位4bitのBCDである。 |
0x02 | 0xcb | 車載器番号(BCD 12桁) | |||||||||
+8 | +9 | +10 | +11 | +12 | |||||||
車載器番号 | SUM | 0x0d | |||||||||
型式番号 | ETC→PC | 9 | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | Jコマンドの返答。 |
0x02 | 0xe1 | 形式番号(ASCII) | SUM | ||||||||
+8 | |||||||||||
0x0d | |||||||||||
機種名 | ETC→PC | 13 | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | Kコマンドの返答。 |
0x02 | 0xe2 | 機種名(ASCII) | |||||||||
+8 | +9 | +10 | +11 | +12 | |||||||
機種名(ASCII) | SUM | 0x0d | |||||||||
履歴 | ETC→PC | 46 | +0 | +1 | 'L'、'M'コマンドの返答履歴情報。 "0108"は国番号? 料金所区分と番号は道路公団のHPに漢字名との一覧が掲載されている。 車種 001:普通車 002:大型車 003:特大車 004:中型車 005:軽二輪 |
||||||
0x02 | 0xe5 | ||||||||||
+2 | +3 | +4 | +5 | ||||||||
"0108" | |||||||||||
+6 | +7 | +8 | +9 | +10 | |||||||
区分(入) | 番号(入) | ||||||||||
+11 | +12 | +13 | +14 | ||||||||
"0108" | |||||||||||
+15 | +16 | +17 | +18 | +19 | |||||||
区分(出) | 番号(出) | ||||||||||
+20 | +21 | +22 | +23 | +24 | +25 | +26 | +27 | ||||
年(西暦) | 月 | 日 | |||||||||
+28 | +29 | +30 | +31 | +32 | +33 | ||||||
時 | 分 | 秒 | |||||||||
+34 +35 +36 | +37 | +38 | +39 | +40 | +41 | +42 | |||||
車種 | 料金(ASCII 右寄せ) | ||||||||||
+43 | +44 | +45 | |||||||||
SUM | 0x0d | ||||||||||
コマンド無効 | ETC→PC | 6 | 0x02 | 0xc1 | '2' | SUM | 0x0d | 存在しないコマンドを送ると返ってくる | |||
SUMエラー | ETC→PC | 6 | 0x02 | 0xc1 | '3' | SUM | 0x0d | コマンドのチェックサムエラー | |||
履歴あり | ETC→PC | 6 | 0x02 | 0xc1 | '7' | SUM | 0x0d | 最初の 'L'コマンドの返答。 | |||
履歴なし | ETC→PC | 6 | 0x02 | 0xc1 | '5' | SUM | 0x0d | 最初の 'L'コマンドの返答。 | |||
継続データなし | ETC→PC | 6 | 0x02 | 0xc1 | '8' | SUM | 0x0d | 'M'コマンドの返答。 | |||
支払通知 | ETC→PC | 11 | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | '3' コマンドの返答。 |
0x02 | 0xc5 | 料金(ASCII スペース詰め右寄せ) | |||||||||
+8 | +9 | +10 | |||||||||
SUM | 0x0d | ||||||||||
累積金額 | ETC→PC | 11 | +0 | +1 | +2 | +3 | +4 | +5 | +6 | +7 | 'H' コマンドの返答。 |
0x02 | 0xce | 料金(ASCII スペース詰め右寄せ) | |||||||||
+8 | +9 | +10 | |||||||||
SUM | 0x0d | ||||||||||
バルクダンプ(※2) | ETC→PC | 134 | +0 | +1 | +2 | +3 ・・・・ | +131 | +132 | +133 | 'R' コマンドの返答 | |
0x01 | 0xb6 | 0x80 | カードデータ? (128byte binary) |
SUM | 0x0d |