2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

CAPL - getLocalTimeで現在日時を取得する

Posted at

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開発する上で、頻出ではないかもしれませんが、重要な日時情報。
自由に使えるようになると、開発・評価の幅が広がるかもしれません。

コメントお待ちしています!

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?