2009年 秋期 応用情報技術者試験 問7
ディジタルフォトフレームに関する次の記述を読んで、設問1〜3に答えよ。
S 社は、低価格のディジタルフォトフレームを開発することになった。このディジタルフォトフレームは、外部メディアに保存されている静止画像を表示するもので、マイコンを搭載しており、本体は画面、電源スイッチ、左キー、右キーなどで構成されている。
【ディジタルフォトフレーム仕様】
(1) 外部メディアから画像データを読み込み、デコードしてから表示データを画面に表示する。
(2) 画像の表示切替えにはタイマで起動する自動切替え及びキー操作による手動切替えの二つの方法を用いる。
・自動切替えでは、外部メディアのファイルパスの昇順で表示切替えを行う。表示データは5秒間画面に表示する。この間、次に表示する1画像分の画像データの読み込み及びデコード(以下、表示準備という)を行う。電源を入れると、自動切替えを開始する。
・手動切替えでは、左キー押下で現在表示中の画像の前の画像、右キー押下で次の画像に切替えを行う。画像を5秒間画面に表示して、キー入力がなければ、自動切替えを開始する。
(3) 次に表示すべき表示データを用意できない間は、砂時計画像が表示される。砂時計画像の表示データはあらかじめROMに格納してある。
【ソフトウェア構成】
ディジタルフォトフレームの割込みハンドラ一覧を表1、タスク一覧を表2に示す。タスクには優先度があり、値の小さい方の優先度が高い。
名称 | 主な機能 |
---|---|
キー | 左キーまたは右キーを押下することに実行され、キーイベントを送信する。 |
タイマ | 設定時間を経過すると実行され、タイマイベントを送信する。 |
名称 | 主な機能 | 優先度 |
---|---|---|
メイン | ・表示対象の画像及び画像の表示順序を管理する。 (詳細は【メインタスクの処理】を参照) | 1 |
ファイル | ・外部メディアから画像データを読み込む。 ・読み込み速度は2Mバイト/秒である。 | 3 |
デコード | ・読み込んだ画像データを表示データにデコードする。 ・1Mバイト当たりのデコード時間は20ミリ秒である。 | 2 |
タスク間通信はイベントを使って行われる。各タスクにはイベントキューがあり、イベントの情報はいったんイベントキューに蓄積される。イベントキューには上限があり、上限を超えたイベントは破棄される。イベント一覧を表3に示す。
名称 | 説明 |
---|---|
キー | ・キーが押下されたことを通知する。 ・キー割込みハンドラからメインタスクに送信する。 ・左キー、右キーの情報を渡す。 |
タイマ | ・タイマの設定時間が経過したことを通知する。 ・タイマ割込みハンドラからメインタスクに送信する。 |
読込み要求 | ・画像データの読み込みを要求する。 ・メインタスクからファイルタスクに送信する。 ・ファイルパスを渡す。 |
読込み完了 | ・画像データの読み込みが完了したことを通知する。 ・ファイルタスクからメインタスクに送信する。 ・ファイルパス、画像データのポインタ、読み込んだサイズを渡す。 |
デコード要求 | ・画像データから表示データへのデコードを要求する。 ・メインタスクからデコードタスクに送信する。 ・ファイルパス、画像データのポインタ、サイズを渡す。 |
デコード完了 | ・画像データから表示データへのデコードが完了したことを通知する。 ・デコードタスクからメインタスクに送信する。 ・ファイルパス、表示データのポインタ、サイズを渡す。 |
【メインタスクの処理】
メインタスクでは、次の処理を行う。
(1) 表示データを所定の画面表示用メモリ領域に格納することで、画面に表示する。メインタスクの処理時間は非常に短いので、メモリ領域に格納後、すぐに次の処理に移る。
(2) 自動切替え及び手動切替えを制御する。自動切替え及び手動切替えの動作を表4に示す。
名称 | 動作 |
---|---|
自動切替え | ① タイマイベント受信後、表示データがなければ、画像データの読込み及びデコードを行う。 ② デコード後の表示データを画面表示用メモリ領域に格納後、タイマ(5秒間)をセットする。 ③ 次の画像の表示準備を行う。 |
手動切替え | ① キーイベント受信後、タイマのセットを解除する。 ② 画面に表示する画像データの読込み及びデコードを行う。 ③ デコード後の表示データを画面表示用メモリ領域に格納後、タイマ(5秒間)をセットする。 |
【シーケンス】
自動切替えのシーケンスを図1、手動切替えのシーケンスを図2に示す。
【ファイルサイズの検討】
画像を5秒間表示している間に表示準備を完了させることができるファイルサイズの上限について検討した。
読み込むファイルサイズをA(Mバイト)とすると、読み込み時間はe秒で、デコード時間はf秒である。したがって、eとfの合計が5秒以内となるファイルサイズはgMバイト以下となる。