昨日から、ニューイヤーパーティに出ているけど、結構閑散としている。 期間が延びたせいもあるかもしれないが、やっぱり局数が減っているのかな。 144MHzと430MHzのCWで、2日間で8局。 このペースで4局/日でいけば20局はクリアできそうだけど、どうなることやら。
中々進まないFT-991Aの制御プログラムだが、ぼちぼちと..。
連想配列を実装するためにDictionaryクラスを使えばいいことが判ったけど、ネットにある情報では、TValueのところは単独の変数になっている。 扱いたいデータは、バンドとモード毎に設定されている各種のパラメータなので、クラスにしたい。 自前クラスを値として使えるか試してみた。
まずは、クラスの定義
1 2 3 4 5 6 7 8 |
public class bandmode_params { public int freq { get; set; } public bool narrow { get; set; } public byte preamp { get; set; } //0:IPO 1:AMP1 2:AMP2 public bool att { get; set; } public byte width { get; set; } } |
bandmode_paramsというクラスを作成した。 プロパティとして、周波数、フィルター幅、プリアンプ、アッテネータの状態を保存することにした。
これで、Dictionaryクラスを定義する。
1 2 3 4 5 6 7 8 9 10 11 |
private Dictionary<string, bandmode_params> old_params; private void Form1_Load(object sender, EventArgs e) { old_params = new Dictionary<string, bandmode_params>() { {"80CW", new bandmode_params{freq = 3510000, att = true, narrow = true, preamp = 0, width = 0}}, {"80SSB", new bandmode_params{freq = 3540000, att = true, narrow = false, preamp = 0, width = 0}}, {"40CW", new bandmode_params{freq = 7013000, att = true, narrow = true, preamp = 0, width = 0}}, {"40SSB", new bandmode_params{freq = 7070000, att = true, narrow = false, preamp = 0, width = 0}}, }; |
とりあえず、3.5MHzと7MHzのCWとSSBのデータしか用意していないが、これにアクセスするためには、
1 |
var param = old_params["40CW"].freq; |
と書くことにより、7MHzCWの周波数にアクセスできた。 このデータは、バンドやモードを切り替えた時に直前のデータを保存しておく。
プログラムを立ち上げた時に、その前のデータを保存しておくことが必要になるけど、それにはアプリケーション設定という機能を使う。 これも、少し工夫が必要。