using DIT.Framework.Module; using System; using System.Drawing; using System.Threading; using System.Windows.Forms; namespace DLL_Test_Program { public partial class Ophir_StarBright_Form : Form { public Ophir_StarBright_Form() { InitializeComponent(); Port_Set(); count = 0; AutoCheckRun = false; } delegate void DelUpdateData(); Ophir_StarBright Ophir; Thread UpdateUITh; Thread UpdateDataTh; bool AutoCheckRun; int count; private void Port_Set() { string[] ports = SerialModule.GetPorts(); if (ports == null) return; cbb_Ports.Items.Clear(); foreach (string port in ports) cbb_Ports.Items.Add(port); } private void ThreadInit() { UpdateUITh = new Thread(Update_UI); } private void ThreadStart() { UpdateUITh.Start(); } private void Update_UI() { while (Ophir.isOpen) { lock (this) { Thread.Sleep(100); Application.DoEvents(); try { if (InvokeRequired) { BeginInvoke(new UpdateUIDelegate(Update_UI)); return; } if(Ophir.isOpen) { lb_PortState.Text = "Connected"; lb_PortState.BackColor = Color.Lime; btn_PortClose.Enabled = true; btn_PortOpen.Enabled = false; } else { lb_PortState.Text = "Disconnect"; lb_PortState.BackColor = Color.Red; btn_PortClose.Enabled = false; btn_PortOpen.Enabled = true; } tb_Flag.Text = Ophir.Flag.ToString(); tb_Energy.Text = Ophir.Energy.ToString(); tb_Count.Text = $"count"; } catch (Exception) { } } } } public void Update_Data() { try { if (InvokeRequired) { BeginInvoke(new DelUpdateData(Update_Data)); return; } else { if (Ophir.Read_Flag()) { count++; Ophir.Read_Energy(); } } } catch (Exception) { } } private void btn_PortOpen_Click(object sender, System.EventArgs e) { string port = cbb_Ports.SelectedItem.ToString(); Ophir = new Ophir_StarBright(port, 115200); Ophir.Open(); ThreadInit(); ThreadStart(); } private void btn_PortClose_Click(object sender, System.EventArgs e) { Ophir.Close(); } private void btn_ReadFlag_Click(object sender, EventArgs e) { Ophir.Read_Flag(); } private void btn_ReadEnergy_Click(object sender, EventArgs e) { Ophir.Read_Energy(); } private void cb_ThreadStart_CheckedChanged(object sender, EventArgs e) { CheckBox check = (CheckBox)sender; if (check.Checked) { AutoCheckRun = true; UpdateDataTh = new Thread(() => { while (AutoCheckRun) { try { Thread.Sleep((int)(nud_CheckTime.Value)); while ((int)(nud_CheckTime.Value) > 100) { } Update_Data(); } catch (Exception) { } } }); UpdateDataTh.Start(); } else { AutoCheckRun = false; } } private void Ophir_StarBright_Form_FormClosing(object sender, FormClosingEventArgs e) { if (Ophir == null) return; Ophir.Close(); } private void btn_SetEnergy_Click(object sender, EventArgs e) { Ophir.Set_Measurement_Mode(3); } private void btn_SetPower_Click(object sender, EventArgs e) { Ophir.Set_Measurement_Mode(2); } } }