This is sample.
このページは
イルミネーション制御用のコードページです。
使い方の説明があります。
概要
LocalFileSystem利用なのでLPC1768専用と思ってください。
"local/test.csv"ファイルが作成されます。
USBキーボードの利用が絶対
です。
PCとのSerial通信も必要です。
エスケープシーケンスをちょっと利用してるので、WindowsはTeraTerm、Macはscreenコマンドをオススメします。
どんなプログラム?
プログラムの構造は 基本は2つのモードを's'キーによって切り替えて使います。(常に's'キーが有効です。)
モード | 内容 | 有効なキー |
---|---|---|
入力モード | 数字の入力、表示、保存 (起動時はこれ) | 's','0-9','\b','\r','\n' ( 'd' / 'y' ) |
表示モード | 履歴の表示のみ。キー入力で次々表示 | 's','\r','\n' |
通常の運用では入力モードでの動作になります。
キーボードのコードは
- '\b':バックスペース(BS)
- '\r','\n':エンターキー(LF:'\n'==0x0a)です。なんとなく'\r'足しました。
モードの説明
- 入力モード
- 数字(0-9)を入力するとセットされます。(2,1,3と入力すると「13」、3,0,2と入力すると「2」となります。)
- バッファが空のときにはエンターキー'\r''\n'の入力は無視されます。
- エンターキー('\r','\n')を入力すると
- 1回目:確認用に表示します。(prenote)
- 2回目:(確定され)表示・保存されます。(show,save)
- 3回目:バッファがクリアされ待機状態になります。(Delete)
- (4回目:バッファは空なので無視されます。)
- 'd'を入力するとファイル削除の確認をしますので(Remove)
- 'y'キーで削除
- その他のキーで取り消し
- BackSpace'\b'キーでバッファクリア(Delete)
- 表示モード
- エンターキー('\r','\n')を入力すると
- 過去の保存済み数字(saved)を古い順番に表示します
- すべて表示すると"EOF"(End Of File)と表示され入力モードに戻ります。
- エンターキー('\r','\n')を入力すると
再起動後にファイルがある場合はそのファイルに追加編集されます。(消したい場合は入力モードで削除して)
警告
表示モードの途中で's'を入力すると、再び表示モードになったときに途中からの表示になります。
これでいい?
グローバル変数としてフラグ2つ(delete,remove)、数値2桁、数値の桁位置指示、があります。
Quote:
基本的にテストページなので好きなだけいじってください。
不明な点は福田まで。
考慮すべき点
- 要相談
- テンキーの場合のキー割当はどうする?
- 既に保存した数値(already exiting!)も表示(prenote,show)まではするべき?(saveだけしない)
- ハードウェアのソフトウェアインターフェースが不明なのでint[2]に(ASCII)グローバルで実装中。表示関数(show)は"void show(int);"がいい?
- いやいや、10進数表示だからそのままでいい(by福田)
- 表示モード中のモード切り替えに対して、ファイル位置を戻すべき?
- 表示モード中に次々表示されるが、戻ることも可能にする?
- Enterを間違えて2回押すと確定されちゃう。(4回連続入力に対しては無視)
- ソフトウェアの気になる点
- クラス化の必要性はある?(グローバルむき出しと構造が細かいのは精神衛生的に……)
- 10進数2桁限定なので、3桁に対応させるべき?(対応済みコードあり)
- (表示モード中)160行目はshow();に対応するためにもshowだけは引数ありshow(int *)or(int)にしたほうがいい。(prenoteにも渡すべきなら同様に)
- 保存、読込フォーマットは"%02d\r\n"ですが何か?(1->"01\r\n"、23->"23\r\n"など)
- デバッグ用にUSBシリアルに対応させる(切替仕様にす)べき?
実際の動作
ログの内容です。
[USB_INFO: /src/USBHost/USBHost/USBHost.cpp:158]New device connected: 10002c6c [hub: 0 - port: 1] [USB_INFO: /src/USBHost/USBHostHID/USBHostKeyboard.cpp:120]New Keyboard device: VID:04fe PID:000d [dev: 10002c6c - intf: 0] [connected] set :'12' create file "/local/test.csv" prenote :'12' show :'12' saved :'12' Delete :'12' set :'45' prenote :'45' show :'45' saved :'45' Delete :'45' set :'67' set :'65' set :'45' already exiting! Delete :'45' set :'45' already exiting! Delete :'45' mode change:Show 12 45 EOF auto change:Number Do you want to remove File? [y/n] "/local/test.csv" Removed"/local/test.csv"