2017-01-30 409 views
0

ミリ秒単位でシステム時刻を取得しようとしました。 Linuxプラットフォームでは問題なく動作しますが、VXworksでは動作しませんでした。 vxworksにも同様のソリューションが必要です。vxworksのc/C++でシステム時間をミリ秒単位で取得する方法

#include <sys/time.h> /* It seems this is not available on vxworks */ 
#include <iostream> 
using namespace std; 
int main() 
{ 
    struct timeval tp; 
    gettimeofday(&tp, NULL); 
    unsigned long int ms = tp.tv_sec * 1000 + tp.tv_usec/1000; 
    cout<<ms 
    return 0; 
} 
+2

次のコードは、トリックを行う必要がありますか?どのように機能しませんでしたか? –

+0

'tv_usec' *マイクロ秒かミリ秒ですか?名前はミリ秒間、 'tv_msec'になると思います。 –

+0

これは、vxworksの#include のコンパイルエラーを示します。 – Afgan

答えて

-1

ミリ秒で現在の時間を与えるだろうtickget()

(1000 * tickGet()/sysClkRateGet(1000))を試してみてください。これに基づいてsource

+1

ミリ秒の分解能を保証するには、sysclkRateSet(1000)を呼び出して、システム・ティックがミリ秒ごとに更新されるようにする必要があります。それ以外の場合、計算された時間はあまり正確ではないかもしれません... –

+0

Yess so thanks that DG: –

+0

これはブートからの時間を示します。そしてsysClkRateに依存して、あなたが期待するよりも早くラップするかもしれません。 – mjs

1

clockLibの機能をご覧ください。動作しませんでした何

#include <vxworks.h> 
#include <timers.h> 


struct timespec t; 

if (clock_gettime(CLOCK_REALTIME, &t) == OK) 
{ 
    /* t.tv_usec and t.tv_sec are valid */ 
} 
+0

ありがとうございました。あなたのソリューションは正常に動作しています。 – Afgan

関連する問題