構想
当初の構想では、Sメーター表示部をペイント等の描画ソフトで作成して、Visual C#のフォームのPictureBoxに貼り付けて、メーターの針を入力レベルに応じて
動かそうとしました。
メーター指針を動かすには、前の針位置を消し(背景色で塗りつぶす)て新しい針位置の画面をアニメーションの様に描いていきます。この時メーター表示部も消えるので、メーター指針を描く時に、
表示部を再表示する必要がありますが、この再表示がどうしてもうまくできません。
新たな構想として、Sメーター表示部もC#のコードで記述して、針の移動に伴って表示部もその都度描くようにしました。ソフトの処理時間がかかる気がしますが、
とりあえずこの方法でやってみます。
画面を作ってみる
SDRのフォーム画面は前回作成したものにSメーター部を新規に追加しました。
フォーム上にPictureBox2を配置し、そこにSメーターの背景を描いていきます。PictureBox1はSDRStudyのスペアナ表示で使っているので、ここではPictureBox2
として作成します。背景は単純な直線の組み合わせなので、ペンの色、太さ、フォントのサイズ等を指定してDrawLineメソッドで描いていけばOKです。
Sメーター部詳細 デザインはPowerSDRのメーター部デザインを参考にしました。サイズは133x35ピクセル、目盛は等間隔で割り付けましたが、実際の入力
レベルとS強度の変換は計算が必要になりそうです。 SDR S Meter demo(動画 YOUTUBEへ)Sメーターの動きの様子を動画にしてみました。
|
ソフトの説明
ソースリストの関連部分のみを抜粋したものを参考まで
System.Threading.Thread.Sleep(20);のコードは20msのwaitルーチンで、この時間とメーター移動ピクセル値を調整することでメーターの動きの滑らかさが
かわります。
今後の進め方
次回はVisual C#〜PIC間のシリアル通信にTRYの予定。SDR側にはアナログVFOを配置するので、その周波数データーをPC側に送って表示する狙いです。