using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.IO.Ports; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading; using System.Windows.Forms; using UAS_MES.DataOperate; using UAS_MES.Entity; using UAS_MES.PublicMethod; namespace UAS_MES.SystemSetting { public partial class SystemSetting_ScaleTest : Form { Thread thread; bool ReadData = true; SerialPort serialPort1 = new SerialPort(); public SystemSetting_ScaleTest() { InitializeComponent(); } private void 电子秤调试_Load(object sender, EventArgs e) { CheckForIllegalCrossThreadCalls = false; ComList.Text = Properties.Settings.Default.PortName; BaudRate.Text = Properties.Settings.Default.BaudRate; } private void StartTest_Click(object sender, EventArgs e) { thread = new Thread(GetSerialData); try { ReadData = true; serialPort1.PortName = this.ComList.Text; serialPort1.BaudRate = int.Parse(BaudRate.Text); Properties.Settings.Default.PortName = this.ComList.Text; Properties.Settings.Default.BaudRate = BaudRate.Text; Properties.Settings.Default.Save(); serialPort1.Open(); thread.Start(); } catch (Exception mes) { MessageBox.Show(mes.Message); } } private void GetSerialData() { if (serialPort1.IsOpen) { if (!SystemInf.OpenPort.Contains(serialPort1.PortName)) { SystemInf.OpenPort.Add(serialPort1.PortName); try { while (ReadData) { try { Weight.Text = Regex.Replace(serialPort1.ReadLine(), "\\D+", ""); } catch (Exception) { ReadData = false; } } } catch (IOException ex) { MessageBox.Show(ex.Message); } } else MessageBox.Show("端口已被占用,请关闭其他窗口"); } } private void 电子秤调试_FormClosing(object sender, FormClosingEventArgs e) { StopTest.PerformClick(); try { ReadData = false; } catch (Exception) { } } private void StopTest_Click(object sender, EventArgs e) { ReadData = false; SystemInf.OpenPort.Remove(serialPort1.PortName); serialPort1.Close(); } } }