• 締切済み

タイマーをつかったリアルタイム性の実現

組込みソフトウェアにおける、タイマーを使ったリアルタイム性を実現したソースコードとはどのような感じになるのでしょうか?サンプルコードなどあれば載せていただきたいです。できればjavaで記述されたものだと自分も理解しやすいです。おねがいします。

  • Java
  • 回答数1
  • ありがとう数4

みんなの回答

  • chie65535
  • ベストアンサー率43% (8524/19375)
回答No.1

タイマーで行う場合は、以下のようにします。 ・「状態を保存しておくメモリ」を「1つ前の状態」と「最新の状態」の2つ用意します。 ・初期化ルーチンで、初期化時のハードウェアの状態を取り込んで、2つとも「今の最新の状態」にします。 ・タイマーで起動されたイベントプロシージャで「最新の状態メモリ」を「1つ前の状態メモリ」にコピーしてから「最新の状態メモリ」に、今のハードウェアの状態を取り込みます。 ・次に「最新の状態メモリ」と「1つ前の状態メモリ」を比較していって、違いがあったら(変化があったら)、違う部分をディスプレイ機器に出力します。 ただし、この方法では「タイマー間隔より短いワンショットトリガを検知出来ない」ので、普通は、こういう書き方はしません。 例えば、次のタイマーイベントが来る前に「0⇒1、1⇒0」と言う連続した変化があると、結果的に「前回は0、今回も0」になって、変化したのを検知出来ません。 だたし「一定の長さより短い状態変化はノイズとして無視する必要がある」って場合は「タイマー間隔より短い変化は検知できない」ってのを利用して、上記のようにタイマーで処理します。 リアルタイム性を重視して、タイマーで処理しない場合は、以下のようにします。 ・「状態を保存しておくメモリ」を「1つ前の状態」と「最新の状態」の2つ用意します。 ・初期化ルーチンで、初期化時のハードウェアの状態を取り込んで、2つとも「今の最新の状態」にします。 ・次に「ハードウェアに変化があったら割り込みが入る」ように割り込みを設定します。 ・割り込みで起動されたイベントプロシージャで「最新の状態メモリ」を「1つ前の状態メモリ」にコピーしてから「最新の状態メモリ」に、今のハードウェアの状態を取り込みます。 ・次に「最新の状態メモリ」と「1つ前の状態メモリ」を比較していって、違いがあったら(変化があったら)、違う部分をディスプレイ機器に出力します。 この方法では「ハードウェアが変化して割り込みが来たら、最新のハードウェアの状態を取り込む」ので「割り込み発生から状態取り込みまでの非常に短い間」だけが「盲点」になるので、それより長いワンショットトリガを見落とす事はありません。 通常、組み込みソフトウェアでタイマーを使うのは「ウォッチドックタイマー」のみで、たいていは割り込みで処理します。 ウォッチドックタイマーは「正常にプログラムが動作している場合には、一定期間内に必ず通る場所」で「タイマーの初期化」をして、正常時にはタイマー割り込みが来ないようにします。 タイマー割り込みが来た場合は「プログラムがどこかでハングアップしている」などで異常な状態なので、ソフトウェアを再起動(リセット)します。

