SCIP データプレイヤー

上村聡文

注意: この仕様書の完成までには、数回の改変が予定されており、まだ未完成です。


* SCIP データプレイヤー
----------------------------------------------------------------------
このアプリは、テキストで記録された URG との通信データを 2D 表示するためのツール。



* 操作
----------------------------------------------------------------------
URG データ閲覧に関する動作として、

「次データ」
「連続で再生」

の２つの操作を持つ。
GUI のボタンとして、機能を提供する。



* 動作の仕組み
----------------------------------------------------------------------
受信データにおいて、必要なデータのみを取り出して処理する。
データフォーマットは正常とし、データの区切りとして、改行が２つ続いているとする。

以下、処理内容

- GD, GS, MD, MS 形式の受信ログから、2D の距離データ画像を生成する。

- PP があれば、距離データの変換にそのパラメータを用いる
  PP がなければ、コンボボックスから選択された URG のパラメータを用いる。

- 読み出したテキストデータを、URG の距離データに変換する方法は、未定
  - Connection 形式で距離データの応答を返させる



* 表示 GUI
----------------------------------------------------------------------
GUI コンポーネントの候補としては、

- 次データ ... 次の URG データを表示する
- 連続再生 ... 連続で表示する

- 再生するファイルの表示フォーム
- 再スキャン ... データの再読込。最初からデータを閲覧するときにも使う

くらいかな？



* ファイル名の管理について
----------------------------------------------------------------------
QLineEdit や QSettings では QString で管理し、
実際にファイルを読み出すときには、std::string として扱う。



* ファイルからのログデータ読み出しについて
----------------------------------------------------------------------
std::ifstream を保持しておき、
std::string で行毎に１つ分の応答を読み出す。

保持しておくのは、

- 読み出したデータのまとまり
- タイムスタンプ (GD, GS, MD, MS の場合)

とする。
あらかじめデータを読み出しておくことで、Next ボタンの enable, disable が
適切に管理できる。

また、再読み出しができるようにすべき。



* 読み出したデータの UrgCtrl への反映について
----------------------------------------------------------------------
Connection を UrgCtrl に登録する。
CustomConnection クラスを用意し、読み出したデータを CustomConnection に
セットした上で、Urg の制御クラスに読み出させる。



* データの連続再生について
----------------------------------------------------------------------
タイムスタンプを取得し、現在表示しているデータ値と、
次のデータのタイムスタンプ値までの間隔を計算する。

以降は、タイマーイベントのハンドラにおいて、

- 表示データの更新
- 次の待機時間をセット

を繰り返す。
