LoginSignup
0
0

More than 1 year has passed since last update.

【C++Buider】ミリ秒をTDateTimeに変換する方法

Posted at

サンプリング周波数が500Hzの場合、2ミリ秒ごとにTChartにデータをplotしたい。

このときに、データの個数から累積秒数を算出して、それをもとにplotする時刻を算出したいのに、EncodeTimeではミリ秒の有効な値は0~999となっているため変換時にエラーになってしまう。

この方法でやると累積ミリ秒数を時、分、秒に計算して分割してからTDateTimeを作成しないといけなくてめんどくさい。

参考:日付および時刻のサポート

TDateTimeから累積ミリ秒を取り出すのにはMilliSecondOfという便利な関数があるのにその逆は無いのかと探していたところ、IncMilliSecondを使えばできることが分かりました!

例えば、サンプリング周波数が500Hzで測定した場合、1データの間隔は1000/500=2msecなので、
n番目のデータの累積時間は 

1000/500*n [msec]

となるので、
測定開始からの経過時間は、

TDateTime logtime =  IncMilliSecond(TDateTime(0,0,0,0),1000/500*n);

で算出することができました。
よかったよかった。

こんな感じでChartに追加。

for(int n = 0 ; n < datalen ; n++){
  chart->Series[0]->AddXY(IncMilliSecond(TDateTime(0,0,0,0),1000/500*n),data[n]); 
}

相対時刻ではなく絶対時刻でChartに表示させたい場合は、TDateTime(0,0,0,0)のところを測定開始時刻に変えるだけでよい。

0
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
0
0