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.Packing { public partial class Packing_ProdWeightSet : Form { AutoSizeFormClass asc = new AutoSizeFormClass(); DataTable Dbfind;//存储工单号查询出来的信息 //创建串口实例 SerialPort serialPort1 = new SerialPort(); DataHelper dh; Thread thread; //true的时候表示从串口读取数据 bool GetData = true; int samplesCount = 0; string maxValue = "";//存储最大值 string minValue = "";//存储最小值 public Packing_ProdWeightSet() { InitializeComponent(); } private void Packing_ProdWeightSet_Load(object sender, EventArgs e) { asc.controllInitializeSize(this); ComList.Text = BaseUtil.GetCacheData("PortName").ToString(); BaudRate.Text = BaseUtil.GetCacheData("BaudRate").ToString(); //工单号放大镜配置 ma_code.TableName = "make left join product on ma_prodcode=pr_code"; ma_code.SelectField = "ma_code # 工单号,pr_code # 产品编号,pr_detail # 产品名称,pr_spec # 规格,ma_qty # 工单数量"; ma_code.FormName = Name; ma_code.SetValueField = new string[] { "ma_code","pr_code","pr_detail","pr_spec" }; ma_code.DbChange += Ma_code_DbChange; dh = new DataHelper(); //开始称重 startWeigh.PerformClick(); } private void Ma_code_DbChange(object sender, EventArgs e) { Dbfind = ma_code.ReturnData; BaseUtil.SetFormValue(this.Controls, Dbfind); } private void recordResult(int index,string palletcode, string weigh, string time) { //创建一个item ListViewItem lvi = new ListViewItem(); //分条赋值 lvi.SubItems.Add(index+""); lvi.SubItems.Add(palletcode); lvi.SubItems.Add(weigh+pr_cartonunit.Text); lvi.SubItems.Add(time); //添加结果的信息进去 showResult.Items.Add(lvi); //更新已称重量最大值最小值 if (index > 1) { maxValue = double.Parse(weigh) > double.Parse(maxValue) ? weigh : maxValue; minValue = double.Parse(weigh) < double.Parse(minValue) ? weigh : minValue; } else { maxValue = weigh; minValue = weigh; } } private void startWeigh_Click(object sender, EventArgs e) { thread = new Thread(getSerialData); try { GetData = true; serialPort1.PortName = this.ComList.Text; serialPort1.BaudRate = int.Parse(BaudRate.Text); serialPort1.Open(); thread.Start(); } catch (Exception mes) { if (BaudRate.Text == "" || ComList.Text == "") OperateResult.AppendText(">>请先在电子秤调试界面维护波特率和串口\n", Color.Red); else OperateResult.AppendText(">>" + mes.Message + "\n", Color.Red); } } private void getSerialData() { if (serialPort1.IsOpen) { if (!SystemInf.OpenPort.Contains(serialPort1.PortName)) { SystemInf.OpenPort.Add(serialPort1.PortName); try { while (GetData) { try { weight.Text = Regex.Replace(serialPort1.ReadLine(), "\\D+", ""); } catch (Exception) { GetData = false; } } } catch (IOException ex) { MessageBox.Show(ex.Message); } } else MessageBox.Show("端口已被占用,请关闭其他窗口"); } } //停止称重 private void stopWeigh_Click(object sender, EventArgs e) { GetData = false; SystemInf.OpenPort.Remove(serialPort1.PortName); serialPort1.Close(); } private void confirm_Click(object sender, EventArgs e) { //按确认更新产品重量 if (ma_code.Text=="") { OperateResult.AppendText("<<请先选择工单\n", Color.Red); return; } //判断是否达到已称数量 if (showResult.Items.Count