public void setID(string device_id) { string id = device_id.Replace("SN:", ""); toolStripTextBoxID.Text = id; if (_data_collection.ContainsKey(id)) { _data = _data_collection[id]; } else { _data = Reset(id); _data_collection.Add(id, _data); } UpdateUI(); _ps.SetCalibrationData( _data.p_awg, (_data.p_osc2 - _data.p_osc1), (_data.c - _data.p_osc1 * 1000 / _data.r_ref) * ((1 / (double)Potentiostat.rangeCurrent.Range20mA) + _data.res / 1000000), // (c [uA] - (p_osc1 * 1000) [uV] / r_ref [ohm]) / 10000 _data.p_slope_awg / 1000, _data.p_slope_osc2 / _data.p_slope_osc1, (_data.c_slope / (_data.p_slope_osc1 * 1000.0 / _data.r_ref))// / (1 + 0.5 / (1000000 / (double)Potentiostat.rangeCurrent.Range20mA))// * (r_ref / 1000.0)), ); _configure_ps.SerializedValues = _data.configure_resistor_values; }
private void buttonReset_Click(object sender, EventArgs e) { DialogResult r = MessageBox.Show ( "Are you sure to reset the calibration data?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning ); if (r == DialogResult.No) { return; } string id = _data.id; _data = Reset(id); if (_data_collection.ContainsKey(id)) { _data_collection[id] = _data; } else { _data_collection.Add(id, _data); } UpdateUI(); }
public Calibrate_Potentiostat(Potentiostat ps, Configure_Potentiostat configure_ps) { InitializeComponent(); _ps = ps; _configure_ps = configure_ps; try { // 初期値をProperties.Settingsにベタ打ちするのではなく、calibration_dataクラスをシリアライズする方法により(_tableResistorの様に)初期値を判断する。 // そうすれば、ビルド構成におけるコンパイル定数によって初期値を替えれるようになる(R2/R1が変わったとき様)。 string r1 = Properties.Settings.Default.calibration_data; if (r1 == "") { _data_collection = new Dictionary <string, calibration_data>(); } else { //XmlSerializer serializer = new XmlSerializer(typeof(Dictionary<string, calibration_data>)); DataContractSerializer serializer = new DataContractSerializer(typeof(Dictionary <string, calibration_data>)); StringReader sr = new StringReader(r1); XmlReader xr = XmlReader.Create(sr); //_data_collection = (Dictionary<string, calibration_data>)serializer.Deserialize(xr); _data_collection = (Dictionary <string, calibration_data>)serializer.ReadObject(xr); xr.Close(); } } catch { // データ構造が古い場合に例外が発生する可能性がある _data_collection = new Dictionary <string, calibration_data>(); } _data = new calibration_data(); }
private void toolStripButtonLoadFile_Click(object sender, EventArgs e) { openFileDialog1.Filter = "Calibration data file (*.xml)|*.xml|All types(*.*)|*.*"; openFileDialog1.FilterIndex = 1; openFileDialog1.Title = "Open File As Voltammogram"; openFileDialog1.FileName = ""; openFileDialog1.ShowHelp = true; openFileDialog1.SupportMultiDottedExtensions = true; openFileDialog1.Multiselect = false; if (openFileDialog1.InitialDirectory == null) { openFileDialog1.InitialDirectory = @"c:\"; } if (openFileDialog1.ShowDialog(this) == DialogResult.OK) { for (int i = 0; i < openFileDialog1.FileNames.Length; i++) { string file_path = openFileDialog1.FileNames[i]; //XmlSerializerオブジェクトを作成 //System.Xml.Serialization.XmlSerializer serializer = new System.Xml.Serialization.XmlSerializer(typeof(calibration_data)); DataContractSerializer serializer = new DataContractSerializer(typeof(calibration_data)); //読み込むファイルを開く System.IO.StreamReader sr = new System.IO.StreamReader(file_path, new System.Text.UTF8Encoding(false)); XmlReader xr = XmlReader.Create(sr); //XMLファイルから読み込み、逆シリアル化する //calibration_data _temp_data = (calibration_data)serializer.Deserialize(sr); calibration_data _temp_data = (calibration_data)serializer.ReadObject(xr); //ファイルを閉じる xr.Close(); sr.Close(); if (_temp_data.id != _data.id) { DialogResult r = MessageBox.Show ( "Are you sure to override the current calibration data?", "Warning", MessageBoxButtons.YesNo, MessageBoxIcon.Warning ); if (r == DialogResult.No) { return; } } //c_data.getData( // out string id, // out ohmInternalResistance, out r_ref, out p_awg, out p_osc1, out p_osc2, out c, out c_slope, out p_slope_osc1, out p_slope_osc2, out p_slope_awg, // out string configure_resistor_values //); string id = _data.id; _data = _temp_data; _data.id = id; UpdateUI(); ////this.toolStripTextBoxID.Text = id; //this.toolStripTextBoxInternalResistance.Text = ohmInternalResistance.ToString(); //this.textBoxResistor.Text = r_ref.ToString(); //this.textBoxPotential1.Text = p_awg.ToString(); //this.textBoxPotentialOsc1.Text = p_osc1.ToString(); //this.textBoxPotentialOsc2.Text = p_osc2.ToString(); //this.textBoxCurrent.Text = c.ToString(); //this.textBoxPotential2.Text = p_slope_awg.ToString(); //this.textBoxPotentialSlopeOsc1.Text = p_slope_osc1.ToString(); //this.textBoxPotentialSlopeOsc2.Text = p_slope_osc2.ToString(); //this.textBoxCurrentSlope.Text = c_slope.ToString(); //Properties.Settings.Default.configure_resistor_values = _data.configure_resistor_values; //Properties.Settings.Default.Save(); //_configure_ps.InitializeResistors(); //// Potentiostat本体の値を更新 //_ps.UpdateResistors(); _configure_ps.SerializedValues = _data.configure_resistor_values; } } }