CANにおける日時情報って?
ご存知の通り車載のCANバス上には様々なメッセージが流れていますが、
その中でも重要な情報のひとつに日時情報があります。
データを記憶したときのタイムスタンプとしていっしょに覚える、時間の同期として使う。いろいろな用途があるかと思います。
送り主は時計機能を持ったECU。受け手はその情報が必要なECUです。
日時情報が必要なときって?
前項にある、「受け手のECU」を開発しているときです。
開発中、通常はCANoeなどのCANモニタを使って、ECU単体を評価します。
このとき、送り手ECUを模擬し、日時情報を送信してあげる必要があります。
日時情報の取得の仕方
CAPLが標準提供しているgetLocalTime()関数を使いましょう。
引数には要素を9個持ったlong型配列を渡します。戻りとして、引数にお使いのコンピュータのシステム日時が格納されます。
配列の各バイトにはそれぞれのデータが格納されます。例を見てみましょう。
long tm[9];
getLocalTime(tm);
tm[0]; /* 秒(0-59) /
tm[1]; / 分(0-59) /
tm[2]; / 時(0-23) /
tm[3]; / 日(1-31) /
tm[4]; / 月(0-11) /
tm[5]; / 年(1900年からの相対年数) */
6番目の年だけ注意が必要です。2019年の場合、119が格納されます。
配列7~9番目にも何かしら格納されるのですが、使ったことが無いので割愛します笑
気になる方はCANoe等のヘルプページをご覧ください。
まとめ
今回は、getLocalTimeでの日時取得方法をご紹介しました。
CAN開発する上で、頻出ではないかもしれませんが、重要な日時情報。
自由に使えるようになると、開発・評価の幅が広がるかもしれません。
コメントお待ちしています!