FT-991Aのバンドスイッチも自分的には使いにくい。 使い方は人それぞれなので、今の仕様がいいという人もいるだろうけど..。
デフォルトの仕様は、バンドを切り替えるとその他の設定が全部ついてくる。 FT8であっちこっちのバンドで運用すると、使ったバンドのモードやその他設定がそのまま残ってしまう。 モードをCWに変えて運用する時、バンドごとに設定し直す必要がある。 先日作成したFT8-CW切り替え器を使えば、バンドを切り替えるごとに一回クリックしてやれば、一応実現できるがそれでも煩わしい。
ということで、バンド切り替え器を追加した。
バンド毎に周波数を記憶しておく領域を作り、そのバンドで直前に使用した周波数を記憶し、バンドスイッチが押されたときにその周波数を設定するようにした。 記憶領域は、プロジェクトのプロパティであらかじめ設定しておく。 値は、初期値。
formのloadイベントで、プロパティの値をロード
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//周波数格納用レジスタのロード freqreg[0] = Properties.Settings.Default.cw_1r9; freqreg[1] = Properties.Settings.Default.cw_3r5; freqreg[2] = Properties.Settings.Default.cw_7; freqreg[3] = Properties.Settings.Default.cw_10; freqreg[4] = Properties.Settings.Default.cw_14; freqreg[5] = Properties.Settings.Default.cw_18; freqreg[6] = Properties.Settings.Default.cw_21; freqreg[7] = Properties.Settings.Default.cw_24; freqreg[8] = Properties.Settings.Default.cw_28; freqreg[9] = Properties.Settings.Default.cw_50; freqreg[10] = Properties.Settings.Default.cw_144; freqreg[11] = Properties.Settings.Default.cw_430; |
formのcloseイベントで、プロパティにバンド毎の周波数をセーブ。 これで、プログラムを終了してもバンド毎の周波数が記憶できる。
1 2 3 4 5 6 7 8 9 10 11 12 13 |
//周波数格納用レジスタのセーブ Properties.Settings.Default.cw_1r9 = freqreg[0]; Properties.Settings.Default.cw_3r5 = freqreg[1]; Properties.Settings.Default.cw_7 = freqreg[2]; Properties.Settings.Default.cw_10 = freqreg[3]; Properties.Settings.Default.cw_14 = freqreg[4]; Properties.Settings.Default.cw_18 = freqreg[5]; Properties.Settings.Default.cw_21 = freqreg[6]; Properties.Settings.Default.cw_24 = freqreg[7]; Properties.Settings.Default.cw_28 = freqreg[8]; Properties.Settings.Default.cw_50 = freqreg[9]; Properties.Settings.Default.cw_144 = freqreg[10]; Properties.Settings.Default.cw_430 = freqreg[11]; |
現在のVFO-Aの周波数を取得
1 2 3 4 5 6 7 8 9 10 |
//VFO周波数情報を取得 private int get_current_frequency() { spwrite("FA"); string buf = spread(); int freq = 0; if (buf != "") freq = int.Parse(buf.Substring(2, 9)); return freq; } |
周波数からバンド情報への変換
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
//VFO A周波数からバンド情報への変換 private byte freq2band(int freq) { byte buf = 0; var fq = (freq / 1000000).ToString(); switch (fq) { case "1": buf = 0; break; case "3": buf = 1; break; case "7": buf = 2; break; case "10": buf = 3; break; case "14": buf = 4; break; case "18": buf = 5; break; case "21": buf = 6; break; case "24": buf = 7; break; case "28": buf = 8; break; case "50": buf = 9; break; case "144": buf = 10; break; case "430": buf = 11; break; } return buf; } |
すべてのバンドボタンの色をコントロール色(デフォルト)に設定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
private void clear_bandbutton() { button8.BackColor = SystemColors.Control; button9.BackColor = SystemColors.Control; button10.BackColor = SystemColors.Control; button11.BackColor = SystemColors.Control; button12.BackColor = SystemColors.Control; button13.BackColor = SystemColors.Control; button14.BackColor = SystemColors.Control; button15.BackColor = SystemColors.Control; button16.BackColor = SystemColors.Control; button17.BackColor = SystemColors.Control; button18.BackColor = SystemColors.Control; button19.BackColor = SystemColors.Control; } |
numで与えた番号のバンドボタンを着色(オレンジ色)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
private void colored_bandbutton(int num) { clear_bandbutton(); switch(num) { case 0: button8.BackColor = Color.Orange; break; case 1: button9.BackColor = Color.Orange; break; case 2: button10.BackColor = Color.Orange; break; case 3: button11.BackColor = Color.Orange; break; case 4: button12.BackColor = Color.Orange; break; case 5: button13.BackColor = Color.Orange; break; case 6: button14.BackColor = Color.Orange; break; case 7: button15.BackColor = Color.Orange; break; case 8: button16.BackColor = Color.Orange; break; case 9: button17.BackColor = Color.Orange; break; case 10: button18.BackColor = Color.Orange; break; case 11: button19.BackColor = Color.Orange; break; default: break; } } |
バンドボタンがクリックされたときの動作(一つだけ)
1 2 3 4 5 6 7 |
private void button8_Click(object sender, EventArgs e) { var freq = get_current_frequency(); freqreg[freq2band(freq)] = freq.ToString("000000000"); spwrite("FA" + freqreg[0]); colored_bandbutton(0); } |
周波数情報は、9桁に揃えておかないとエラーになる。
これでだいぶ使い易くなった。