using LabelManager2; 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.PublicForm; using UAS_MES.PublicMethod; namespace UAS_MES.Make { public partial class Make_PalletWeigh : Form { AutoSizeFormClass asc = new AutoSizeFormClass(); LogStringBuilder sql = new LogStringBuilder(); ApplicationClass lbl; Thread InitPrint; Thread thread; DataHelper dh; DataTable dt; DataTable listc; DataTable info; System.DateTime[] indate; //创建串口实例 SerialPort serialPort1 = new SerialPort(); //true的时候表示从串口读取数据 bool GetData = true; public Make_PalletWeigh() { InitializeComponent(); } private void Make_PalletWeigh_Load(object sender, EventArgs e) { CheckForIllegalCrossThreadCalls = false; asc.controllInitializeSize(this); OperateResult.AppendText(">>请输入栈板号\n", Color.Black); //栈板号输入框聚焦 palletcode.Focus(); ComList.Text = Properties.Settings.Default.PortName; BaudRate.Text = Properties.Settings.Default.BaudRate; dh = new DataHelper(); InitPrint = new Thread(InPrint); SetLoadingWindow stw = new SetLoadingWindow(InitPrint, "初始化打印程序"); BaseUtil.SetFormCenter(stw); stw.ShowDialog(); } private void InPrint() { try { lbl = new ApplicationClass(); BaseUtil.WriteLbl(lbl); } catch (Exception ex) { MessageBox.Show("未安装codesoft"); } } private void Make_PalletWeigh_SizeChanged(object sender, EventArgs e) { asc.controlAutoSize(this); } private void palletcode_KeyDown(object sender, KeyEventArgs e) { //按下了enter键 if (e.KeyCode==Keys.Enter) { if (palletcode.Text=="") { OperateResult.AppendText("<<输入不能为空\n", Color.Red); return; } //校验栈板号 sql.Clear(); sql.Append("select pa_id,pa_prodcode,pr_spec ||','|| pr_detail pr_detailspec,pa_makecode,pa_salecode,pa_totalqty,"); sql.Append("pa_packageqty from package left join product on pr_code=pa_prodcode where "); sql.Append("pa_outboxcode=:code and pa_type='3'"); dt = (DataTable)dh.ExecuteSql(sql.GetString(),"select",palletcode.Text); if (dt.Rows.Count == 0) { OperateResult.AppendText("<<无该栈板号\n", Color.Red); palletcode.Text = ""; } else { //给页面赋值 BaseUtil.SetFormValue(this.Controls,dt); // 更新大箱重量 sql.Clear(); sql.Append("update package set pa_weight=:weight where pa_id=:pa_id "); dh.ExecuteSql(sql.GetString(),"update",weight.Text,dt.Rows[0]["pa_id"].ToString()); //记录makeprocess //查询maid info = (DataTable)dh.ExecuteSql("select ma_id,ma_wccode from make where ma_code='"+pa_makecode.Text+"'","select"); if (info.Rows.Count>0) { //有值 //查询 sql.Clear(); sql.Append("insert into MakeProcess(mp_id,mp_makecode,mp_maid,mp_stepcode,mp_stepname ,"); sql.Append("mp_kind,mp_result,mp_indate,mp_inman,mp_wccode,mp_linecode,mp_sourcecode,"); sql.Append("mp_snoutboxcode) values ( makeprocess_seq.nextval,:makecode,:ma_id,:craftcode,:craftname,'栈板称重'"); sql.Append(",:result,sysdate,:inman,:workcenter,:linecode,:source,:palletcode) "); dh.ExecuteSql(sql.GetString(), "insert", pa_makecode.Text, info.Rows[0]["ma_id"].ToString(), User.CurrentStepCode, User.CurrentStepName, "称重成功,栈板号:" + palletcode.Text + ",重量:" + weight.Text + "克", User.UserName, info.Rows[0]["ma_wccode"].ToString(), User.UserLineCode, User.UserSourceCode, palletcode.Text); //提示信息栏显示:<< 栈板号:XXXX,重量:xxxx 克, OperateResult.AppendText("<<栈板号:" + palletcode.Text + ",重量:" + weight.Text + "克\n", Color.Green); //如果用户勾选了自动打印,调用打印, 打印成功,消息提示栏显示“打印成功”,“请输入栈板号” if (autoPrint.Checked == true) { try { if (PrintLabel.SelectedValue.ToString()=="") { OperateResult.AppendText(">>产品:" + pa_prodcode.Text + "未维护栈板标签模板\n", Color.Red); palletcode.Text = ""; return; } Print.CodeSoft(lbl, PrintLabel.Text.Split(':')[1], PrintLabel.SelectedValue.ToString(), Printer.Text, palletcode.Text, int.Parse(printNum.Text), indate[PrintLabel.SelectedIndex]); } catch (Exception ex) { OperateResult.AppendText("<<打印失败\n", Color.Red); OperateResult.AppendText(">>请输入栈板号\n", Color.Black); palletcode.Text = ""; return; } //打印成功,请输入栈板号 OperateResult.AppendText("<<打印成功\n", Color.Green); OperateResult.AppendText(">>请输入栈板号\n", Color.Black); //更新栈板打印次数 sql.Clear(); sql.Append("update package set pa_printcount= pa_printcount+1 where pa_id=:pa_id"); dh.ExecuteSql(sql.GetString(), "update", dt.Rows[0]["pa_id"].ToString()); //刷新称重计数+1 weightedNum.Text = int.Parse(weightedNum.Text) + 1 + ""; //刷新grid的历史称重信息; if (int.Parse(weight.Text)==0) { OperateResult.AppendText("<<重量不能等于0\n", Color.Red); palletcode.Text = ""; return; } recordResult(palletcode.Text,weight.Text, System.DateTime.Now.ToString()); //清空输入框中的值,扫描框置空定焦 palletcode.Text = ""; } } } } } private void pa_prodcode_TextChanged(object sender, EventArgs e) { listc = (DataTable)dh.ExecuteSql("select pl_labelcode ||':'||pl_labelname pl_name,pl_labelname,pl_labelcode, pl_indate,pl_labelurl from productlabel where pl_prodcode='" + pa_prodcode.Text + "'and PL_LABELTYPE='栈板标' order by pl_isdefault desc", "select"); if (listc.Rows.Count == 0) { OperateResult.AppendText(">>产品:" + pa_prodcode.Text + "未维护栈板标签模板\n", Color.Red); } PrintLabel.DataSource = listc; PrintLabel.DisplayMember = "pl_name"; PrintLabel.ValueMember = "pl_labelcode"; ftpOperater ftp = new ftpOperater(); indate = new System.DateTime[listc.Rows.Count]; for (int i = 0; i < listc.Rows.Count; i++) { BaseUtil.GetPrintLabel(listc.Rows[i]["pl_labelname"].ToString(), listc.Rows[i]["pl_labelurl"].ToString(), listc.Rows[i]["pl_indate"].ToString()); indate[i] = Convert.ToDateTime(listc.Rows[i]["pl_indate"].ToString()); } } 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 stopWeigh_Click(object sender, EventArgs e) { GetData = false; SystemInf.OpenPort.Remove(serialPort1.PortName); serialPort1.Close(); } 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 Make_PalletWeigh_FormClosing(object sender, FormClosingEventArgs e) { lbl.Quit(); if (serialPort1.IsOpen) { GetData = false; serialPort1.Close(); SystemInf.OpenPort.Remove(serialPort1.PortName); thread.Interrupt(); } } private void recordResult(string palletcode, string weigh, string time) { //if (showResult.Items.Count >= 50) //{ // //如果有10行的话,则删除最前一行 // showResult.Items.RemoveAt(0); //} //创建一个item ListViewItem lvi = new ListViewItem(); //分条赋值 lvi.SubItems.Add(palletcode); lvi.SubItems.Add(weigh); lvi.SubItems.Add(time); //添加结果的信息进去 showResult.Items.Add(lvi); } } }