余っているAndroidスマホをオシロにしよう!
初めまして、わたしはヒラサカと申します.自己生成した波形データを表示させるアプリをKotlinで作っている初心者です.でもなかなかうまくいきません.書籍を読んでも大して参考にならないし、ネットの情報を真似て試行錯誤する日々です.
右のキャプ画面のように電圧軸はなんとか実装しました.
時間軸はTriggerを未実装なのでまだあまり進んでません.
オシロの設定パラメータはいろいろありまして、波形表示だけでもざっとこんなのが必要です.
V/div、Trigger ch、Trigger電圧、Offset電圧、Sec/div、ADCサンプリング周波数、ADC bit数、表示エリアXY寸法、ch色
さらにこれらがch共通とch別に分類されます.
表示パラメータですから大域変数的に運用したいのだけれど、Java/Kotlinなので大域変数は使えないし#defineすら無いんじゃね? その結果Objectがあっちゃこっちゃに分散しちまって初期設定すらグダグダになってます.
追記:android.app.Application でグローバル変数みたく扱う手段が用意されているらしいです
おおまかな構造は、
・ボタンやseekbarを記述するMain activity
・波形表示するCanvas
・波形データをscaling等するobject
これらObjectが隔離されているのでややこしくなってる.
土台からRefactoringが必要でぇす.作り直しが必要でぇす.
UI的にはseekbar周りの苦労が多いです.ボタンでサイクリックにch切り替えしたり、10秒無操作で表示を消す、ボタンclickで表示復旧 とかしてるのでcodeの行数が増えて見づらい上にbugりやすい.
あと、生のADC波形データは8bit配列で、それをスマホ画面サイズにFloatでscalingするのですが、波形データをfor文で何度も上から下までなめると処理が遅くなって動きがカクカクします.for文1発でやった方が動きが滑らかになりんす.パソコン並みの処理速度があるだろうとか思ってるとそうでもないですね.
そうだ、なぜか点線を描けてない.
かしこ