設定したいパラメータをファイルに保存しておき、プログラム起動時に読み込んで終了時に書き込むようにしたい。
例えばCOMポートの設定パラメータは、こんな感じ。 メモ帳で編集できるけど、数値の意味とかわかりにくいので、専用エディタを作ってみた。
FT-991AのCATでは、変更できるパラメータはこの3しかないので、3つに限定。
ソース
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 |
namespace Parasheet_Editor { public partial class Form1 : Form { public Form1() { InitializeComponent(); } string para; int id_portname, id_baudrate, id_tot; private void btn_COM_save_Click(object sender, EventArgs e) { string replace = CB_portName.SelectedIndex.ToString(); int pos = para.IndexOf("PortName") + 9; para = para.Remove(pos, 1).Insert(pos, replace); replace = CB_baudrate.SelectedIndex.ToString(); pos = para.IndexOf("BaudRate") + 9; para = para.Remove(pos, 1).Insert(pos, replace); replace = CB_tot.SelectedIndex.ToString(); pos = para.IndexOf("TOT") + 4; para = para.Remove(pos, 1).Insert(pos, replace); StreamWriter sw = new StreamWriter(@"ParaSheet.para", false, Encoding.GetEncoding("Shift_JIS")); sw.Write(para); sw.Close(); } private void Form1_Load(object sender, EventArgs e) { StreamReader sr = new StreamReader(@"ParaSheet.para", Encoding.GetEncoding("Shift_JIS")); para = sr.ReadToEnd(); sr.Close(); id_portname = Int32.Parse(para.Substring(para.IndexOf("PortName") + 9, 1)); id_baudrate = Int32.Parse(para.Substring(para.IndexOf("BaudRate") + 9, 1)); id_tot = Int32.Parse(para.Substring(para.IndexOf("TOT") + 4, 1)); string[] ports = SerialPort.GetPortNames(); if (ports.Length != 0) { foreach (string port in ports) { CB_portName.Items.Add(port); } CB_portName.SelectedIndex = id_portname; } else { MessageBox.Show("Serial portがありません"); Application.Exit(); } CB_baudrate.SelectedIndex = id_baudrate; CB_tot.SelectedIndex = id_tot; } } } |
久々のプログラミングで、結構時間がかかったし、かなり強引にやっつけたけど、パラメータの数が増えてきたら、もう少し工夫しないと結構大変なソースになるかも・・。