2012-02-13 8 views
0

私はGTK + 2 GUIを使って、CでLinuxプラットフォームのアプリケーションを構築しています。私は、リアルタイムクロックをHH:MM:SS(2番目の値に正確である必要がある)を表示したままにして、GTK_ENTRYフィールドにユーザが入力した特定の時刻にトリガされるさまざまな機能を持たせる必要があります。リアルタイムクロックを処理する最良の方法は?

私はこれを行うための最良の方法を研究していて、人々が時間を監視するためにGThreadスレッドを使用すると答えたところで同様の質問を見つけましたが、詳細は見つかりませんでした。

何度も何度も時間をチェックする無限ループを含む関数をスレッドに送信できますか?どういうわけか、それは正しいようではないか、それを処理する最善の方法です。

私は本当に誰でも提供できる具体的な、またはこの質問に答えるかもしれないリソースへの方向を感謝します。

ありがとうございました!

+0

あなたは、このようなタイマーが最も現代的なLinuxソフトウェアがタブレットのような低消費電力デバイスには適していない理由の1つとして広く悩まされていることに注意する必要があります。 –

+0

ほとんどの客観的なcとiOSの背景からくると、あなたが言っていることを確かに理解してください、そして、これは物事を行う最もエレガントで効率的な方法ではありません。しかし、このプロジェクトは非常に特殊な組み込みタッチスクリーンパネルデバイスのためのものです。これは、私の手がオプションに関しては多少結びついていることを意味しますが、普遍的な意味で使用されることについて私が本当に心配する必要はないことを意味します。しかし、誰かがより洗練されたお勧めのソリューションを持っていれば、私は完全に示唆を得ることができます。 – DrRocket

+0

OK、それは完璧な意味があります。私は、不必要なタイマーを汎用アプリに入れることについて注意する必要がありました。 –

答えて

0

g_timeout_add()を使用してglibタイムアウトハンドラを追加するだけです。例えば、1秒半の時間を使うのであれば、うまくいくはずです。ハンドラコードでは、表示された時間をリフレッシュするために必要なウィジェットの操作を行います。これは、GtkLabel用のテキストを書式設定するのと同じくらい簡単かもしれません。

もちろん、実際のクロックソースとしてタイムアウトコールバックの「ティッキング」を使用することはお勧めしません。通常のAPIを使用して、各コールバックの時刻を確認する必要があります。

+0

これは間違いなく私が探しているようですが、スレッドを扱うよりもはるかに簡単です!今日の午後に試してみる。ありがとう! – DrRocket

+0

これらの機能に関するドキュメントを必ずお読みください。それらは、リアルタイムクロックではなく単調クロックに基づいています。 http://developer.gnome.org/glib/stable/glib-Date-and-Time-Functions.html#g-get-monotonic-time – Fred

+0

@Fred:OPがアドバイスに従う限り重要です。 'clock_gettime'などと呼ばれ、タイマーイベントのカウントに基づいて時間を維持しようとはしません。 –

関連する問題