関連するQ&A

  • リアルタイムチャット

    リアルタイムチャットをPHPで作りたいと思っているのですが、実現可能でしょうか? JAVAアプレットを使用したものなら実現可能なのですが PHPで作りたいんです。 もちろんブラウザを一定時間ごとに更新というのはなしでお願いします。 何かいい方法あれば教えてください。

    • ベストアンサー
    • PHP
  • Twitterのダイレクトメッセージ取得について

    Twitter上の自分で作成した特定のアカウントのダイレクトメッセージの取得をしたいと考えています。 JAVA(Twitter4J)を利用して実現することを検討していますが、 具体的にどのようなソースコードで実現可能でしょうか。 サンプルなどございましたらご教示下さい。

    • ベストアンサー
    • Java
  • ソースコードの入手方法

    ただいま独学でjavaを勉強しています。巷にあるプログラミングのテキスト、教本を見ていると『言語になれるコツはソースコードをたくさん読んで理解すること!』なんて書いてありますけど、そのソースコードってどこにあるんですか?また、どうやって見るんですか? HTMLのソースコードならネット上のHPは右クリックしてすぐにでも見れますけど、javaのソースコードは市販のテキストのサンプルコードでしか見たことがありません。どなたかjavaのソースコードの入手方法を教えてください。

    • ベストアンサー
    • Java
  • JavaScriptでタイマーを表示する

    JavaScript(もしくはjqueryなど)でカウントダウンタイマーを作りたいと思っています。 機能はシンプルなもので大丈夫です。3分くらいカウントダウンできれば良いです。 具体的なサンプルコードや書いてあるサイトを教えて頂ければありがたいです。 どうぞよろしくお願いします。

  • Androidアプリをlua言語から呼び出す

    PC上であるソフトウェアを実行して一定条件を満たした時に、Androidアプリを起動したい。 そのソフトウェアにはluaでプラグインを使える仕様になっていて、luaで書いているのですが、 どのような記述になるのかさっぱりです。 イメージとしては if 条件 then Androidアプリ呼び出し end みたいな感じになると考えています。 Androidアプリはjavaで記述しているので、要はそれを実行できるようにしたいんですが、 まずluaでAndroidアプリ呼び出せるのか。 呼び出せるとすればどのようなコードになるのか、サンプルを教えていただければと思います。 よろしくお願いします。

  • TwitterのTOP画面にあるような、「リアルタイム情報の表示」の実

    TwitterのTOP画面にあるような、「リアルタイム情報の表示」の実現方法に関して。 Twitter http://twitter.com/ こんにちは。よろしくお願いします。 上記の通り、TwitterのTOP画面にある、各カテゴリ~の「リアルタイム結果」の表示に関してお勉強中です。 ソースを読み込んでザクッと調べてみたり、検索かけてソレらしいものを探してはみたのですが、タイムリミット的にはそろそろちゃんとしたサンプルを元に試しておきたいと思っています。 (出来れば明日試したいと思っているため。 ・ソースを読んで考えてみた結果 とりあえず、jQueryあたりを使い、<ol id="timeline" class="statuses"></ol>に結果を返しているようには思うが、 どこからどういう処理が流れてそうなるのかが追いきれていない。 ・ソレらしいものを探してみた結果 Twitterのプラグイン。 http://juitter.com/ こんな感じで、「Twitterのプラグイン」は見つかりますが、あくまでTwitter用。。。 コレを自分の持ってるWebページに組み込めば、Twitterのつぶやきが同じように表示できるのでしょうが、 Twitterからの情報を表示してもしかたありません。(欲しいのは、Twitterの情報ではなく、このシステムの動きだけ。。。 ダウンロードできるプラグインファイルを改良して、流用するのは現実的なのでしょうか。。? (「新着データを持ってくる場所の指定やら方法」あたりを上手く変えればなんとか。。。? 予定としては、 開発したシステムのトップページ領域に、そのシステムに書き込まれた新着情報を、データベースアクセスでも、Webページアクセスした結果の文章を引っこ抜いてくるでも 何でもいいので、TwitterのTOPページにあるような、「リアルタイム情報の表示」を実現したいと思っています。 随分と、とんちんかんな状態の質問ですが、ざっくりと解説できる方、サンプルをご存知の方など、ご教示いただけると助かります。 よろしくお願いしますm(_ _)m

  • 「リアルタイムOS」ってなんですか?

    ただいま、就職活動中です。 制御系の開発をする会社を探していると、リアルタイムOSって 記述がありました。自分なりに調べたのですが、よくわかりません。 1)どんなものなのか 2)何に使うのか ご存知な情報をよろしくお願いします。

  • クラス内で自分自身をインスタンス化

    javaで開発をしております。 あるソースコードに、クラス内のメソッドで自分自身をインスタンス化しているものを見ました。初めて見たのですが、どういった場合に使われるのでしょうか。 public class Sample { public Sample hoge() { Sample sa = new Sample(); //何らかの処理 return sa; } }

    • ベストアンサー
    • Java
  • iアプリで動作するキッチンタイマーのソースを探して

    検索しましたが、携帯でダウンロードできるものしか見つかりません。 キッチンタイマーというのは設定した時間放置すると音又はバイブがなるようなものです。 イメージとしては以下のサイトの感じのタイマーのソースが欲しいです。 http://landpair.sakura.ne.jp/iapp/Timer/Timer.html http://geoquake.jp/i/appli/Timer/ http://www5b.biglobe.ne.jp/~smtk/Software/iappli/Timer2.htm よろしくお願いします。

  • nkfで全ファイルを変換する

    ネットで配布されているサンプルのJavaのソースコードが あるのですが、それが全部EUCではないので、EUCに 変換したいのです。 aというディレクトリの中に01から16、Rensyu というディレクトリがありその各々のディレクトリの 中に.javaとついたサンプルコードが入っています。 これをいっぺんに変換するのに nkf -e * > sample などとすると一つのファイルに全部変換後の ファイルがかかれてしまうので、 たとえばSampele1.javaだったらそれと同じ 名前のファイルに書き出すか、また Sample1_e.java というファイルに書き出したいです。 どうしたらいいでしょうか?おねがいします。