private void SaveDA() { //sleep 500 ms, then reset configuration Thread.Sleep(600); DeviceMgr.Action("daoutput", new byte[] { 0x55, 0x64, 0xfc, 0x00, 0x00, 0x00, 0x04 }); //set control Thread.Sleep(100); }
public void RefreshOutput() { if (iRange < 0 || iRange > 3) //real res case { return; } DeviceMgr.CollectCurrent(out Current); }
private bool UpdateCurrentOnly() { double va; if (!DeviceMgr.CollectCurrent(out va)) { return(false); } Current = va; return(true); }
public void ZeroON() { int i = 0; while (i++ < 5) { double va; if (CollectVoltage(out va)) { DeviceMgr.Action("navzero", 0); System.Threading.Thread.Sleep(1000); return; } System.Threading.Thread.Sleep(1000); } }
public void RefreshOutput() { UpdateCurrentOnly(); if (bOn) { if (lastsetting != _setting) { DeviceMgr.SetCurrent(_setting, true); lastsetting = _setting; } } else { lastsetting = -1; } }
public void ZeroON() { int i = 0; while (i++ < 5) { double va; if (CollectVoltage(out va)) { if (Math.Abs(va) < 0.00001) // < 10uV { DeviceMgr.Action("navzero", 0); } break; } System.Threading.Thread.Sleep(1000); } }
internal void pc_cmd(string cmd) { Logger.SysLog(cmd); if (cmd == "H") { DeviceMgr.Reset(); return; } if (cmd == "resi?") { if (processor.bOn) { DeviceMgr.Report("resi: " + led_rx.Value + " on"); } else { DeviceMgr.Report("resi: " + led_rx.Value + " off"); }; return; } Match m; //TODO add command list }
public void ZeroON() { DeviceMgr.SetZero(); }
internal void pc_cmd(string cmd) { Logger.SysLog(cmd); if (cmd == "*IDN?") { DeviceMgr.Report("RAYSTING RT" + s_scale + "A"); return; } if (cmd == "H") { DeviceMgr.Reset(); return; } if (cmd == "ZERO") { processor.ZeroON(); return; } if (cmd == "curr?") { if (processor.bOn) { DeviceMgr.Report("curr: " + led_current.Value + " on"); } else { DeviceMgr.Report("curr: " + led_current.Value + " off"); } return; } Match m; m = resi_set_mode.Match(cmd); if (m.Success) { string rvalue = m.Groups[1].ToString(); Decimal a; if (!Util.TryDecimalParse(m.Groups[1].ToString(), out a)) { return; } if (!IsValidCurrent(a)) //range check { return; } int rng = Int32.Parse(m.Groups[3].ToString()); if (a > rng) { return; } processor.range = rng; processor.setting = a; processor.bOn = (m.Groups[2].ToString() == "on"); RefreshDisplay(true); cmd = "setting?"; } if (cmd == "setting?") { if (processor.bOn) { DeviceMgr.Report("setting: " + led_setting.Value + " on " + processor.range.ToString()); } else { DeviceMgr.Report("setting: " + led_setting.Value + " off " + processor.range.ToString()); } return; } }
public Form1() { InitializeComponent(); //ShowCursor(0); processor = new Processor(); digi_upbtns = new RectButton[] { rbtn_1up, rbtn_2up, rbtn_3up, rbtn_4up, rbtn_5up, rbtn_6up }; digi_dnbtns = new RectButton[] { rbtn_1dn, rbtn_2dn, rbtn_3dn, rbtn_4dn, rbtn_5dn, rbtn_6dn }; real_btns = new RectButton[] { rbtn_real1, rbtn_real2, rbtn_real3, rbtn_real4, rbtn_real5, rbtn_real6, rbtn_real7, rbtn_real8, rbtn_real9, rbtn_real10, rbtn_real11, rbtn_real12, rbtn_real13, rbtn_real14, rbtn_real15 }; dlg_choice = new ChoiceWnd(); dlg_kbd = new kbdWnd(); range_btns = new RectButton[] { btn_rangeReal, btn_range0, btn_range1, btn_range2, btn_range3 }; string[] range_string = new String[] { "实物电阻", "20mΩ", "200mΩ", "2Ω", "20Ω" }; led_ohm.ColorLight = Color.Red; led_ohm.ColorBackground = this.BackColor; led_ohm.ElementWidth = 6; led_current.ColorLight = Color.DarkGreen; led_current.ColorBackground = this.BackColor; led_current.ElementWidth = 6; led_current.Value = "0.0000"; btn_zeroon.BackColor = this.BackColor; btn_zeroon.ForeColor = Color.Bisque; btn_zeroon.Style = MyButtonType.rectButton; btn_zeroon.Text = "清零"; btn_zeroon.ValidClick += new EventHandler((o, e) => { led_current.Value = " "; processor.ZeroON(); }); btn_turnon.BackColor = this.BackColor; btn_turnon.colorTop = Color.Green; btn_turnon.Style = MyButtonType.roundButton; btn_turnon.Text = "OFF"; btn_turnon.Click += new EventHandler((o, e) => { if (!processor.bOn) { dt_lastoutput = DateTime.Now.AddSeconds(2); } processor.bOn = !processor.bOn; RefreshDisplay(false); }); tm = new Timer(); tm.Interval = 1000; tm.Tick += new EventHandler((o, e) => { lbl_datetime.Text = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); if (DateTime.Now.Subtract(dt_lastoutput).TotalSeconds < 1) { dt_lastoutput = DateTime.Now; return; } processor.RefreshOutput(); if (processor.Current > -999) { UpdateCurrent(processor.Current); processor.Current = -9999; } }); tm.Enabled = true; tm.Start(); DeviceMgr.Reset(); RefreshDisplay(true); }
public void Reset() { DeviceMgr.Reset(); }
public Form1() { InitializeComponent(); //ShowCursor(0); processor = new Processor(); digi_upbtns = new RectButton[] { rbtn_1up, rbtn_2up, rbtn_3up, rbtn_4up, rbtn_5up, rbtn_6up }; digi_dnbtns = new RectButton[] { rbtn_1dn, rbtn_2dn, rbtn_3dn, rbtn_4dn, rbtn_5dn, rbtn_6dn }; real_btns = new RectButton[] { rbtn_real1, rbtn_real2, rbtn_real3, rbtn_real4, rbtn_real5, rbtn_real6, rbtn_real7, rbtn_real8, rbtn_real9, rbtn_real10, rbtn_real11, rbtn_real12, rbtn_real13, rbtn_real14, rbtn_real15 }; dlg_choice = new ChoiceWnd(); dlg_kbd = new kbdWnd(); range_btns = new RectButton[] { btn_rangeReal, btn_range0, btn_range1, btn_range2, btn_range3 }; string[] range_string = new String[] { "实物电阻", "20mΩ", "200mΩ", "2Ω", "20Ω" }; led_ohm.ColorLight = Color.Red; led_ohm.ColorBackground = this.BackColor; led_ohm.ElementWidth = 12; led_ohm.RecreateSegments(led_ohm.ArrayCount); led_current.ColorLight = Color.DarkGreen; led_current.ColorBackground = this.BackColor; led_current.ElementWidth = 8; led_current.RecreateSegments(led_current.ArrayCount); led_current.Value = "0.0000"; btn_zeroon.bgColor = this.BackColor; btn_zeroon.SetStyle(Color.Bisque, MyButtonType.roundRectButton); btn_zeroon.Text = "清零"; btn_zeroon.ValidClick += new EventHandler((o, e) => { led_current.Value = " "; processor.ZeroON(); }); btn_turnon.bgColor = this.BackColor; for (int i = 0; i < digi_upbtns.Length; i++) { RectButton rb = digi_upbtns[i]; rb.bgColor = this.BackColor; rb.SetStyle(Color.DarkOrange, MyButtonType.triangleupButton); rb.ValidClick += new EventHandler((o, e) => { if (processor.iRange >= 0) { TickDigit(digi_upbtns.Length - NameInArray(o, digi_upbtns), true); RefreshDisplay(false); } }); } for (int i = 0; i < digi_dnbtns.Length; i++) { RectButton rb = digi_dnbtns[i]; rb.bgColor = this.BackColor; rb.SetStyle(Color.DarkOrange, MyButtonType.trianglednButton); rb.ValidClick += new EventHandler((o, e) => { if (processor.iRange >= 0) { TickDigit(digi_upbtns.Length - NameInArray(o, digi_dnbtns), false); RefreshDisplay(false); } }); } for (int i = 0; i < real_btns.Length; i++) { RectButton rb = real_btns[i]; rb.bgColor = this.BackColor; rb.SetStyle(Color.DarkOrange, MyButtonType.roundButton); rb.Text = Processor.real_title[i] + "Ω"; rb.ValidClick += new EventHandler((o, e) => { processor.iReal = NameInArray(o, real_btns); RefreshDisplay(false); }); } btn_turnon.SetStyle(Color.Green, MyButtonType.round2Button); btn_turnon.Text = "OFF"; btn_turnon.Click += new EventHandler((o, e) => { if (!processor.bOn) { dt_lastoutput = DateTime.Now.AddSeconds(2); } processor.bOn = !processor.bOn; RefreshDisplay(false); }); for (int i = 0; i < range_btns.Length; i++) { RectButton rb = range_btns[i]; rb.bgColor = this.BackColor; rb.Text = range_string[i]; rb.SetStyle(Color.Green, MyButtonType.roundRectButton); rb.ValidClick += new EventHandler((o, e) => { int newrange = NameInArray(o, range_btns) - 1; if (newrange == processor.iRange) { return; } processor.iRange = newrange; RefreshDisplay(true); }); } tm = new Timer(); tm.Interval = 500; tm.Tick += new EventHandler((o, e) => { lbl_datetime.Text = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); if (DateTime.Now.Subtract(dt_lastoutput).TotalSeconds < 1) { dt_lastoutput = DateTime.Now; return; } processor.RefreshOutput(); if (processor.Current > -999) { UpdateCurrent(processor.Current); processor.Current = -9999; } }); tm.Enabled = true; tm.Start(); led_ohm.Click += new EventHandler(led_ohm_Click); DeviceMgr.Reset(); RefreshDisplay(true); }
internal void pc_cmd(string cmd) { Logger.SysLog(cmd); if (cmd == "H") { DeviceMgr.Reset(); return; } if (cmd == "resi?") { if (processor.bOn) { DeviceMgr.Report("resi: " + led_ohm.Value + " on"); } else { DeviceMgr.Report("resi: " + led_ohm.Value + " off"); }; return; } if (cmd == "current?") { DeviceMgr.Report("curr: " + led_current.Value); return; } Match m; m = resi_set_mode.Match(cmd); if (m.Success) { string rvalue = m.Groups[1].ToString(); if (Processor.real_title.Contains(rvalue)) { int i = 0; for (i = 0; i < Processor.real_title.Length; i++) { if (rvalue == Processor.real_title[i]) { break; } } if (i >= Processor.real_title.Length) { return; } processor.iReal = i; processor.iRange = -1; //real case } else { Decimal a; if (!Util.TryDecimalParse(m.Groups[1].ToString(), out a)) { return; } int newrange = Processor.CheckRange(a, -1); if (newrange < 0) { return; } processor.iRange = newrange; processor.resistance = a; } processor.bOn = (m.Groups[2].ToString() == "on"); return; } }
public Form1() { InitializeComponent(); s_scale = this.label1.Text.Substring(0, this.label1.Text.IndexOf('A')); this.BackColor = Color.LightSkyBlue; led_current.ColorDark = this.BackColor; led_setting.ColorDark = this.BackColor; btn_turnon.BackColor = this.BackColor; rectMeter1.BackColor = this.BackColor; btn_turnon.BackColor = this.BackColor; rectMeter1.BgResId = "BGMETER"; //ShowCursor(0); processor = new Processor(); data = new StringBuilder(10); kbd_btns = new RectButton[] { lbButton0, lbButton1, lbButton2, lbButton3, lbButton4, lbButton5, lbButton6, lbButton7, lbButton8, lbButton9, lbButtonCancel, lbButtonOK, lbButtonPT, lbButtonPercent }; string[] btn_cap = "0,1,2,3,4,5,6,7,8,9,取消,确定,.,%".Split(new char[] { ',' }); for (int i = 0; i < kbd_btns.Length; i++) { RectButton lbt = kbd_btns[i]; lbt.BackColor = Color.Transparent; lbt.colorTop = Color.LightPink; lbt.colorShadow = Color.DarkGray; lbt.Label = btn_cap[i]; lbt.Style = MyButtonType.raiseButton; lbt.Click += new EventHandler((o, e) => { KeypadTick(NameInArray(o, kbd_btns)); }); } #region (NO USE) digi up and down /* * digi_upbtns = new RectButton[] { rbtn_1up, rbtn_2up, rbtn_3up, rbtn_4up, rbtn_5up, rbtn_6up }; * digi_dnbtns = new RectButton[] { rbtn_1dn, rbtn_2dn, rbtn_3dn, rbtn_4dn, rbtn_5dn, rbtn_6dn }; * for (int i = 0; i < digi_upbtns.Length; i++) * { * RectButton rb = digi_upbtns[i]; * rb.bgColor = this.BackColor; * rb.SetStyle(Color.DarkOrange, MyButtonType.triangleupButton); * * rb.ValidClick += new EventHandler((o, e) => * { * if (processor.iRange >= 0) * { * TickDigit(digi_upbtns.Length - NameInArray(o, digi_upbtns), true); * RefreshDisplay(false); * } * }); * } * for (int i = 0; i < digi_dnbtns.Length; i++) * { * RectButton rb = digi_dnbtns[i]; * rb.bgColor = this.BackColor; * rb.SetStyle(Color.DarkOrange, MyButtonType.trianglednButton); * rb.ValidClick += new EventHandler((o, e) => * { * if (processor.iRange >= 0) * { * TickDigit(digi_upbtns.Length - NameInArray(o, digi_dnbtns), false); * RefreshDisplay(false); * } * }); * } * */ #endregion dlg_choice = new ChoiceWnd(); dlg_kbd = new kbdWnd(); led_setting.ColorLight = Color.Red; led_setting.ColorBackground = this.BackColor; led_setting.ElementWidth = 12; // led_setting.RecreateSegments(led_setting.ArrayCount); led_current.ColorLight = Color.DarkGreen; led_current.ColorBackground = this.BackColor; led_current.ElementWidth = 10; // led_current.RecreateSegments(led_current.ArrayCount); led_current.Value = "0.0000"; btn_zeroon.Style = MyButtonType.rectButton; btn_zeroon.colorShadow = this.BackColor; btn_zeroon.colorTop = Color.Bisque; btn_zeroon.Label = "电流表清零"; btn_zeroon.ValidClick += new EventHandler((o, e) => { led_current.Value = " "; processor.ZeroON(); }); //btn_turnon.bgColor = this.BackColor; //btn_turnon.SetStyle(Color.Green, MyButtonType.round2Button); btn_turnon.Label = "OFF"; btn_turnon.Click += new EventHandler((o, e) => { if (!processor.bOn) { dt_lastoutput = DateTime.Now.AddSeconds(0.5); } processor.bOn = !processor.bOn; RefreshDisplay(false); }); tm = new Timer(); tm.Interval = 1000; tm.Tick += new EventHandler((o, e) => { lbl_datetime.Text = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); /* * if (DateTime.Now.Subtract(dt_lastoutput).TotalSeconds < 1) * { * dt_lastoutput = DateTime.Now; * return; * }*/ if (data.Length == 0) { processor.RefreshOutput(); if (processor.Current > -999) { UpdateCurrent(processor.Current); processor.Current = -9999; } } }); tm.Enabled = true; tm.Start(); DeviceMgr.Reset(); RefreshDisplay(true); }
internal void pc_cmd(string cmd) { Logger.SysLog(cmd); if (cmd == "resi?") { if (processor.bOn) { DeviceMgr.Report("resi: " + processor.resistance.ToString() + " on"); } else { DeviceMgr.Report("resi: " + processor.resistance.ToString() + " off"); }; return; } if (cmd == "current?") { DeviceMgr.Report("curr: " + led_current.Value); return; } if (cmd == "ZERO") { Program.mainwnd.processor.ZeroON(); } if (cmd == "H") { DeviceMgr.Reset(); } Match m; m = resi_set_mode.Match(cmd); if (m.Success) { string rvalue = m.Groups[1].ToString(); int newrange = Int32.Parse(m.Groups[3].ToString()); if (newrange < -1 || newrange > 3) { return; } if (newrange == -1) { int i = 0; for (i = 0; i < Processor.real_title.Length; i++) { if (rvalue == Processor.real_title[i]) { break; } } if (i >= Processor.real_title.Length) { return; } processor.iRange = -1; processor.iReal = i; } else { Decimal a; if (!Util.TryDecimalParse(m.Groups[1].ToString(), out a)) { return; } processor.iRange = newrange; processor.resistance = a; } processor.bOn = (m.Groups[2].ToString() == "on"); } RefreshDisplay(true); }
public Form1() { DisablePowerSleep(); InitializeComponent(); label5.Text = "VERSION: 2014-09-27"; //if(!(myBeep is Beep)) myBeep = new Beep("PWM1:"); // myBeep = new Beep("PWM4:"); btn_capture.Click += new EventHandler(btn_capture_Click); string mypath = Path.Combine(GlobalConfig.udiskdir2, "screen"); if (Directory.Exists(mypath)) { btn_capture.Visible = true; } Cursor.Hide(); processor = new Processor(); dlg_choice = new ChoiceWnd(); dlg_kbd = new kbdWnd(); led_rx.Value = "0.000000"; led_rx.Click += new EventHandler((o, e) => { DoBeep(); dlg_choice.bNo0Choice = true; dlg_choice.param = "selectrx"; dlg_choice.Init(StringResource.str("selectrx"), Processor._RxTitles, -1, null, new KbdDataHandler(KbdData)); }); led_rx.ColorLight = Color.Pink; led_rx.ColorDark = this.BackColor; led_rx.ColorBackground = this.BackColor; led_rx.ElementWidth = 12; led_rx.RecreateSegments(led_rx.ArrayCount); led_rs.ColorLight = Color.Black; led_rs.ColorDark = this.BackColor; led_rs.ColorBackground = this.BackColor; led_rs.ElementWidth = 10; led_rs.RecreateSegments(led_rs.ArrayCount); led_rs.Click += new EventHandler((o, e) => { DoBeep(); dlg_kbd.Init(String.Format(StringResource.str("inputrs"), Processor._RsTitles[processor.RsIndex]), "inputrs", false, new KbdDataHandler(KbdData)); }); led_vx.ColorLight = Color.Black; led_vx.ColorDark = this.BackColor; led_vx.ColorBackground = this.BackColor; led_vx.ElementWidth = 10; led_vx.RecreateSegments(led_vx.ArrayCount); led_vx.Value = "0.000"; led_vx.Click += new EventHandler((o, e) => { DoBeep(); dlg_choice.bNo0Choice = true; dlg_choice.param = "selectvx"; dlg_choice.Init(StringResource.str("selectvx"), Processor._MulTitles, -1, null, new KbdDataHandler(KbdData)); }); led_es.ColorLight = Color.Black; led_es.ColorDark = this.BackColor; led_es.ColorBackground = this.BackColor; led_es.ElementWidth = 10; led_es.RecreateSegments(led_es.ArrayCount); led_es.Click += new EventHandler((o, e) => { DoBeep(); dlg_choice.bNo0Choice = true; dlg_choice.param = "selectes"; dlg_choice.Init(StringResource.str("selectes"), Processor._EsTitles, -1, null, new KbdDataHandler(KbdData)); }); btn_hvout.BackColor = this.BackColor; btn_hvout.colorTop = Color.LightYellow; btn_hvout.Style = MyButtonType.rectButton; btn_hvout.Label = StringResource.str("hvout"); btn_hvout.ValidClick += new EventHandler((o, e) => { DoBeep(); if (!processor.bDirectOutputOn) { this.Invoke(new Action(() => { dlg_choice.bNo0Choice = true; dlg_choice.param = "selecthvport"; dlg_choice.Init(StringResource.str("selecthvport"), new string[] { "10 - 100V 端子输出", "100 - 1kV 端子输出", "500 - 5kV 端子输出", "1k - 10kV 端子输出" }, -1, null, new KbdDataHandler(KbdData)); })); } else { processor.DirectOutputClose(); RefreshDisplay(true); } return; }); btn_zeroon.BackColor = this.BackColor; btn_zeroon.colorTop = Color.Bisque; btn_zeroon.Style = MyButtonType.rectButton; btn_zeroon.Label = StringResource.str("vxzero"); btn_zeroon.ValidClick += new EventHandler((o, e) => { DoBeep(); processor.ZeroON2(); if (btn_zeroon.colorTop != Color.LightSlateGray) { btn_zeroon.colorTop = Color.LightSlateGray; } else { btn_zeroon.colorTop = Color.Bisque; } }); btn_zeroon2.BackColor = this.BackColor; btn_zeroon2.colorTop = Color.Bisque; btn_zeroon2.Style = MyButtonType.rectButton; btn_zeroon2.Label = StringResource.str("vgzero"); btn_zeroon2.ValidClick += new EventHandler((o, e) => { DoBeep(); processor.ZeroON(); if (btn_zeroon2.colorTop != Color.LightSlateGray) { btn_zeroon2.colorTop = Color.LightSlateGray; } else { btn_zeroon2.colorTop = Color.Bisque; } }); btn_turnon.BackColor = this.BackColor; btn_turnon.colorTop = Color.Green; btn_turnon.Style = MyButtonType.roundButton; btn_turnon.Text = "OFF"; btn_turnon.Click += new EventHandler((o, e) => { DoBeep(); if (!processor.bOn) { dt_lastoutput = DateTime.Now.AddSeconds(2); } processor.bOn = !processor.bOn; RefreshDisplay(true); }); rectMeter1.BgResId = "BGMETER"; DeviceMgr.Reset(); processor.ToDAValue(0); tm = new Timer(); tm.Interval = 500; tm.Tick += new EventHandler((o, e) => { //lbl_datetime.Text = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); if (DateTime.Now.Subtract(dt_lastoutput).TotalSeconds < 1) { return; } dt_lastoutput = DateTime.Now; if (processor.bDirectOutputOn) { DateTime.Now.AddSeconds(processor.RefreshDirectOutput()); string newv = processor.VxMeasure.ToString("F7").Substring(0, 6); if (led_vx.Value != newv) { led_vx.Value = newv; rectMeter1.Angle = processor.Percent; } if (processor.bDirectStable) { if (led_vx.ColorLight != Color.Red) { led_vx.ColorLight = Color.Red; } } else { if (led_vx.ColorLight != Color.Orange) { led_vx.ColorLight = Color.Orange; } } } else if (processor.bOn) { dt_lastoutput = DateTime.Now.AddSeconds(processor.RefreshOutput()); double v = Convert.ToDouble(processor.Rx); string newv; newv = Util.GMKFormat(ref v); if (lbl_ohm.Text != newv) { lbl_ohm.Text = newv; } newv = v.ToString("F8").Substring(0, 7); if (led_rx.Value != newv) { led_rx.Value = newv; } this.lbl_datetime.Text = processor.Vg.ToString() + "," + processor.Vx.ToString(); if (processor.bStable) { if (led_rx.ColorLight != Color.Red) { led_rx.ColorLight = Color.Red; } } else { if (led_rx.ColorLight != Color.Pink) { led_rx.ColorLight = Color.Pink; } } newv = processor.VxMeasure.ToString("F7").Substring(0, 6); if (led_vx.Value != newv) { led_vx.Value = newv; rectMeter1.Angle = processor.Percent; } } }); tm.Enabled = true; DeviceMgr.Reset(); RefreshDisplay(true); }
private bool ToDAValue(double voltage) { // Vout = (Vrefp-Vrefn)*D/(2^20-1)+Vrefn => D= (Vout-Vrefn)*(2^20-1)/(Vrefp-Vrefn) // when BUF is enabled , Vrefp = 10V; Vrefn = -10V; D = (Vout+10)*(2^20-1)/(20) // D = Vout*(2^20-1)/10; byte[] tosend = new Byte[] { 0x55, 0x64, 0xff, 0x00, 0x00, 0x00, 0x01 }; byte[] tosend2 = new Byte[] { 0x55, 0x64, 0x55, 0xff, 0x00, 0x00, 0x00, 0x01 };//special case for 0x55 leading value bool changed = false; double volt = voltage - Convert.ToDouble(daoffset); if (Math.Abs(volt) > 2.5) //turn off output or invalid adreading { return(false); } Int32 d = Convert.ToInt32(Math.Round((volt + 10) * (1048576 - 1) / 20.0)); tosend[5] = Convert.ToByte(d % 256); d = d / 256; tosend2[6] = tosend[5]; if (tosend[5] != lasttosend[5]) { lasttosend[5] = tosend[5]; changed = true; } tosend[4] = Convert.ToByte(d % 256); tosend2[5] = tosend[4]; d = d / 256; if (tosend[4] != lasttosend[4]) { lasttosend[4] = tosend[4]; changed = true; } tosend[3] = Convert.ToByte(d % 256); tosend2[4] = tosend[3]; if (tosend[3] != lasttosend[3]) { lasttosend[3] = tosend[3]; changed = true; } tosend[2] = Convert.ToByte((256 * 3 - 1 - Convert.ToInt32(tosend[3] + tosend[4] + tosend[5])) % 256); tosend2[3] = tosend[2]; if (changed) { if (tosend[2] == 0x55) { DeviceMgr.Action("daoutput", tosend2); } else { DeviceMgr.Action("daoutput", tosend); } return(DeviceMgr.success); } else { return(true); } }
private bool CollectVoltage(out double reading) { int badcount = 0; //count of bad communication reading = 0; while (badcount < 3) { DeviceMgr.Action("navread", 0); if (DeviceMgr.reading < -999) { if (DeviceMgr.nav_range != "navto1v") { badcount++; if (badcount < 3) { Thread.Sleep(500); continue; } badcount = 0; DeviceMgr.Action("navto1v", ""); Thread.Sleep(3000); continue; } else { return(false); } } else { } //disable range change if (false && (DeviceMgr.nav_range == "navto1v") && (Math.Abs(DeviceMgr.reading) < 0.1) && bOn) { badcount++; if (badcount < 3) { Thread.Sleep(500); continue; } badcount = 0; DeviceMgr.Action("navto120mv", ""); Thread.Sleep(3000); continue; } if (DeviceMgr.nav_range == "navto120mv") { datafilter.Enqueue(DeviceMgr.reading / 1000); } else { datafilter.Enqueue(DeviceMgr.reading); } if (datafilter.Count < 5) { continue; } double sqr; sqr = GetSqrt3(10); datafilter.Dequeue(); if ((DeviceMgr.nav_range == "navto120mv") && (sqr > 0.05)) //1mV { badcount++; continue; } if ((DeviceMgr.nav_range == "navto1v") && (sqr > 0.05)) //10mv { badcount++; continue; } badcount = 0; reading = datafilter.Skip(2).Take(2).Average(); return(true); } return(false); }