以前は、ほぼFT8による交信だけだったが、最近またCWを始めたのでFT-991Aの設定を頻繁に切り替えるようになった。 小型のリグの常として操作性がイマイチなのは仕方がないけど、やっぱり不便だ。
幸い最近のリグは、CATが簡単にできるようになっているので切り替え器を作ってみた。 切り替え器といっても、単なるソフト。
ボタンを押した時、FT-991Aの必要な設定を仮想シリアルポートに送るだけの単純なもの。 コマンドを連続で送っていいかどうか不明だったけど、特に問題ないみたい。 CAT Rateは、38400bps。
FT-991AのオペレーションマニュアルとCATマニュアルで、メニュー番号に食い違いがあるけど、CATマニュアルの方が正しい。 また、Break-inのdelay timeの設定がFunctionとMenuの両方にある。 一方、液晶画面にはdelay timeのキーは表示されないが、Functionのコマンドで設定しても、Menuの値が設定できた。 なぜ2つあるのか意味不明。
ソース
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 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 |
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace FT991AControllerbeta { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { //SerialPort Open try { serialPort1.Open(); } catch (Exception ex) { MessageBox.Show(ex.Message); Environment.Exit(0); } serialPort1.NewLine = ";"; var buf = get_mode(); if (buf == 0) button1.BackColor = Color.Orange; else if (buf == 1) button2.BackColor = Color.Orange; } private void Form1_FormClosed(object sender, FormClosedEventArgs e) { //SerialPort Close if (serialPort1.IsOpen) serialPort1.Close(); } //serialPortへの書き込み public void spwrite(string command) { serialPort1.DiscardInBuffer(); try { serialPort1.WriteLine(command); } catch (TimeoutException) { MessageBox.Show("Time Out"); } } //serialPortからの読み出し public string spread() { string buff = ""; try { buff = serialPort1.ReadLine(); } catch (TimeoutException) { MessageBox.Show("Time Out"); } return buff; } //現在のモードを読み込み MODEがUSBでMENUのSSB MIC SELECTがrearだったらFT8と判定(return 1、MODEがCW-UかCW-RだったらCWと判定(return 0) その他だったらreturn 2 private byte get_mode() { byte buf = 0; spwrite("MD0"); var bf = spread(); switch (bf) { case "MD03": case "MD07": buf = 0; break; case "MD02": spwrite("EX106"); bf = spread(); if(bf == "EX1061") buf = 1; break; default: buf = 2; break; } return buf; } //CWの設定 private void button1_Click(object sender, EventArgs e) { spwrite("MD07"); //Mode CW-R spwrite("KR1"); //Keyer on spwrite("GT04"); //AGC auto spwrite("NA01"); //Narrow on spwrite("PA01"); //Pre Amp AMP1 spwrite("RA00"); //ATT off spwrite("SH000"); //Width 500Hz spwrite("KP30"); //Key pitch 600Hz spwrite("SD0300"); //Break-in delay time 300ms spwrite("EX0122"); //Keyer type Elekey-A spwrite("EX0560"); //Break-in type semi button1.BackColor = Color.Orange; button2.BackColor = SystemColors.Control; } //FT8の設定 private void button2_Click(object sender, EventArgs e) { spwrite("MD02"); //Mode USB spwrite("GT00"); //AGC off spwrite("NA00"); //Narrow off spwrite("PA00"); //Pre Amp IPO spwrite("SH021"); //Width 3200Hz spwrite("EX10201"); //SSB LCUT freq 100Hz spwrite("EX10451"); //SSB HCUT freq 3200Hz spwrite("EX1061"); //SSB Mic select rear spwrite("EX1091"); //SSB port select USB spwrite("EX1100"); //SSB TX BPF 50-3000Hz button2.BackColor = Color.Orange; button1.BackColor = SystemColors.Control; } } } |