using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using DevComponents.DotNetBar; using System.Runtime.InteropServices; using System.Threading; using System.Data.SqlClient; using com.force.json; using System.Diagnostics; using DevComponents.DotNetBar.Controls; namespace WCS { public partial class main : Office2007Form { //private static Process p; //Point formPoint;//记录窗体的位置 //Point mousePoint; //int h1 = 0, h2 = 0, tag = 0, tag1 = 0; [DllImport("kernel32")] private static extern int GetPrivateProfileString(string section, string key, string def, StringBuilder retVal, int size, string filePath); //[DllImport("kernel32")] //private static extern long WritePrivateProfileString(string section, string key, string val, string filePath); //[DllImport("kernel32.dll")] //public extern static int GetPrivateProfileString(string segName, string keyName, string sDefault, StringBuilder buffer, int nSize, string fileName); //public extern static int GetPrivateProfileStringA(string segName, string keyName, string sDefault, byte[] buffer, int iLen, string fileName); // ANSI版本 private Point mouseOff;//鼠标移动位置变量 private bool leftFlag;//鼠标是否为左键 public main() { InitializeComponent(); } #region 系统初始化加载,load事件 private void Form1_Load(object sender, EventArgs e) { try { #region 初始化主控图控件 //panel_left.Parent = panel_plc_top; //panel_main_logo.Parent = panel_main; //panel_barcode.Parent = this; //panel_led.Parent = this; //panel_crn_top.Parent = this; //panel_plc_top.Parent = this; //panel_main.Parent = this; //panel_menu.Parent = panel_min_map; //panel_main.Dock = DockStyle.Fill; //panel_main.BringToFront(); tc_main.SizeMode = TabSizeMode.Fixed; tc_main.ItemSize = new Size(0, 1); panel_left.Parent = panel_plc_top; panel_menu.Parent = panel_min_map; #endregion DateTime dt = DateTime.Now; toolStripStatusLabel1.Text = " 启动时间:" + dt.ToLongDateString() + " " + dt.ToLongTimeString() + " "; toolStripStatusLabel2.Text = " 当前时间: " + dt.ToLongTimeString() + " "; toolStripStatusLabel3.Text = " 中扬储存设备有限公司 "; t_run.Enabled = false; t_display.Enabled = false; timer1.Enabled = false; timer2.Enabled = false; ReadSystemIni(); //string sql = " select * from APPS.CUX_INV_ONHAND_HSTORE_V where LPN_NUMBER='M041723045'"; //DataView dv_mat = Common.ExecErpSelect(sql); //if (dv_mat != null && dv_mat.Count > 0) //{ // foreach (DataRowView drow in dv_mat) // { // //insertBasMatCode(dv_mat); // string ls_mat_no = drow[0].ToString(); // } //} //if (Common.CheckDbConnect() == false) //{ // MessageBox.Show("数据库连接失败,请检查服务器(" + Common.serverIp + ")"); // Application.Exit(); //} //初始化各按钮状态 //sysrun.Enabled = false; //b_pasuecrn.Enabled = true; Common.InitSta(); Common.InitCrn(); Common.InitDev(); //runcrn.Enabled = false; initMainMap(); initCrnMap(); initPLCMap(); //initUpdateMap(); #region 注释,主控图画面初始显示 ////---------------堆垛机画面初始显示--------------------------- //for (int kk = 0; kk < Common.ci_crn_count; kk++) //{ // ListViewItem lvi1 = new ListViewItem(); // lvi1.SubItems[0].Text = (kk + 1).ToString(); // lvi1.SubItems.Add("0"); // lvi1.SubItems.Add("0"); // lvi1.SubItems.Add("0"); // lvi1.SubItems.Add("0"); // lvi1.SubItems.Add("0"); // this.crnstslists.Items.Add(lvi1); //} #endregion initThread(); t_run.Enabled = true; //t_update.Enabled = true; t_display.Enabled = true; timer1.Enabled = true; pictureBox1_Click(null, null); } catch (Exception em) { Common.WriteLogFile("WcsError", "Form1_Load--" + em.Message); MessageBox.Show("系统加载出错---" + em.Message); System.Environment.Exit(0); } } /// /// 加载配置 /// private void ReadSystemIni() { StringBuilder tem = new StringBuilder(100); //得到设备端口来源 try { //得到设备IP,端口号 GetPrivateProfileString("System", "crn_ip", "", tem, 100, Common.sysinipath); string[] arrayCrnIp = tem.ToString().Trim().Split(';'); if (arrayCrnIp.Length < Common.ci_crn_count) { toolStripStatusLabel4.Text = "堆垛机IP参数读取错误"; return; } for (int i = 0; i < Common.ci_crn_count; i++) { Common.gs_crn_ip[i] = arrayCrnIp[i]; } GetPrivateProfileString("System", "plc_ip", "", tem, 100, Common.sysinipath); string[] arrayPlcIp = tem.ToString().Trim().Split(';'); if (arrayPlcIp.Length < Common.ci_plc_count) { toolStripStatusLabel4.Text = "PLC IP参数读取错误"; return; } for (int i = 0; i < Common.ci_plc_count; i++) { Common.gs_plc_ip[i] = arrayPlcIp[i]; } GetPrivateProfileString("System", "barcode_ip", "", tem, 100, Common.sysinipath); string[] arrayBarcodeIp = tem.ToString().Trim().Split(';'); if (arrayBarcodeIp.Length < Common.ci_barcode_count) { toolStripStatusLabel4.Text = "条码阅读器 IP参数读取错误"; return; } for (int i = 0; i < Common.ci_barcode_count; i++) { Common.gs_barcode_ip[i] = arrayBarcodeIp[i]; } GetPrivateProfileString("System", "led_ip", "", tem, 100, Common.sysinipath); string[] arrayLedIp = tem.ToString().Trim().Split(';'); if (arrayLedIp.Length < Common.ci_led_count) { toolStripStatusLabel4.Text = "LED IP参数读取错误"; return; } for (int i = 0; i < Common.ci_led_count; i++) { Common.gs_led_ip[i] = arrayLedIp[i]; } //GetPrivateProfileString("System", "scale_ip", "", tem, 100, Common.sysinipath); //string[] arrayScaleIp = tem.ToString().Trim().Split(';'); //if (arrayScaleIp.Length < Common.ci_scale_count) //{ // toolStripStatusLabel4.Text = "磅秤 IP参数读取错误"; // return; //} //for (int i = 0; i < Common.ci_scale_count; i++) //{ // Common.gs_scale_ip[i] = arrayScaleIp[i]; //} GetPrivateProfileString("System", "sysIp", "", tem, 100, Common.sysinipath); Common.serverIp = tem.ToString(); Common.sqlcon = Common.sqlcon + "Data Source=" + Common.serverIp; //GetPrivateProfileString("System", "Ver", "", tem, 100, Common.sysinipath); //this.Text = this.Text + " " + tem.ToString(); GetPrivateProfileString("System", "companyName", "", tem, 100, Common.sysinipath); Common.gs_companyName = tem.ToString(); toolStripStatusLabel3.Text = " " + Common.gs_companyName + " "; GetPrivateProfileString("System", "scanTimeout", "", tem, 100, Common.sysinipath); Common.gd_scanTimeout = Convert.ToDouble(tem.ToString()); //GetPrivateProfileString("System", "Ver", "", tem, 100, Common.sysinipath); //this.Text = this.Text + " " + tem.ToString(); GetPrivateProfileString("System", "HttpUrl", "", tem, 100, Common.sysinipath); Common.HttpUrl = tem.ToString(); GetPrivateProfileString("System", "wcsip", "", tem, 100, Common.sysinipath); Common.gs_wcs_ip = tem.ToString().Trim(); GetPrivateProfileString("System", "wcsport", "", tem, 100, Common.sysinipath); Common.gs_wcs_port = Int32.Parse(tem.ToString()); } catch (Exception em) { Common.WriteLogFile("WcsError", "ReadSystemIni--读取配置信息失败:" + em.Message); toolStripStatusLabel4.Text = "读取配置信息失败:" + em.Message; return; } } /// /// 初始化主控图显示画面 /// private void initMainMap() { try { //----------------------------------初始化map画面控件-------------------------------- for (int i = 0; i < this.Controls.Count; i++) ///main主窗口 { if (this.Controls[i] is System.Windows.Forms.TabControl) ///tb_main 标签控件 { for (int ii = 0; ii < this.Controls[i].Controls.Count; ii++) { if (this.Controls[i].Controls[ii] is System.Windows.Forms.TabPage) //标签控件下的子控件 { for (int iii = 0; iii < this.Controls[i].Controls[ii].Controls.Count; iii++) { if (this.Controls[i].Controls[ii].Controls[iii] is System.Windows.Forms.Panel) //子控件下的panel { for (int iiii = 0; iiii < this.Controls[i].Controls[ii].Controls[iii].Controls.Count; iiii++) { if (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii] is System.Windows.Forms.Panel) //单个panel下的panel { for (int iiiii = 0; iiiii < this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls.Count; iiiii++) { if (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii].Tag != null) { if (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii].Tag.ToString() != "") { if (Convert.ToInt32(this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii].Tag) > 0) { Common.g_ari_staion_Component_seq[Common.GetStnSeq(Convert.ToInt32(this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii].Tag))] = this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii]; (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii] as DevComponents.DotNetBar.LabelX).MouseMove += new MouseEventHandler(stnMouseMove); (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii] as DevComponents.DotNetBar.LabelX).MouseLeave += new EventHandler(stnMouseLeave); (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii] as DevComponents.DotNetBar.LabelX).DoubleClick += new EventHandler(stn_DoubleClick); } else if (Convert.ToInt32(this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii].Tag) < 0) { (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii] as DevComponents.DotNetBar.LabelX).MouseMove += new MouseEventHandler(crnMouseMove); (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Controls[iiiii] as DevComponents.DotNetBar.LabelX).MouseLeave += new EventHandler(crnMouseLeave); } } } } } } } } } } } } //for (int i = 0; i < this.Controls.Count; i++) //{ // if (this.Controls[i] is System.Windows.Forms.Panel) // { // for (int ii = 0; ii < this.Controls[i].Controls.Count; ii++) // { // if (this.Controls[i].Controls[ii] is System.Windows.Forms.Panel) // { // for (int iii = 0; iii < this.Controls[i].Controls[ii].Controls.Count; iii++) // { // if (this.Controls[i].Controls[ii].Controls[iii].Tag != null) // { // if (this.Controls[i].Controls[ii].Controls[iii].Tag.ToString() != "") // { // if (Convert.ToInt32(this.Controls[i].Controls[ii].Controls[iii].Tag) > 0) // { // Common.g_ari_staion_Component_seq[Common.GetStnSeq(Convert.ToInt32(this.Controls[i].Controls[ii].Controls[iii].Tag))] = this.Controls[i].Controls[ii].Controls[iii]; // (this.Controls[i].Controls[ii].Controls[iii] as DevComponents.DotNetBar.LabelX).MouseMove += new MouseEventHandler(stnMouseMove); // (this.Controls[i].Controls[ii].Controls[iii] as DevComponents.DotNetBar.LabelX).MouseLeave += new EventHandler(stnMouseLeave); // (this.Controls[i].Controls[ii].Controls[iii] as DevComponents.DotNetBar.LabelX).DoubleClick += new EventHandler(stn_DoubleClick); // } // else if (Convert.ToInt32(this.Controls[i].Controls[ii].Controls[iii].Tag) < 0) // { // (this.Controls[i].Controls[ii].Controls[iii] as DevComponents.DotNetBar.LabelX).MouseMove += new MouseEventHandler(crnMouseMove); // (this.Controls[i].Controls[ii].Controls[iii] as DevComponents.DotNetBar.LabelX).MouseLeave += new EventHandler(crnMouseLeave); // } // } // } // } // } // } // } //} #region 遍历控件 //for (int i = 0; i < this.Controls.Count; i++) //{ // //ls_eee = this.Controls[i].Name.ToString(); // if (this.Controls[i] is DevComponents.DotNetBar.SuperTabControl) // { // for (int ii = 0; ii < this.Controls[i].Controls.Count; ii++) // { // //ls_eee = this.Controls[i].Controls[ii].Name.ToString(); // if (this.Controls[i].Controls[ii] is DevComponents.DotNetBar.SuperTabControlPanel) // { // for (int iii = 0; iii < this.Controls[i].Controls[ii].Controls.Count; iii++) // { // if (this.Controls[i].Controls[ii].Controls[iii] is DevComponents.DotNetBar.PanelEx) // { // //ls_eee = this.Controls[i].Controls[ii].Controls[iii].Name.ToString(); // for (int iiii = 0; iiii < this.Controls[i].Controls[ii].Controls[iii].Controls.Count; iiii++) // { // if (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii] is DevComponents.DotNetBar.LabelX) // { // if (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Tag != null) // { // if (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Tag.ToString() != "") // { // if (Convert.ToInt32(this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Tag) > 0) // { // Common.g_ari_staion_Component_seq[Common.GetStnSeq(Convert.ToInt32(this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Tag))] = this.Controls[i].Controls[ii].Controls[iii].Controls[iiii]; // (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii] as DevComponents.DotNetBar.LabelX).MouseMove += new MouseEventHandler(stnMouseMove); // (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii] as DevComponents.DotNetBar.LabelX).MouseLeave += new EventHandler(stnMouseLeave); // (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii] as DevComponents.DotNetBar.LabelX).DoubleClick += new EventHandler(stn_DoubleClick); // //if (Convert.ToInt32(this.maps.Controls[i].Controls[ii].Tag)>210) // //{ // // MessageBox.Show(this.maps.Controls[i].Controls[ii].Tag.ToString()); // //} // } // else if (Convert.ToInt32(this.Controls[i].Controls[ii].Controls[iii].Controls[iiii].Tag) < 0) // { // (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii] as DevComponents.DotNetBar.LabelX).MouseMove += new MouseEventHandler(crnMouseMove); // (this.Controls[i].Controls[ii].Controls[iii].Controls[iiii] as DevComponents.DotNetBar.LabelX).MouseLeave += new EventHandler(crnMouseLeave); // } // } // } // } // } // } // } // } // } // } //} #endregion } catch (Exception em) { Common.WriteLogFile("WcsError", "initMainMap--初始化主控图界面失败:" + em.Message); toolStripStatusLabel4.Text = "初始化主控图界面失败:" + em.Message; } } /// /// 初始化堆垛机显示画面 /// private void initCrnMap() { try { //堆垛机状态位信息gridview初始化 dgv_crnsts.DefaultCellStyle.SelectionForeColor = Color.Black; dgv_crnsts.DefaultCellStyle.SelectionBackColor = Color.White; dgv_crnsts.DefaultCellStyle.ForeColor = Color.Black; dgv_crnsts.DefaultCellStyle.BackColor = Color.White; dgv_crnsts.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleCenter; for (int i = 0; i < Common.ci_crn_count - 1; i++) { dgv_crnsts.Rows.Add(); } for (int i = 0; i < dgv_crnsts.Rows.Count; i++) { dgv_crnsts["col_CrnNo", i].Value = i + 1; } //堆垛机工作状态初始化 crnlistdata.Columns.Add("堆垛机", 56, HorizontalAlignment.Center); crnlistdata.Columns.Add("状态", 120, HorizontalAlignment.Center); crnlistdata.Columns.Add("工作号", 58, HorizontalAlignment.Center); crnlistdata.Columns.Add("源站", 50, HorizontalAlignment.Center); crnlistdata.Columns.Add("目标站", 56, HorizontalAlignment.Center); crnlistdata.Columns.Add("源库位", 70, HorizontalAlignment.Center); crnlistdata.Columns.Add("目标库位", 70, HorizontalAlignment.Center); crnlistdata.Columns.Add("异常", 130, HorizontalAlignment.Center); crnlistdata.Columns.Add("原点", 44, HorizontalAlignment.Center); crnlistdata.Columns.Add("命令", 132, HorizontalAlignment.Center); crnlistdata.Columns.Add("走行速度(m/min)", 118, HorizontalAlignment.Center); crnlistdata.Columns.Add("升降速度(m/min)", 118, HorizontalAlignment.Center); crnlistdata.Columns.Add("叉牙速度(m/min)", 118, HorizontalAlignment.Center); crnlistdata.Columns.Add("走行距离(Km)", 97, HorizontalAlignment.Center); crnlistdata.Columns.Add("升降距离(Km)", 97, HorizontalAlignment.Center); crnlistdata.Columns.Add("走行时长(H)", 90, HorizontalAlignment.Center); crnlistdata.Columns.Add("升降时长(H)", 90, HorizontalAlignment.Center); for (int i = 0; i < Common.ci_crn_count; i++) { ListViewItem lvi = new ListViewItem(); lvi.SubItems[0].Text = Common.crn_i_crnno[i].ToString(); lvi.SubItems.Add(Common.crn_i_crn_sts[i].ToString()); lvi.SubItems.Add(Common.crn_i_Wrkno[i].ToString()); lvi.SubItems.Add(Common.crn_i_fstn[i].ToString()); lvi.SubItems.Add(Common.crn_i_tstn[i].ToString()); lvi.SubItems.Add(Common.crn_s_Flocno[i]); lvi.SubItems.Add(Common.crn_s_Tlocno[i]); lvi.SubItems.Add(Common.crn_i_Errcod[i].ToString()); lvi.SubItems.Add(Common.crn_i_onHP[i].ToString()); lvi.SubItems.Add(Common.gs_crncmd[i]); lvi.SubItems.Add(Common.WalkSpeed[i].ToString()); lvi.SubItems.Add(Common.LiftSpeed[i].ToString()); lvi.SubItems.Add(Common.ForkSpeed[i].ToString()); lvi.SubItems.Add(Common.XDistance[i].ToString()); lvi.SubItems.Add(Common.YDistance[i].ToString()); lvi.SubItems.Add(Common.XDuration[i].ToString()); lvi.SubItems.Add(Common.YDuration[i].ToString()); this.crnlistdata.Items.Add(lvi); Common.gi_crnstn[i] = 1; Common.gs_crn_err_pre[i] = "0"; } s1.Style.BackColor1.Color = Color.Green; s1.Style.BackColor2.Color = Color.Green; s2.Style.BackColor1.Color = Color.Green; s2.Style.BackColor2.Color = Color.Green; s3.Style.BackColor1.Color = Color.Green; s3.Style.BackColor2.Color = Color.Green; tb_sendtocrn1.Text = ""; tb_sendtocrn2.Text = ""; for (int i = 0; i < Common.ci_crn_count; i++) { Common.gs_crnlastio[i] = "I"; Common.gs_crncmd[i] = ""; Common.crn_s_commandstr[i] = ""; Common.gi_crn_iotype[i] = 0; } } catch (Exception em) { Common.WriteLogFile("WcsError", "initCrnMap--初始化堆垛机界面失败:" + em.Message); toolStripStatusLabel4.Text = "初始化堆垛机界面失败:" + em.Message; } } /// /// 初始化PLC显示画面 /// private void initPLCMap() { try { sta_qty.Text = Common.ci_sta_count.ToString(); //初始化PLC站点信息 for (int i = 0; i < Common.ci_plc_count; i++) { if (i == 0) { for (int j = 1; j <= Common.ci_sta_count; j++) { ListViewItem lvi = new ListViewItem(); lvi.SubItems[0].Text = Common.plc_s_dev_no[i, j - 1].ToString(); lvi.SubItems.Add(Common.plc_i_Wrk_no[i, j - 1].ToString()); lvi.SubItems.Add(Common.plc_s_autoing[i, j - 1].ToString()); lvi.SubItems.Add(Common.plc_s_loading[i, j - 1].ToString()); lvi.SubItems.Add(Common.plc_s_canining[i, j - 1]); lvi.SubItems.Add(Common.plc_s_canouting[i, j - 1]); lvi.SubItems.Add(Common.plc_s_inreq1[i, j - 1]); lvi.SubItems.Add(Common.plc_s_inreq2[i, j - 1]); //lvi.SubItems.Add(Common.plc_s_loctype[i, j - 1]); lvi.SubItems.Add(""); lvi.SubItems.Add(Common.plc_s_next_stn[i, j - 1]); (this.Controls.Find("lv_plcdevsts" + (i + 1).ToString(), true)[0] as ListView).Items.Add(lvi); } } //if (i == 1) //{ // for (int j = 31; j <= Common.ci_sta_count; j++) // { // ListViewItem lvi = new ListViewItem(); // lvi.SubItems[0].Text = Common.plc_s_dev_no[i, j - 1].ToString(); // lvi.SubItems.Add(Common.plc_i_Wrk_no[i, j - 1].ToString()); // lvi.SubItems.Add(Common.plc_s_autoing[i, j - 1].ToString()); // lvi.SubItems.Add(Common.plc_s_loading[i, j - 1].ToString()); // lvi.SubItems.Add(Common.plc_s_canining[i, j - 1]); // lvi.SubItems.Add(Common.plc_s_canouting[i, j - 1]); // lvi.SubItems.Add(Common.plc_s_inreq1[i, j - 1]); // lvi.SubItems.Add(Common.plc_s_inreq2[i, j - 1]); // lvi.SubItems.Add(Common.plc_s_loctype[i, j - 1]); // lvi.SubItems.Add(Common.plc_s_next_stn[i, j - 1]); // (this.Controls.Find("lv_plcdevsts" + i.ToString(), true)[0] as ListView).Items.Add(lvi); // } //} } //初始化PLC错误信息 try { DataView dv1 = Common.ExecAsrsSelect("select error_desc from dbo.asr_bas_plcerror order by error_code"); if (dv1 != null && dv1.Count > 0) { //ListViewItem lvi = new ListViewItem(); //lv_PlcError.Columns.Add("序号", 50, HorizontalAlignment.Right); //lv_PlcError.Columns.Add("PLC错误描述", 400, HorizontalAlignment.Left); //lv_PlcError.Columns.Add("错误", 50, HorizontalAlignment.Center); int i = 0; Common.ci_plcerrcount = dv1.Count; Common.gs_PlcErrDesc = new string[Common.ci_plcerrcount]; Common.plcerr = new string[Common.ci_plcerrcount]; foreach (DataRowView drv1 in dv1) { Common.gs_PlcErrDesc[i] = drv1[0].ToString(); ListViewItem lvi = lv_PlcAError.Items.Add((lv_PlcAError.Items.Count + 1).ToString()); lvi.SubItems.Add(Common.gs_PlcErrDesc[i]); lvi.SubItems.Add("N"); i++; } //初始化plc异常 for (int j = 0; j < Common.ci_plcerrcount; j++) { Common.plcerr[j] = "N"; //Common.s_plc_err_count1[j] = "N"; //Class1.s_plc_err_count2[j] = "N"; } } } catch (Exception em) { Common.WriteLogFile("WcsError", "initPLCMap--读取dbo.asr_bas_plcerror失败:" + em.Message); } sendtoplc1.Text = ""; } catch (Exception em) { Common.WriteLogFile("WcsError", "initPLCMap--初始化PLC界面失败:" + em.Message); toolStripStatusLabel4.Text = "初始化PLC界面失败:" + em.Message; } } /// /// 初始化回报显示画面 /// private void initUpdateMap() { try { //lb_barcode.Text = ""; } catch (Exception em) { Common.WriteLogFile("WcsError", "initUpdateMap--初始化回报显示画面失败:" + em.Message); toolStripStatusLabel4.Text = "初始化回报显示画面失败:" + em.Message; } } /// /// 初始化设备线程 /// private void initThread() { try { //初始化堆垛机并启动堆垛机线程 for (int i = 0; i < Common.ci_crn_count; i++) { CraneThread crn = new CraneThread(i + 1, Common.gs_crn_ip[i], 102, this); //crn1.crncmdlist = this.cmdanalysis1; //crn.crnstslist = this.crnstslists; crn.tb = this.responsecrn1; crn.dgv_crnsts = this.dgv_crnsts; crn.tb_sendtocrn = this.Controls.Find("tb_sendtocrn" + (i + 1).ToString(), true)[0] as TextBoxX; } ////初始化并启动plc线程 PlcAThread plcA = new PlcAThread(1, Common.gs_plc_ip[0], 102, this); plcA.plclist = lv_plcdevsts1; plcA.tb = plcresponse1; plcA.sendtoplc = this.sendtoplc1; //PlcBThread plcB = new PlcBThread(2, Common.gs_plc_ip[1], 502, this); //plcB.plclist = lv_plcdevsts1; //plcB.tb = plcresponse1; //plcB.sendtoplc = this.sendtoplc2; //初始化并启动条码线程 //for (int i = 0; i < Common.ci_barcode_count; i++) //{ // BarcodeThread barcode = new BarcodeThread(i + 1, Common.gs_barcode_ip[i], 2111, this); // barcode.lb_barcode = this.lb_barcode; // barcode.barcodedisplay = this.Controls.Find("lv_barcode" + (i + 1).ToString(), true)[0] as ListBox; //} //初始化并启动LED线程 for (int i = 0; i < Common.ci_led_count; i++) { LedThread led = new LedThread(i + 1, Common.gs_led_ip[i], 5005); led.responseled = this.responseled; led.tb_sendtoled = this.Controls.Find("tb_sendtoled" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.Controls.TextBoxX; //led.responseled = this.Controls.Find("lv_barcode" + (i + 1).ToString(), true)[0] as ListBox; } ////初始化并启动磅称线程 //for (int i = 0; i < Common.ci_scale_count; i++) //{ // ScaleTcpThread scale = new ScaleTcpThread(i + 1, Common.gs_scale_ip[i], 8234, this); // scale.scaledisplay = (this.Controls.Find("lv_scale" + (i + 1).ToString(), true)[0] as ListBox); //} //UpdateThread updateThread = new UpdateThread(); //updateThread.frmdata = this.frmdata; } catch (Exception em) { Common.WriteLogFile("WcsError", "initThreadMap--初始化设备线程出错:" + em.Message); toolStripStatusLabel4.Text = "初始化设备线程出错:" + em.Message; } } private void main_FormClosing(object sender, FormClosingEventArgs e) { //try //{ //exit wr = new exit(); //wr.ShowDialog().ToString(); //if (Common.sysinfo == true) //{ // e.Cancel = false; // this.Dispose(); // Application.Exit(); // Common.sysinfo = false; //} //else //{ // e.Cancel = true; //} // DialogResult dr = MessageBox.Show("确定要退出吗?", "退出程序", MessageBoxButtons.OKCancel); // if (dr == DialogResult.OK)//如果点击“确定”按钮 // { // e.Cancel = false; // this.Dispose(); // Application.Exit(); // } // else // { // e.Cancel = true; // } //} //catch (Exception) //{ //} } #endregion #region 主控图控件事件,移动至设备,弹出设备显示框 /// /// 站点鼠标移入事件 /// private void stnMouseMove(object sender, MouseEventArgs e) { //Point p = this.PointToClient(Control.MousePosition);// MousePosition; //int stnno = 0; int seqno = 0; int plcno = 0, i_wrkno = 0; try { int stn = Int32.Parse((sender as DevComponents.DotNetBar.LabelX).Tag.ToString()); seqno = Common.GetStnSeq(stn); if (seqno < 50) { plcno = 0; } else { plcno = 1; } i_wrkno = Common.plc_i_Wrk_no[plcno, seqno]; if (stn > 0) { if (Common.form1 == null) { stndisplay stnd = new stndisplay(); stnd.TopLevel = false; stnd.Parent = this; stnd.BringToFront(); //stnd.Left = (sender as DevComponents.DotNetBar.LabelX).Left - (sender as DevComponents.DotNetBar.LabelX).Width + 100; //stnd.Top = (sender as DevComponents.DotNetBar.LabelX).Top; stnd.Left = 870; stnd.Top = 130; stnd.stnno.Text = stn.ToString(); stnd.stnid.Text = Common.plc_i_Wrk_no[plcno, seqno].ToString(); stnd.autoif.Checked = (Common.plc_s_autoing[plcno, seqno].ToString() == "Y") ? true : false; stnd.loadif.Checked = (Common.plc_s_loading[plcno, seqno].ToString() == "Y") ? true : false; stnd.caninif.Checked = (Common.plc_s_canining[plcno, seqno].ToString() == "Y") ? true : false; stnd.canouif.Checked = (Common.plc_s_canouting[plcno, seqno].ToString() == "Y") ? true : false; DataView dv1 = Common.ExecAsrsSelect("select top 1 wrk_sts,io_type,source_sta_no,sta_no,source_loc_no,loc_no from dbo.asr_wrk_mast where wrk_no=" + i_wrkno + ""); if (dv1 != null && dv1.Count > 0) { foreach (System.Data.DataRowView drow in dv1) { stnd.wrksts.Text = Common.Getwrksts(drow[0].ToString()); stnd.iotype.Text = Common.Getiotype(drow[1].ToString()); stnd.sstn.Text = drow[2].ToString(); stnd.dstn.Text = drow[3].ToString(); stnd.sloc.Text = drow[4].ToString(); stnd.dloc.Text = drow[5].ToString(); } } Common.form1 = stnd; stnd.Show(); } } } catch (Exception em) { Common.WriteLogFile("WcsError", "stnMouseMove--站点鼠标移入事件出错:" + em.Message); toolStripStatusLabel4.Text = "站点鼠标移入事件出错:" + em.Message; } } /// /// 站点鼠标离开事件 /// private void stnMouseLeave(object sender, EventArgs e) { try { //panel_stnShow.Visible = false; if (Common.form1 != null) { //Common.form1.Hide(); Common.form1.Close(); } //Common.form1.Close(); //this.panelEx6.Refresh(); } catch (Exception em) { Common.WriteLogFile("WcsError", "stnMouseLeave--站点鼠标离开事件出错:" + em.Message); toolStripStatusLabel4.Text = "站点鼠标离开事件出错:" + em.Message; } } /// /// 堆垛机鼠标移入事件 /// private void crnMouseMove(object sender, MouseEventArgs e) { int stano = 0, source_sta_no = 0; Point p = MousePosition; try { int ctn = -Int32.Parse((sender as DevComponents.DotNetBar.LabelX).Tag.ToString()); if (ctn > 0) { if (Common.form2 == null) { crndisplay crnd = new crndisplay(); crnd.TopLevel = false; crnd.Parent = this; crnd.BringToFront(); //crnd.TopMost = true; //crnd.Left = (sender as DevComponents.DotNetBar.LabelX).Left + (sender as DevComponents.DotNetBar.LabelX).Width; //crnd.Top = (sender as DevComponents.DotNetBar.LabelX).Top; crnd.Left = 570; crnd.Top = 130; crnd.crnno.Text = ctn.ToString(); crnd.crnid.Text = Common.crn_i_Wrkno[ctn - 1].ToString(); crnd.crnsts.Text = Common.GetCrnStsName(Common.crn_i_crn_sts[ctn - 1]); crnd.errinfo.Text = Common.crn_ycmm[ctn - 1].ToString() + ":" + Common.GetErr(Common.crn_ycmm[ctn - 1]); DataView dv = Common.ExecAsrsSelect("select wrk_sts,io_type,sta_no,source_sta_no from dbo.asr_wrk_mast where wrk_no=" + Common.crn_i_Wrkno[ctn - 1]); if (dv != null && dv.Count > 0) { foreach (DataRowView drv in dv) { int wrksts = Int32.Parse(drv[0].ToString()); int iotype = Int32.Parse(drv[1].ToString()); stano = Int32.Parse(drv[2].ToString()); source_sta_no = Int32.Parse(drv[3].ToString()); DataView dv1 = Common.ExecAsrsSelect("select wrk_desc from dbo.asr_bas_wrk_status where wrk_sts=" + wrksts); if (dv1.Count > 0) { foreach (DataRowView drv1 in dv1) { crnd.wrksts.Text = drv1[0].ToString(); } } DataView dv2 = Common.ExecAsrsSelect("select io_desc from dbo.asr_bas_wrk_iotype where io_type=" + iotype); if (dv2.Count > 0) { foreach (DataRowView drv2 in dv2) { crnd.iotype.Text = drv2[0].ToString(); } } } } crnd.sstn.Text = source_sta_no.ToString();//Class1.crn_i_fstn[ctn - 1].ToString(); crnd.dstn.Text = stano.ToString(); crnd.sloc.Text = Common.crn_s_Flocno[ctn - 1].ToString(); crnd.dloc.Text = Common.crn_s_Tlocno[ctn - 1].ToString(); Common.form2 = crnd; crnd.Show(); } } } catch (Exception em) { Common.WriteLogFile("WcsError", "crnMouseMove--堆垛机鼠标移入事件出错:" + em.Message); toolStripStatusLabel4.Text = "堆垛机鼠标移入事件出错:" + em.Message; } } /// /// 堆垛机鼠标离开事件 /// private void crnMouseLeave(object sender, EventArgs e) { try { if (Common.form2 != null) { Common.form2.Close(); } } catch (Exception em) { Common.WriteLogFile("WcsError", "stnMouseLeave--堆垛机鼠标离开事件出错:" + em.Message); toolStripStatusLabel4.Text = "堆垛机鼠标离开事件出错:" + em.Message; } } /// /// 输送机站点双击事件 /// private void stn_DoubleClick(object sender, EventArgs e) { try { if (Common.f1 == null) { plcset pst = new plcset(Int32.Parse((sender as DevComponents.DotNetBar.LabelX).Tag.ToString())); pst.Show(); Common.f1 = pst; } else { Common.f1.Close(); Common.f1 = null; plcset pst = new plcset(Int32.Parse((sender as DevComponents.DotNetBar.LabelX).Tag.ToString())); pst.Show(); Common.f1 = pst; } } catch (Exception em) { Common.WriteLogFile("WcsError", "stn_DoubleClick--输送机站点双击事件出错:" + em.Message); toolStripStatusLabel4.Text = "输送机站点双击事件出错:" + em.Message; } } private void pictureBox1_Click(object sender, EventArgs e) { try { if (Common.gi_Online_Flag == Common.ch_CMD_PAUSE) { pictureBox1.Load(Common.picpath + "stop48.png"); Common.gi_Online_Flag = Common.ch_CMD_START; sysmode.Text = "运行中..."; sysmode.ForeColor = Color.Wheat; group_command.Enabled = false; } else { pictureBox1.Load(Common.picpath + "start48.png"); Common.gi_Online_Flag = Common.ch_CMD_PAUSE; sysmode.Text = "暂停中..."; sysmode.ForeColor = Color.Red; group_command.Enabled = true; } } catch (Exception em) { Common.WriteLogFile("WcsError", "pictureBox1_Click--系统启动暂停事件出错:" + em.Message); toolStripStatusLabel4.Text = "系统启动暂停事件出错:" + em.Message; } } #endregion #region PLC画面控件事件 #endregion #region 堆垛机画面控件事件 private void c3_Click(object sender, EventArgs e) { warn wr = new warn("你确定要强制3号堆垛机空闲吗?", "警告", 2); wr.ShowDialog().ToString(); if (Common.sysinfo == true) { ClrCrnCmd(3); Common.sysinfo = false; } } private void c4_Click(object sender, EventArgs e) { warn wr = new warn("你确定要强制4号堆垛机空闲吗?", "警告", 2); wr.ShowDialog().ToString(); if (Common.sysinfo == true) { ClrCrnCmd(4); Common.sysinfo = false; } } private void ClrCrnCmd(int crnno) { Common.crn_i_crnno[crnno - 1] = crnno; //Common.crn_i_crn_sts[crnno - 1] = Common.ci_CRN_STS_IDLE; Common.crn_i_Wrkno[crnno - 1] = 0; //Common.crn_i_Errcod[crnno - 1] = 0; Common.crn_i_kind[crnno - 1] = 0; Common.crn_i_fstn[crnno - 1] = 0; Common.crn_i_tstn[crnno - 1] = 0; Common.crn_s_Flocno[crnno - 1] = ""; Common.crn_s_Tlocno[crnno - 1] = ""; Common.gi_crn_iotype[crnno - 1] = 0; Common.crn_s_commandstr[crnno - 1] = ""; Common.gs_crncmd[crnno - 1] = ""; } /// /// 手工下发堆垛机命令 /// /// private void setCrnCommand(string value) { try { if (rb_crn1.Checked) { if (Common.gs_crncmd[0] == "") { Common.gs_crncmd[0] = value; tb_sendtocrn1.Text = value; } else { MessageBox.Show("堆垛机执行命令中"); return; } } else if (rb_crn2.Checked) { if (Common.gs_crncmd[1] == "") { Common.gs_crncmd[1] = value; tb_sendtocrn2.Text = value; } else { MessageBox.Show("堆垛机执行命令中"); return; } } } catch (Exception em) { Common.WriteLogFile("WcsError", "setCrnCommand--手工下发堆垛机命令:(" + value + ")" + em.Message); toolStripStatusLabel4.Text = "手工下发堆垛机命令:(" + value + ")" + em.Message; } } private void b_moveOhp_Click(object sender, EventArgs e) { string value = "109999" + "0000000" + "0003901"; setCrnCommand(value); } #endregion #region 入出业务处理 /// /// 界面显示处理 /// private void t_display_Tick(object sender, EventArgs e) { try { Proc_UpdCrnAndStnFile();//更新设备档 DisplayMaps();//显示map状态 DisplayCrn(); //ClrCrnNoUpd(); //displaymode(); //主界面条码阅读器控件的数据显示。 lb_bar1.Text = Common.gs_barcode_data[0]; //lb_bar2.Text = Common.gs_barcode_data[1]; lv_PlcAError.Items.Clear(); for (int i = 0; i < Common.ci_plcerrcount; i++) { if (Common.plcerr[i] == "Y") { ListViewItem lvi = lv_PlcAError.Items.Add((lv_PlcAError.Items.Count + 1).ToString()); lvi.SubItems[0].ForeColor = Color.Red; //lvi.SubItems[0].ForeColor = (Common.plcerr[i] == "Y") ? Color.Red : Color.Black; lvi.SubItems.Add(Common.gs_PlcErrDesc[i]); lvi.SubItems[1].ForeColor = Color.Red; //lvi.SubItems[1].ForeColor = (Common.plcerr[i] == "Y") ? Color.Red : Color.Black; lvi.SubItems.Add(Common.plcerr[i]); lvi.SubItems[2].ForeColor = Color.Red; //lvi.SubItems[2].ForeColor = (Common.plcerr[i] == "Y") ? Color.Red : Color.Black; } } DateTime dt = DateTime.Now; toolStripStatusLabel2.Text = " 当前时间: " + dt.ToLongTimeString() + " "; } catch (Exception em) { Common.WriteLogFile("WcsError", "t_display----" + em.Message); } } /// /// 更新堆垛机和站点基本档 /// private void Proc_UpdCrnAndStnFile() { int crnsts = 0, wrk_no = 0, frm_sta = 0, to_sta = 0, hp_mk = 0, stn = 0, wrk_no1 = 0, i_buff = 0, i_wrk = 0, plcno = 0; double wt = 0; string frm_locno = "", s_loctype = "", to_locno = "", s_loading = "", s_autoing = "", s_canining = "", s_canouting = "", s_inreq1 = "", s_inreq2 = "", s_barcode = "", s_empty = "", s_out_mk = "", s_pick_mk = "", crn_err = ""; //string ls_in_enable = "N", ls_out_enable = "N"; //更新站点信息 for (int sta = 0; sta < Common.ci_sta_count; sta++) { plcno = Common.g_ari_staion_plc_no[sta] - 1; s_autoing = Common.plc_s_autoing[Common.g_ari_staion_plc_no[sta] - 1, sta]; s_loading = Common.plc_s_loading[Common.g_ari_staion_plc_no[sta] - 1, sta]; s_canining = Common.plc_s_canining[Common.g_ari_staion_plc_no[sta] - 1, sta]; s_canouting = Common.plc_s_canouting[Common.g_ari_staion_plc_no[sta] - 1, sta]; s_inreq1 = Common.plc_s_inreq1[Common.g_ari_staion_plc_no[sta] - 1, sta]; s_inreq2 = Common.plc_s_inreq2[Common.g_ari_staion_plc_no[sta] - 1, sta]; wrk_no1 = Common.plc_i_Wrk_no[Common.g_ari_staion_plc_no[sta] - 1, sta]; s_loctype = Common.plc_s_loctype[Common.g_ari_staion_plc_no[sta] - 1, sta]; int i_loctype = 0; if (s_loctype == "Y") { i_loctype = 2; } else { i_loctype = 1; } stn = Common.g_ari_staion[sta]; if (stn == 2) { wt = Common.gd_gross_wt[0]; } else { wt = 0; } if ((s_autoing + s_loading + s_canining + s_canouting + s_inreq1 + s_inreq2 + wrk_no1.ToString() + s_loctype + wt.ToString()) != Common.gs_plc_data_pre[sta]) { string sql = "update dbo.asr_bas_devp set autoing ='" + s_autoing + "' ,loading ='" + s_loading + "',canining='" + s_canining + "',canouting='" + s_canouting + "',inreq1='" + s_inreq1 + "',"; sql += " inreq2='" + s_inreq2 + "',wrk_no=" + wrk_no1 + ",ctn_type=" + i_loctype + ",gross_wt=" + wt + " where dev_no =" + stn + ""; if (Common.ExecAsrsModify(sql) == true) { Common.gs_plc_data_pre[sta] = s_autoing + s_loading + s_canining + s_canouting + s_inreq1 + s_inreq2 + wrk_no1.ToString() + s_loctype + wt.ToString(); } } } //更新堆垛机信息 for (int crn = 0; crn < Common.ci_crn_count; crn++) { crnsts = Common.crn_i_crn_sts[crn]; wrk_no = Common.crn_i_Wrkno[crn]; frm_sta = Common.crn_i_fstn[crn]; to_sta = Common.crn_i_tstn[crn]; frm_locno = Common.crn_s_Flocno[crn]; to_locno = Common.crn_s_Tlocno[crn]; hp_mk = Common.crn_i_onHP[crn]; crn_err = Common.crn_ycmm[crn].ToString(); if ((crnsts.ToString() + wrk_no.ToString() + frm_sta.ToString() + to_sta.ToString() + frm_locno + to_locno + hp_mk.ToString() + crn_err) != Common.gs_crn_data_pre[crn]) { string sql = "update dbo.asr_bas_crnp set crn_err='" + crn_err + "', crn_sts =" + crnsts + " ,wrk_no =" + wrk_no + ",frm_sta=" + frm_sta + ",to_sta=" + to_sta + ",frm_locno='" + frm_locno + "',"; sql += " to_locno='" + to_locno + "',hp_mk=" + hp_mk + " where crn_no =" + (crn + 1) + ""; if (Common.ExecAsrsModify(sql) == true) { Common.gs_crn_data_pre[crn] = crnsts.ToString() + wrk_no.ToString() + frm_sta.ToString() + to_sta.ToString() + frm_locno + to_locno + hp_mk.ToString() + crn_err; } } } } /// /// 主控图画面显示 /// private void DisplayMaps() { int seq = 0, stnno = 0, ii = 0; string stnseq = ""; for (int stn = 0; stn < Common.ci_sta_count; stn++) { //noauto seq = Common.g_ari_staion_plc_no[stn] - 1; stnseq = Common.g_ari_staion[stn].ToString(); stnno = Int32.Parse(stnseq); //模拟数据 // Common.plc_s_autoing[seq, stn] = "Y"; if (Common.plc_s_autoing[seq, stn] == "N") { try { (this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).BackColor = Color.DarkGray; (this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).ForeColor = SystemColors.Window; } catch (Exception) { } } //auto if (Common.plc_s_autoing[seq, stn] == "Y" && Common.plc_s_loading[seq, stn] == "N" && Common.plc_i_Wrk_no[seq, stn] == 0) { try { (this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).BackColor = Color.Lime; (this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).ForeColor = Color.Black; } catch (Exception) { } } //auto+load+ID if (Common.plc_s_autoing[seq, stn] == "Y" && Common.plc_s_loading[seq, stn] == "Y" && Common.plc_i_Wrk_no[seq, stn] > 0) { try { (this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).BackColor = Color.Red; (this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).ForeColor = Color.Black; } catch (Exception) { } } //auto+load if (Common.plc_s_autoing[seq, stn] == "Y" && Common.plc_s_loading[seq, stn] == "Y" && Common.plc_i_Wrk_no[seq, stn] == 0) { try { (this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).BackColor = Color.Fuchsia; (this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).ForeColor = Color.Black; } catch (Exception) { } } //auto+ID if (Common.plc_s_autoing[seq, stn] == "Y" && Common.plc_s_loading[seq, stn] == "N" && Common.plc_i_Wrk_no[seq, stn] > 0) { try { (this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).BackColor = Color.Yellow; (this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).ForeColor = Color.Black; } catch (Exception) { } } if (Common.plc_i_Wrk_no[seq, stn] > 0) { (this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).Text = stnseq + "[" + Common.plc_i_Wrk_no[seq, stn] + "]"; } else { (this.Controls.Find("stn" + stnseq, true)[0] as DevComponents.DotNetBar.LabelX).Text = stnseq; } } for (int i = 0; i < Common.ci_crn_count; i++) { //Common.crn_dqps[i] = 30; //堆垛机位置 if (Common.crn_dqps[i] < 1) { (this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).Left = 1176; } else { (this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).Left = 1176 - 17 * (Common.crn_dqps[i]); } //堆垛机颜色 if (Common.Mode[i] != 3 && Common.AlarmCode[i] == 0) { if (Common.Mode[i] == 1) { (this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).BackgroundImage = Image.FromFile(Common.picpath + "Crane_manual.png"); (this.Controls.Find("crnMode" + (i + 1).ToString(), true)[0] as System.Windows.Forms.Label).Text = "手动模式"; } else if (Common.Mode[i] == 0) { (this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).BackgroundImage = Image.FromFile(Common.picpath + "Crane_manual.png"); (this.Controls.Find("crnMode" + (i + 1).ToString(), true)[0] as System.Windows.Forms.Label).Text = "离线模式"; } else if (Common.Mode[i] == 2) { (this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).BackgroundImage = Image.FromFile(Common.picpath + "Crane_manual.png"); (this.Controls.Find("crnMode" + (i + 1).ToString(), true)[0] as System.Windows.Forms.Label).Text = "手动模式"; } continue; } if (Common.AlarmCode[i] > 0) { (this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).BackgroundImage = Image.FromFile(Common.picpath + "Crane_error.png"); (this.Controls.Find("crnMode" + (i + 1).ToString(), true)[0] as System.Windows.Forms.Label).Text = "出现异常"; continue; } else if (Common.Mode[i] == 3 && Common.CrnState[i] == 0) { (this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).BackgroundImage = Image.FromFile(Common.picpath + "Crane_auto.png"); (this.Controls.Find("crnMode" + (i + 1).ToString(), true)[0] as System.Windows.Forms.Label).Text = "联机模式"; continue; } else if (Common.Mode[i] == 3 && Common.CrnState[i] > 0 && Common.crn_i_kind[i] == 7)//(Common.crn_rkz[i] == true && Common.crn_dnmsz[i] == true) { (this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).BackgroundImage = Image.FromFile(Common.picpath + "Crane_store.png"); continue; } else if (Common.Mode[i] == 3 && Common.CrnState[i] > 0 && Common.crn_i_kind[i] == 8)//(Common.crn_ckz[i] == true && Common.crn_dnmsz[i] == true) { (this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).BackgroundImage = Image.FromFile(Common.picpath + "Crane_retrieve.png"); continue; } else if (Common.Mode[i] == 3 && Common.CrnState[i] > 0 && Common.crn_i_kind[i] == 12) { (this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).BackgroundImage = Image.FromFile(Common.picpath + "Crane_loctoloc.png"); continue; } else if (Common.Mode[i] == 3 && Common.CrnState[i] > 0 && Common.crn_i_kind[i] == 11) { (this.Controls.Find("lb_crn" + (i + 1).ToString(), true)[0] as DevComponents.DotNetBar.LabelX).BackgroundImage = Image.FromFile(Common.picpath + "Crane_stntostn.png"); continue; } } } /// /// 更新堆垛机画面显示 /// private void DisplayCrn() { for (int k = 0; k < Common.ci_crn_count; k++) { //this.frmdata.Items[k].SubItems[1].Text = ""; //this.frmdata.Items[k].SubItems[2].Text = ""; //s1.BringToFront(); this.crnlistdata.Items[k].SubItems[1].Text = Common.GetCrnStsName(Common.CrnState[k]); this.crnlistdata.Items[k].SubItems[2].Text = Common.TaskNo[k].ToString(); this.crnlistdata.Items[k].SubItems[3].Text = Common.crn_i_fstn[k].ToString(); this.crnlistdata.Items[k].SubItems[4].Text = Common.crn_i_tstn[k].ToString(); this.crnlistdata.Items[k].SubItems[5].Text = Common.crn_s_Flocno[k].ToString(); this.crnlistdata.Items[k].SubItems[6].Text = Common.crn_s_Tlocno[k].ToString(); string errmsg = (Common.AlarmCode[k] > 0) ? Common.GetErr(Common.AlarmCode[k]) : "0"; this.crnlistdata.Items[k].SubItems[7].Text = errmsg; this.crnlistdata.Items[k].SubItems[8].Text = Common.crn_i_onHP[k].ToString(); this.crnlistdata.Items[k].SubItems[9].Text = Common.crn_s_commandstr[k].ToString(); this.crnlistdata.Items[k].SubItems[10].Text = Common.WalkSpeed[k].ToString("#0.00"); this.crnlistdata.Items[k].SubItems[11].Text = Common.LiftSpeed[k].ToString("#0.00"); this.crnlistdata.Items[k].SubItems[12].Text = Common.ForkSpeed[k].ToString("#0.00"); this.crnlistdata.Items[k].SubItems[13].Text = Common.XDistance[k].ToString("#0.00"); this.crnlistdata.Items[k].SubItems[14].Text = Common.YDistance[k].ToString("#0.00"); this.crnlistdata.Items[k].SubItems[15].Text = Common.XDuration[k].ToString("#0.00"); this.crnlistdata.Items[k].SubItems[16].Text = Common.YDuration[k].ToString("#0.00"); } //for (int kk = 0; kk < Common.ci_crn_count; kk++) //{ // this.crnstslists.Items[kk].SubItems[1].Text = Common.PosX[kk].ToString(); // this.crnstslists.Items[kk].SubItems[2].Text = Common.PosY[kk].ToString(); // this.crnstslists.Items[kk].SubItems[3].Text = Common.PosXmm[kk].ToString(); // this.crnstslists.Items[kk].SubItems[4].Text = Common.PosYmm[kk].ToString(); // this.crnstslists.Items[kk].SubItems[5].Text = Common.AlarmCode[kk].ToString(); ; //} } /// /// 堆垛机出库站到出库站 /// private void Proc_CrnStnToOutStn() { try { for (int i = 0; i < 2; i++) { int stnno = 0, seqno = 0; string s_slocno = "", s_dlocno = "", s_picking = "N", s_emptymk = "N"; int i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0, plcno = 0;//, ledno = 0; string s_sstano = "", s_dstano = "", ls_mat_no = ""; DateTime dt1 = System.DateTime.Now; switch (i) { case 0: stnno = 100; plcno = 0; //ledno = 0; break; case 1: stnno = 200; plcno = 0; //ledno = 0; break; } seqno = Common.GetStnSeq(stnno); string s_autoing = Common.plc_s_autoing[plcno, seqno]; string s_loading = Common.plc_s_loading[plcno, seqno]; string s_inreq1 = Common.plc_s_inreq1[plcno, seqno]; int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno]; string s_next_stn = Common.plc_s_next_stn[plcno, seqno]; if (s_autoing == "Y" && s_loading == "Y" && (i_wrk_no == 0 || int.Parse(s_next_stn) == 0)) { try { string sql = "select top 1 source_loc_no,loc_no,source_sta_no,sta_no,picking,wrk_no,crn_no,wrk_sts,io_type,empty_mk from dbo.asr_wrk_mast where source_sta_no=" + stnno + " and wrk_sts=12 and io_type>100 order by io_pri desc,io_time desc,wrk_no ASC "; DataView dv = Common.ExecAsrsSelect(sql); if (dv.Count <= 0) { lb_CrnStnToOutStn.Text = "查询无待出数据需要处理--wrk_sts=12"; continue; } foreach (System.Data.DataRowView drow in dv) { s_slocno = drow[0].ToString(); s_dlocno = drow[1].ToString(); s_sstano = drow[2].ToString(); s_dstano = drow[3].ToString(); s_picking = drow[4].ToString(); i_wrkno = Convert.ToInt32(drow[5].ToString()); i_crnno = Convert.ToInt32(drow[6].ToString()); i_wrksts = Convert.ToInt32(drow[7].ToString()); i_iotype = Convert.ToInt32(drow[8].ToString()); s_emptymk = drow[9].ToString(); } } catch (Exception e) { lb_CrnStnToOutStn.Text = "查询出库数据出错-wrk_sts=12-" + e.Message; continue; } //判断工作状态及站号是否符合 if (i_iotype < 100 || s_sstano == "" || s_dstano == "") { lb_CrnStnToOutStn.Text = "工作档数据不符合条件--入出/站点"; continue; } //////判断吊车是否实际已完成,且电脑状态在move中,以备电脑进行更新工作档 //if (Common.Mode[i_crnno - 1] != 3 || Common.CrnState[i_crnno - 1] != 90 // || Common.AlarmCode[i_crnno - 1] != 0 || Common.TaskNo[i_crnno - 1] != i_wrkno) //{ // lb_CrnStnToOutStn.Text = "吊车非空闲状态"; // continue; //} //判断plc队列是否满,最多5个 if (Common.GetPlcQuereCount(plcno) >= Common.ci_plc_MAX) { lb_CrnStnToOutStn.Text = "PLC队列已满"; continue; } if (Common.Mode[i_crnno - 1] == 3 && Common.AlarmCode[i_crnno - 1] == 0 && ( (Common.CrnState[i_crnno - 1] == 90 && Common.TaskNo[i_crnno - 1] == i_wrkno) || (Common.CrnState[i_crnno - 1] == 0 && Common.TaskNo[i_crnno - 1] == 0)) && Common.TaskFlag[i_crnno - 1] == 0 ) { bool result = Common.ExecAsrsModify("update dbo.asr_wrk_mast set wrk_sts =14 ,crn_end_time =getdate() where wrk_no =" + i_wrkno + ""); if (result) { Common.crn_i_crnno[i_crnno - 1] = i_crnno; Common.crn_i_Wrkno[i_crnno - 1] = 0; Common.crn_i_crn_sts[i_crnno - 1] = Common.ci_CRN_STS_IDLE; Common.crn_i_Errcod[i_crnno - 1] = 0; Common.crn_i_kind[i_crnno - 1] = 0; Common.crn_i_fstn[i_crnno - 1] = 0; Common.crn_i_tstn[i_crnno - 1] = 0; Common.crn_s_Flocno[i_crnno - 1] = ""; Common.crn_s_Tlocno[i_crnno - 1] = ""; Common.gi_crn_iotype[i_crnno - 1] = 0; Common.TaskFlag[i_crnno - 1] = 1; Common.AddPlcQuereCmd(plcno, "04" + i_wrkno.ToString("0000") + s_sstano.PadLeft(4, '0') + s_dstano.PadLeft(4, '0')); } else { lb_CrnStnToOutStn.Text = "更新工作档状态为14失败--wrk_sts=14"; } } } else { lb_CrnStnToOutStn.Text = "站点不符合条件--要求自动/有物/无ID"; } } } catch (Exception em) { Common.WriteLogFile("WcsError", "Proc_CrnStnToOutStn----" + em.Message); } } /// /// 拣料、并板、盘点再入库 /// private void Proc_StnToCrnStn_pick() { try { int stnno = 0, seqno = 0, d_stnno = 0, ledno = 0; string s_dlocno = "", s_slocno = "", sql = ""; int i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0, plcno = 0; string s_sstano = "", s_dstano = "", s_ioTime = ""; DateTime dt1 = System.DateTime.Now; for (int i = 0; i < 2; i++) { switch (i) { case 0: stnno = 104; d_stnno = 101; plcno = 0; ledno = 0; break; case 1: stnno = 204; d_stnno = 201; plcno = 0; ledno = 1; break; } seqno = Common.GetStnSeq(stnno); string s_autoing = Common.plc_s_autoing[plcno, seqno]; string s_loading = Common.plc_s_loading[plcno, seqno]; string s_inreq1 = Common.plc_s_canining[plcno, seqno]; int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno]; string s_next_stn = Common.plc_s_next_stn[plcno, seqno]; if (s_autoing == "Y" && s_loading == "Y" && s_inreq1 == "Y" && i_wrk_no > 0 && (s_next_stn == stnno.ToString() || Common.plc_i_pakmk[plcno, seqno] == 0)) { sql = "select top 1 loc_no,source_sta_no,sta_no,wrk_no,crn_no,wrk_sts,io_type,source_loc_no,io_time from asr_wrk_mast where wrk_no=" + i_wrk_no + " and wrk_sts=14 and (io_type=103 or io_type=107 or io_type=104) "; try { DataView dv = Common.ExecAsrsSelect(sql); if (dv == null || dv.Count <= 0) { lb_StnToCrnStn.Text = "无拣料数据处理--wrk_sts=14"; continue; } foreach (DataRowView drow in dv) { s_dlocno = drow[0].ToString(); s_sstano = drow[1].ToString(); s_dstano = drow[2].ToString(); i_wrkno = Convert.ToInt32(drow[3].ToString()); i_crnno = Convert.ToInt32(drow[4].ToString()); i_wrksts = Convert.ToInt32(drow[5].ToString()); i_iotype = Convert.ToInt32(drow[6].ToString()); s_slocno = drow[7].ToString(); s_ioTime = drow[8].ToString(); } } catch (Exception e) { lb_StnToCrnStn.Text = "查询工作档数据出错--" + e.Message; continue; } if ((i_iotype != 103 && i_iotype != 104 && i_iotype != 107) || s_dstano == "" || s_sstano == "") { lb_StnToCrnStn.Text = "工作档资料不符--入出类型/目标站/入库站"; continue; } if (Common.GetPlcQuereCount(plcno) >= Common.ci_plc_MAX) { lb_StnToCrnStn.Text = "PLC命令队列已满"; continue; } int i_dstano = Common.GetRestoreStnByPick(i_crnno, stnno); string sqlWrk = " insert into dbo.asr_wrk_mast_log select * from dbo.asr_wrk_mast where wrk_no=" + i_wrkno + "; "; sqlWrk += " insert into dbo.asr_wrk_detl_log select * from dbo.asr_wrk_detl where wrk_no=" + i_wrkno + "; "; sqlWrk += " update dbo.asr_wrk_mast set io_type=io_type-50,source_loc_no='',loc_no='" + s_slocno + "',wrk_sts=2, "; sqlWrk += " source_sta_no=" + d_stnno + ",sta_no=" + i_dstano + ",io_time='" + dt1 + "' where wrk_no=" + i_wrkno + "; "; sqlWrk += " update dbo.asr_wrk_detl set io_time='" + dt1 + "' where wrk_no=" + i_wrkno + "; "; sqlWrk += " update dbo.asr_loc_mast set loc_sts='Q' where loc_no='" + s_slocno + "' and loc_sts='P'; "; if (Common.ExecAsrsModify(sqlWrk) == true) { Common.AddPlcQuereCmd(plcno, "04" + i_wrkno.ToString("0000") + i_dstano.ToString("0000") + i_dstano.ToString("0000")); Common.plc_i_pakmk[plcno, seqno] = 1; Common.plc_i_Wrk_no[plcno, seqno] = i_wrkno; Common.plc_s_next_stn[plcno, seqno] = i_dstano.ToString(); string ledMsg = "启动拣料入库;库位号" + s_slocno + ";工作号" + i_wrkno; if (Common.gs_led_data_pre[ledno] != ledMsg) { Common.gs_led_data[ledno] = ledMsg; Common.gs_led_data_pre[ledno] = ledMsg; } } else { lb_StnToCrnStn.Text = "更新工作档失败--wrk_sts=2"; } } else { lb_StnToCrnStn.Text = "站点不符合条件--要求自动/有物/可入/需求入/有ID"; } } } catch (Exception em) { Common.WriteLogFile("WcsError", "Proc_StnToCrnStn_pick----" + em.Message); } } /// /// 库位移转 /// /// private void Proc_LoctoLoc(int crnno) { try { //int stnno = 0, stnnor = 0, seqno = 0, wrksts = 0, restnno = 0; string s_slocno = "", s_dlocno = "", sql = "", locsts = "", locsts1 = "", s_inabled = "", s_outabled = ""; int i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0; if (Common.Mode[crnno] != Common.ci_CRN_ONLINE || Common.CrnState[crnno] != Common.ci_CRN_STS_IDLE || Common.TaskNo[crnno] != 0) { return; } sql = "select TOP 1 source_loc_no,loc_no,wrk_no,crn_no,wrk_sts,io_type from dbo.asr_wrk_mast where wrk_sts=11 and io_type=11 and crn_no=" + (crnno + 1) + " order by io_time,wrk_no"; //sql = "select TOP 1 source_loc_no,loc_no,wrk_no,crn_no,wrk_sts,io_type from dbo.asr_wrk_mast where wrk_sts=11 and (io_type=11 or io_type=110) and crn_no=" + (crnno + 1) + " order by io_time,wrk_no"; try { DataView dv = Common.ExecAsrsSelect(sql); if (dv.Count <= 0) return; foreach (System.Data.DataRowView dvrow in dv) { s_slocno = dvrow[0].ToString(); s_dlocno = dvrow[1].ToString(); i_wrkno = Convert.ToInt32(dvrow[2].ToString()); i_crnno = Convert.ToInt32(dvrow[3].ToString()); i_wrksts = Convert.ToInt32(dvrow[4].ToString()); i_iotype = Convert.ToInt32(dvrow[5].ToString()); } } catch (Exception e) { //datasts.Text = "工作档信息不正确, 无法进行库位移转 , 请检查!"; return; } try { DataView dv_locsts = Common.ExecAsrsSelect("select loc_sts from dbo.asr_loc_mast where loc_no='" + s_slocno + "'"); if (dv_locsts.Count <= 0) return; foreach (System.Data.DataRowView dvrow in dv_locsts) { locsts = dvrow[0].ToString(); } } catch (Exception e) { //datasts.Text = "源库位状态不正确, 无法进行库位移转 , 请检查!"; return; } try { DataView dv_locsts1 = Common.ExecAsrsSelect("select loc_sts from dbo.asr_loc_mast where loc_no='" + s_dlocno + "'"); if (dv_locsts1.Count <= 0) return; foreach (System.Data.DataRowView dvrow in dv_locsts1) { locsts1 = dvrow[0].ToString(); } } catch (Exception e) { //datasts.Text = "目标库位状态不正确, 无法进行库位移转 , 请检查!"; return; } //int crn_no = crnno + 1; if (locsts != "R" && locsts1 != "S") return; try { DataView dv_crnsts = Common.ExecAsrsSelect("select in_enable,out_enable from dbo.asr_bas_crnp where crn_no=" + (crnno + 1) + ""); foreach (System.Data.DataRowView dvrow in dv_crnsts) { s_inabled = dvrow[0].ToString(); s_outabled = dvrow[1].ToString(); } } catch (Exception e) { //datasts.Text = "得到堆垛机状态信息错误, 无法进行库位移转 , 请检查!"; return; } if (s_inabled != "Y" && s_outabled != "Y") { //datasts.Text = (crnno + 1).ToString() + " 堆垛机状态信息错误, 无法进行库位移转 , 请检查!"; return; } //string srow = "", sbay = "", slev = "", drow = "", dbay = "", dlev = ""; //srow = s_slocno.Substring(0, 2); //sbay = s_slocno.Substring(2, 3); //slev = s_slocno.Substring(5, 2); //drow = s_dlocno.Substring(0, 2); //dbay = s_dlocno.Substring(2, 3); //dlev = s_dlocno.Substring(5, 2); if (Common.gs_crncmd[crnno] == "") { Common.gs_crncmd[crnno] = "12" + i_wrkno.ToString().PadLeft(4, '0') + s_slocno + s_dlocno; return; } } catch (Exception em) { Common.WriteLogFile("WcsError", "Proc_LoctoLoc----" + em.Message); } } /// /// 入库站,根据条码扫描生成入库工作档,工作状态1 /// private void Proc_GenerateStoreWrkFile() { try { for (int i = 0; i < 2; i++) { int plcno = 0, seqno = 0, li_wrkno = 0, li_stano = 0, li_crnno = 0; int li_loctype = 0, li_rStano = 0; //double ld_wt = 0; string ls_locno = "", sql = ""; string ls_barcode = ""; DateTime ldt_date = DateTime.Now; int ledno = 0; switch (i) { case 0: li_stano = 104; li_rStano = 103; //退库站 plcno = 0; ledno = 0; break; case 1: li_stano = 204; li_rStano = 203; //退库站 plcno = 0; ledno = 1; break; } //ld_wt = Common.gd_gross_wt[0]; seqno = Common.GetStnSeq(li_stano); ls_barcode = Common.gs_barcode_data[i]; string s_autoing = Common.plc_s_autoing[plcno, seqno]; string s_loading = Common.plc_s_loading[plcno, seqno]; string s_inreq1 = Common.plc_s_canining[plcno, seqno]; int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno]; string s_emptyMk = Common.plc_s_inreq1[plcno, seqno]; //空托盘需求信号 string s_next_stn = Common.plc_s_next_stn[plcno, seqno]; if (s_autoing == "Y" && s_loading == "Y" && s_inreq1 == "Y" && s_emptyMk == "N" && s_next_stn == li_stano.ToString() && ls_barcode != "" && i_wrk_no == 9998 && Common.plc_i_pakmk[plcno, seqno] == 0) { if (ls_barcode == "" || ls_barcode == null || ls_barcode == "00000000") { //超重、条码为空 lb_AnalyzeScale.Text = "条码为空--条码" + ls_barcode; //toolStripStatusLabel4.Text = "4"; continue; } else { //sql = "select top 1 wrk_no,loc_no,source_sta_no,sta_no,crn_no,wrk_sts,io_type from asr_wrk_mast where source_sta_no=" + li_stano + " and wrk_sts=1 and (io_type=1 or io_type=10) order by io_pri desc,io_time,wrk_no ASC "; sql = "select top 1 wrk_no,loc_no,source_sta_no,sta_no,crn_no,wrk_sts,io_type from asr_wrk_mast where source_sta_no=" + li_stano + " and wrk_sts=2 and barcode='" + ls_barcode + "' and (io_type=1 or io_type=10) order by io_pri desc,io_time,wrk_no ASC "; DataView dv_wrk = Common.ExecAsrsSelect(sql); if (dv_wrk != null && dv_wrk.Count > 0) { int lwrkno = 0; int staNo = 0; foreach (DataRowView drow in dv_wrk) { lwrkno = int.Parse(drow[0].ToString()); staNo = int.Parse(drow[3].ToString()); } lb_AnalyzeScale.Text = "工作档中已存在该站状态为1的数据,工作号-" + lwrkno; //Common.AddPlcQuereCmd(plcno, "02" + lwrkno.ToString("0000") + li_stano.ToString("0000") + staNo.ToString("0000")); continue; } string li_barcodetype = ls_barcode.Substring(0, 1); if (li_barcodetype == "8") //塑料件,放5,7,9,11 { li_loctype = 1; } else if (li_barcodetype == "1") //原材料,放1,2,3层 { li_loctype = 2; } else if (li_barcodetype == "2" || li_barcodetype == "3") //冲压件,放4,6,8层 { li_loctype = 3; } else { //li_loctype = 1; continue; } string postData = ""; string url = Common.HttpUrl; JSONObject json = new JSONObject(); json.put("ioType", 1); json.put("sourceStaNo", li_stano); json.put("barcode", ls_barcode); json.put("locType1", li_loctype); postData = json.ToString(); string responseData = HttpPostHelper.doHttpPost(url, postData); JSONObject jsonRes = new JSONObject(responseData); int code = jsonRes.getInt("code"); if (code == 200) { JSONObject data = new JSONObject(jsonRes.getString("data")); int e_staNo = data.getInt("staNo"); li_crnno = data.getInt("crnNo"); ls_locno = data.getString("locNo"); li_wrkno = data.getInt("workNo"); Common.gs_barcode_data[i] = ""; Common.AddPlcQuereCmd(plcno, "04" + li_wrkno.ToString("0000") + li_stano.ToString("0000") + e_staNo.ToString("0000")); Common.plc_i_Wrk_no[plcno, seqno] = li_wrkno; Common.plc_s_next_stn[plcno, seqno] = e_staNo.ToString(); Common.plc_i_pakmk[plcno, seqno] = 1; Common.plc_s_canining[plcno, seqno] = "N"; Common.plc_s_inreq1[plcno, seqno] = "N"; toolStripStatusLabel4.Text = ""; string ledMsg = li_stano + "站入库启动;库位号" + ls_locno + ";工作号" + li_wrkno; if (Common.gs_led_data_pre[ledno] != ledMsg) { Common.gs_led_data[ledno] = ledMsg; Common.gs_led_data_pre[ledno] = ledMsg; } } else { string ledMsg = li_stano + "站入库失败;" + jsonRes.getString("msg") + ";"; if (Common.gs_led_data_pre[ledno] != ledMsg) { Common.gs_led_data[ledno] = ledMsg; Common.gs_led_data_pre[ledno] = ledMsg; } toolStripStatusLabel4.Text = jsonRes.getString("msg"); continue; } #region //int stnType = 1; //if (li_stano > 2000) //{ // stnType = 2; //} //string sqlDetl = "", sqlWaitIn = ""; //sql = " select matnr,maktx,werks,anfme,unit from cust_wait_pakin where barcode='" + ls_barcode + "'"; //DataView dv_mat = Common.ExecAsrsSelect(sql); //if (dv_mat != null && dv_mat.Count > 0) //{ // li_wrkno = Common.GetWrkno(0); // if (li_wrkno == 0) // { // lb_AnalyzeScale.Text = "生成工作号失败;" + ls_barcode; // continue; // } // ls_locno = Common.GetLocNo(1, li_loctype, 0, li_stano, stnType); // if (ls_locno == "") // { // //toolStripStatusLabel4.Text = "磅秤站入库得到工作号和库位号失败"; // lb_AnalyzeScale.Text = "查找库位失败;库位" + ls_locno; // continue; // } // foreach (DataRowView drow in dv_mat) // { // string matnr = "", maktx = "", werks = "", anfme = "", unit = ""; // matnr = drow[0].ToString(); // maktx = drow[1].ToString(); // maktx = maktx.Replace(';', ','); // werks = drow[2].ToString(); // anfme = drow[3].ToString(); // unit = drow[4].ToString(); // sqlDetl += " insert into asr_wrk_detl(wrk_no,io_time,matnr,maktx,werks,anfme,unit,barcode) "; // sqlDetl += " values(" + li_wrkno + ",'" + ldt_date + "','"; // sqlDetl += " '" + matnr + "','" + maktx + "','" + werks + "'," + anfme + ",'" + unit + "','" + ls_barcode + "');"; // sqlWaitIn += " update cust_wait_pakin set loc_no='" + ls_locno + "',status='Y' where barcode='" + ls_barcode + "' and matnr='" + matnr + "';"; // //break; // } //} //else //{ // lb_AnalyzeScale.Text = "无此入库条码数据--" + ls_barcode; // ///查询不到数据时退库到出库站 // //Common.AddPlcQuereCmd(plcno, "04" + "9999" + li_stano.ToString().PadLeft(4, '0') + li_rStano.ToString().PadLeft(4, '0')); // continue; //} //int li_crnrow = int.Parse(ls_locno.Substring(0, 2)); //li_crnno = (li_crnrow + 1) / 2; //int e_staNo = Common.getIoStaNo(1, li_crnno, li_stano); //sql = sqlDetl; //sql += " insert into asr_wrk_mast(wrk_no,wrk_sts,io_time,io_type,crn_no,io_pri,loc_no,sta_no,source_sta_no,barcode,ctn_type) "; //sql += " values(" + li_wrkno + ",2,'" + ldt_date + "',1," + li_crnno + ",10,'" + ls_locno + "'," + e_staNo + "," + li_stano + ",'" + ls_barcode + "'," + li_loctype + "); "; //sql += " update asr_loc_mast set loc_sts='S' where loc_no='" + ls_locno + "';"; //sql += sqlWaitIn; //bool result = Common.ExecAsrsModify(sql); //if (result) //{ // Common.gs_barcode_data[i] = ""; // Common.AddPlcQuereCmd(plcno, "04" + li_wrkno.ToString("0000") + li_stano.ToString("0000") + e_staNo.ToString("0000")); // Common.plc_i_Wrk_no[plcno, seqno] = li_wrkno; // Common.plc_s_next_stn[plcno, seqno] = e_staNo.ToString(); // Common.plc_i_pakmk[plcno, seqno] = 1; // Common.plc_s_inreq1[plcno, seqno] = "N"; // toolStripStatusLabel4.Text = ""; //} //else //{ // lb_AnalyzeScale.Text = "插入表asr_wrk_mast数据,更新asr_loc_mast表失败"; // //toolStripStatusLabel4.Text = "8"; //} //Common.gs_barcode = ""; #endregion } } else { if (s_loading == "N") { //Common.gs_barcode_data[i] = ""; //lb_bar1.Text = ""; } lb_AnalyzeScale.Text = "站点不符合条件--要求自动/有物/可入/有ID"; //toolStripStatusLabel4.Text = "3"; } } } catch (Exception em) { //common.Class1.scal = true; //toolStripStatusLabel4.Text = "9" + r.Message; lb_AnalyzeScale.Text = "Proc_GenerateStoreWrkFile出错--" + em.Message; Common.WriteLogFile("WcsError", "Proc_GenerateStoreWrkFile----" + em.Message); return; } } /// /// 入库站,入库站点至堆垛机入库站 /// 查找工作档状态为1的资料,下达搬运指令给PLC /// 工作状态1-->2 /// private void Proc_StnToCrnStn() { try { int stnno = 0, seqno = 0, ledno = 0; string s_dlocno = "", sql = ""; int i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0, plcno = 0; string s_sstano = "", s_dstano = ""; DateTime dt1 = System.DateTime.Now; for (int i = 0; i < 2; i++) { switch (i) { case 0: stnno = 104; plcno = 0; ledno = 0; break; case 1: stnno = 204; plcno = 0; ledno = 1; break; } seqno = Common.GetStnSeq(stnno); //li_wrkno = Common.plc_i_Wrk_no[plcno, seqno]; string s_autoing = Common.plc_s_autoing[plcno, seqno]; string s_loading = Common.plc_s_loading[plcno, seqno]; string s_canining = Common.plc_s_canining[plcno, seqno]; string s_canouting = Common.plc_s_canouting[plcno, seqno]; string s_inreq1 = Common.plc_s_inreq1[plcno, seqno]; string s_inreq2 = Common.plc_s_inreq2[plcno, seqno]; int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno]; string s_next_stn = Common.plc_s_next_stn[plcno, seqno]; if (s_autoing == "Y" && s_loading == "Y" && s_canining == "Y" && s_inreq2 == "Y" && i_wrk_no >= 0 && (s_next_stn == stnno.ToString() || Common.plc_i_pakmk[plcno, seqno] == 1)) { sql = "select top 1 loc_no,source_sta_no,sta_no,wrk_no,crn_no,wrk_sts,io_type from asr_wrk_mast where source_sta_no=" + stnno + " and wrk_sts=1 and (io_type=1 or io_type=10) order by io_pri desc,io_time,wrk_no ASC "; //sql = "select top 1 loc_no,source_sta_no,sta_no,wrk_no,crn_no,wrk_sts,io_type from asr_wrk_mast where wrk_no=" + i_wrk_no + " and source_sta_no=" + stnno + " and wrk_sts=1 and (io_type=1 or io_type=10) order by io_pri desc,io_time,wrk_no ASC "; try { DataView dv = Common.ExecAsrsSelect(sql); if (dv.Count <= 0) { lb_StnToCrnStn.Text = "无入库数据处理--wrk_sts=1"; continue; } foreach (DataRowView drow in dv) { s_dlocno = drow[0].ToString(); s_sstano = drow[1].ToString(); s_dstano = drow[2].ToString(); i_wrkno = Convert.ToInt32(drow[3].ToString()); i_crnno = Convert.ToInt32(drow[4].ToString()); i_wrksts = Convert.ToInt32(drow[5].ToString()); i_iotype = Convert.ToInt32(drow[6].ToString()); } } catch (Exception e) { lb_StnToCrnStn.Text = "查询工作档数据出错--" + e.Message; continue; } if (i_wrksts > 2 || (i_iotype != 1 && i_iotype != 10) || s_dstano == "" || s_sstano == "") { lb_StnToCrnStn.Text = "工作档资料不符--工作状态/入出类型/目标站/入库站"; continue; } if (Common.GetPlcQuereCount(plcno) >= Common.ci_plc_MAX) { lb_StnToCrnStn.Text = "PLC命令队列已满"; continue; } if (Common.ExecAsrsModify("update dbo.asr_wrk_mast set wrk_sts =2 where wrk_no =" + i_wrkno + "") == true) { Common.AddPlcQuereCmd(plcno, "04" + i_wrkno.ToString("0000") + s_sstano.PadLeft(4, '0') + s_dstano.PadLeft(4, '0')); //Common.plc_i_pakmk[plcno, seqno] = 2; Common.plc_i_Wrk_no[plcno, seqno] = i_wrkno; Common.plc_s_next_stn[plcno, seqno] = s_dstano; string ledMsg = "入库启动成功;库位号" + s_dlocno + ";工作号" + i_wrkno; if (Common.gs_led_data_pre[ledno] != ledMsg) { Common.gs_led_data[ledno] = ledMsg; Common.gs_led_data_pre[ledno] = ledMsg; } } else { lb_StnToCrnStn.Text = "更新工作档失败--wrk_sts=2"; } } else { lb_StnToCrnStn.Text = "站点不符合条件--要求自动/有物/可入/有ID"; } } } catch (Exception em) { Common.WriteLogFile("WcsError", "Proc_StnToCrnStn----" + em.Message); } } /// /// 插入物料数据到ASRS基本档 /// /// private bool insertBasMatCode(DataView dv_mat) { bool result = false; string str1 = "", str2 = "", str3 = "", str4 = "", str5 = "", str6 = "", str7 = "", str8 = "", str9 = "", str10 = ""; string str11 = "", str12 = "", str13 = "", str14 = "", str15 = "", str16 = "", str17 = "", str18 = "", str19 = "", str20 = ""; string str21 = "", str22 = "", str23 = ""; string ls_mat_no = "", ls_mat_name = "", date1 = ""; double num1 = 0, num2 = 0, num3 = 0, num4 = 0, num5 = 0, num6 = 0; try { if (dv_mat != null && dv_mat.Count > 0) { foreach (DataRowView drow in dv_mat) { str1 = drow[0].ToString(); str2 = drow[1].ToString(); num1 = (drow[2].ToString() != "") ? double.Parse(drow[2].ToString()) : 0; num2 = (drow[3].ToString() != "") ? double.Parse(drow[3].ToString()) : 0; str3 = drow[4].ToString(); ls_mat_name = drow[5].ToString(); str4 = drow[6].ToString(); ls_mat_no = drow[7].ToString(); str5 = drow[8].ToString(); str6 = drow[9].ToString(); date1 = drow[10].ToString(); num3 = (drow[11].ToString() != "") ? double.Parse(drow[11].ToString()) : 0; str7 = drow[12].ToString(); str8 = drow[13].ToString(); num4 = (drow[14].ToString() != "") ? double.Parse(drow[14].ToString()) : 0; str9 = drow[15].ToString(); str10 = drow[16].ToString(); str11 = drow[17].ToString(); str12 = drow[18].ToString(); str13 = drow[19].ToString(); str14 = drow[20].ToString(); str15 = drow[21].ToString(); str16 = drow[22].ToString(); str17 = drow[23].ToString(); num5 = (drow[24].ToString() != "") ? double.Parse(drow[24].ToString()) : 0; str18 = drow[25].ToString(); str19 = drow[26].ToString(); num6 = (drow[27].ToString() != "") ? double.Parse(drow[27].ToString()) : 0; str20 = drow[28].ToString(); str21 = drow[28].ToString(); str22 = drow[30].ToString(); str23 = drow[31].ToString(); } string sql = "insert into bas_mat_code(mat_no,mat_name,str1,str2,str3,str4,str5,str6,str7,str8,str9, "; sql += " str10,str11,str12,str13,str14,str15,str16,str17,str18,str19,str20,str21,str22,str23,date1, "; sql += " num1,num2,num3,num4,num5,num6,status) "; sql += " values('" + ls_mat_no + "','" + ls_mat_name + "','" + str1 + "','" + str2 + "','" + str3 + "','" + str4 + "','" + str5 + "', "; sql += " '" + str6 + "','" + str7 + "','" + str8 + "','" + str9 + "','" + str10 + "','" + str11 + "','" + str12 + "','" + str13 + "', "; sql += " '" + str14 + "','" + str15 + "','" + str16 + "','" + str17 + "','" + str18 + "','" + str19 + "','" + str20 + "','" + str21 + "', "; sql += " '" + str22 + "','" + str23 + "','" + date1 + "'," + num1 + "," + num2 + "," + num3 + "," + num4 + "," + num5 + "," + num6 + ",1)"; result = Common.ExecAsrsModify(sql); } } catch (Exception em) { Common.WriteLogFile("WcsError", "insertBasMatCode----" + em.Message); } return result; } /// /// 入库站,磅秤称重和条码扫描后,直接生成工作档,并下发指令给PLC /// 生成档,工作状态为2 /// private void Proc_AnalyzeScale() { try { for (int i = 0; i < 2; i++) { int plcno = 0, seqno = 0, li_wrkno = 0, li_stano = 0, li_crnno = 0; int li_loctype = 0; //double ld_wt = 0; string ls_locno = "", sql = ""; string ls_barcode = "", ls_mat_no = ""; switch (i) { case 0: li_stano = 104; plcno = 0; break; case 1: li_stano = 204; plcno = 0; break; } //ld_wt = Common.gd_gross_wt[0]; ls_barcode = Common.gs_barcode_data[i]; seqno = Common.GetStnSeq(li_stano); string s_autoing = Common.plc_s_autoing[plcno, seqno]; string s_loading = Common.plc_s_loading[plcno, seqno]; string s_inreq1 = Common.plc_s_inreq1[plcno, seqno]; int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno]; string s_next_stn = Common.plc_s_next_stn[plcno, seqno]; if (s_autoing == "Y" && s_loading == "Y" && s_inreq1 == "Y" && i_wrk_no == 9999 && s_next_stn == li_stano.ToString())// && Common.plc_i_pakmk[plcno, seqno] == 0) { if (ls_barcode == "" || ls_barcode == null) { //超重、条码为空 lb_AnalyzeScale.Text = "磅秤超重或条码为空--条码" + ls_barcode; //toolStripStatusLabel4.Text = "4"; continue; } else { sql = " select * from APPS.CUX_INV_ONHAND_HSTORE_V where LPN_NUMBER='" + ls_barcode + "'"; DataView dv_mat = Common.ExecErpSelect(sql); if (dv_mat != null && dv_mat.Count > 0) { foreach (DataRowView drow in dv_mat) { //insertBasMatCode(dv_mat); ls_mat_no = drow[0].ToString(); } } else { lb_AnalyzeScale.Text = "无此入库条码数据--" + ls_barcode; string ledMsg = "入库档无此条码;" + ls_barcode; if (i < 2) { if (Common.gs_led_data_pre[0] != ledMsg) { Common.gs_led_data[0] = ledMsg; Common.gs_led_data_pre[0] = ledMsg; } } else { if (Common.gs_led_data_pre[2] != ledMsg) { Common.gs_led_data[2] = ledMsg; Common.gs_led_data_pre[2] = ledMsg; } } continue; } li_wrkno = Common.GetWrkno(0); if (Common.plc_s_loctype[plcno - 1, i] == "Y") { li_loctype = 2; } else if (Common.plc_s_loctype[plcno - 1, i] == "N") { li_loctype = 1; } else { continue; } int stnType = 1; if (li_stano > 2000) { stnType = 2; } ls_locno = Common.GetLocNo(1, li_loctype, 0, li_stano, stnType); if (li_wrkno == 0 || ls_locno == "") { //toolStripStatusLabel4.Text = "磅秤站入库得到工作号和库位号失败"; lb_AnalyzeScale.Text = "生成工作号和库位失败--工作号" + li_wrkno + ";库位" + ls_locno; continue; } int li_crnrow = int.Parse(ls_locno.Substring(0, 2)); li_crnno = (li_crnrow + 1) / 2; int e_staNo = Common.getIoStaNo(1, li_crnno, li_stano); DateTime ldt_date = DateTime.Now; sql = " insert into asr_wrk_detl(wrk_no,io_time,mat_no) values(" + li_wrkno + ",'" + ldt_date + "','" + ls_mat_no + "');"; sql += " insert into asr_wrk_mast(wrk_no,wrk_sts,io_time,io_type,crn_no,io_pri,loc_no,sta_no,source_sta_no,barcode,ctn_type) "; sql += " values(" + li_wrkno + ",2,'" + ldt_date + "',1," + li_crnno + ",10,'" + ls_locno + "'," + e_staNo + "," + li_stano + ",'" + ls_barcode + "'," + li_loctype + "); "; sql += " update asr_loc_mast set loc_sts='S' where loc_no='" + ls_locno + "';"; //sql += " update bas_mat_code set status=1 where barcode='" + ls_barcode + "'"; bool result = Common.ExecAsrsModify(sql); if (result) { Common.gs_barcode_data[i] = ""; Common.AddPlcQuereCmd(plcno, "04" + li_wrkno.ToString("0000") + li_stano.ToString("0000") + e_staNo.ToString("0000")); Common.plc_i_Wrk_no[plcno, seqno] = li_wrkno; Common.plc_s_next_stn[plcno, seqno] = e_staNo.ToString(); //Common.plc_i_pakmk[plcno, seqno] = 1; toolStripStatusLabel4.Text = ""; //toolStripStatusLabel4.Text = ""; string ledMsg = "库位:" + ls_locno + ";" + ls_mat_no; if (i < 2) { if (Common.gs_led_data_pre[0] != ledMsg) { Common.gs_led_data[0] = ledMsg; Common.gs_led_data_pre[0] = ledMsg; } } else { if (Common.gs_led_data_pre[2] != ledMsg) { Common.gs_led_data[2] = ledMsg; Common.gs_led_data_pre[2] = ledMsg; } } } else { lb_AnalyzeScale.Text = "插入表asr_wrk_mast数据,更新asr_loc_mast表失败"; //toolStripStatusLabel4.Text = "8"; } //Common.gs_barcode = ""; } } else { lb_AnalyzeScale.Text = "站点不符合条件--要求自动/有物/可入/有ID"; //toolStripStatusLabel4.Text = "3"; } } } catch (Exception em) { //common.Class1.scal = true; //toolStripStatusLabel4.Text = "9" + r.Message; lb_AnalyzeScale.Text = "Proc_AnalyzeScale出错--" + em.Message; Common.WriteLogFile("WcsError", "Proc_AnalyzeScale----" + em.Message); return; } } /// /// 设备出库站,发送出货数据到LED后,更新LED标记OVE_MK /// //private void Proc_SendOutDataToLed() //{ // try // { // int stnno = 0, seqno = 0, li_crnno = 0; // string sql = "", ls_locno = "", s_outabled = ""; // string s_slocno = "", s_dlocno = "", s_picking = "N", s_emptymk = "N"; // string s_sstano = "", s_dstano = "", ls_matnr = "", ls_maktx = "", ls_anfme = "", ls_altme = "", ls_anfme1 = ""; // int i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0, plcno = 0, ledno = 0; // DateTime dt1 = System.DateTime.Now; // for (int i = 0; i < 3; i++) // { // switch (i) // { // case 0: // stnno = 6; // plcno = 0; // ledno = 0; // break; // case 1: // stnno = 8; // plcno = 0; // ledno = 1; // break; // case 2: // stnno = 13; // plcno = 0; // ledno = 2; // break; // } // seqno = Common.GetStnSeq(stnno); // string s_autoing = Common.plc_s_autoing[plcno, seqno]; // string s_loading = Common.plc_s_loading[plcno, seqno]; // string s_inreq1 = Common.plc_s_inreq1[plcno, seqno]; // int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno]; // string s_next_stn = Common.plc_s_next_stn[plcno, seqno]; // if (s_loading == "Y" && i_wrk_no > 0) // { // sql = "select top 1 source_loc_no,loc_no,source_sta_no,sta_no,picking,wrk_no,crn_no,wrk_sts,io_type,empty_mk "; // sql += " from asr_wrk_mast where wrk_no=" + i_wrk_no + " and (sta_no=4 or sta_no=13) and io_type>100 "; // //sql += " from asr_wrk_mast where wrk_no=" + i_wrk_no + " and sta_no=" + stnno + " and io_type>100 "; // DataView dv = Common.ExecAsrsSelect(sql); // if (dv.Count <= 0) // { // lb_CrnStnToOutStn.Text = "查询无资料--wrk_no=" + i_wrk_no; // continue; // } // foreach (System.Data.DataRowView drow in dv) // { // s_slocno = drow[0].ToString(); // s_dlocno = drow[1].ToString(); // s_sstano = drow[2].ToString(); // s_dstano = drow[3].ToString(); // s_picking = drow[4].ToString(); // i_wrkno = Convert.ToInt32(drow[5].ToString()); // i_crnno = Convert.ToInt32(drow[6].ToString()); // i_wrksts = Convert.ToInt32(drow[7].ToString()); // i_iotype = Convert.ToInt32(drow[8].ToString()); // s_emptymk = drow[9].ToString(); // } // if (i_iotype == 103) //拣料模式,更新打印需求标记,回报调用SAP打印接口 // { // UpdateWaitOutPrintMk(i_wrkno); // } // if (i_wrksts < 14 || i_iotype < 100) continue; // if (s_emptymk == "Y") // { // string ledMsg = "空盘出库;库位:" + s_slocno + ";;;;;;"; // if (Common.gs_led_data_pre[ledno] != ledMsg) // { // Common.gs_led_data[ledno] = ledMsg; // Common.gs_led_data_pre[ledno] = ledMsg; // } // } // else // { // sql = "select matnr from asr_wrk_detl where wrk_no=" + i_wrk_no + " "; // DataView dv_detlCnt = Common.ExecAsrsSelect(sql); // if (dv_detlCnt != null) // { // int count = dv_detlCnt.Count; // int yushu = 0; // if (dv_detlCnt.Count % 7 > 0) //有余数时页码加1 // { // yushu = 1; // } // Common.gi_led_PageNumber[ledno] = (int)(dv_detlCnt.Count / 7) + yushu; // } // string s_type = ""; // if (i_iotype == 101) // { // s_type = "出库库位: " + s_slocno; // //sql = "select matnr,maktx,anfme,altme,anfme from asr_wrk_detl where wrk_no=" + i_wrk_no + " "; // int index = (Common.gi_led_CurPageNumber[ledno] - 1) * 7 + 1; // int end = Common.gi_led_CurPageNumber[ledno] * 7; // sql = " select * from (select matnr,maktx,anfme,altme,anfme as anfme1,ROW_NUMBER() OVER(Order by modi_time,matnr) as rowid "; // sql += " from asr_wrk_detl where wrk_no=" + i_wrk_no + " ) a "; // sql += " where rowid between (" + index + ") and (" + end + ")"; // } // else if (i_iotype == 103) // { // s_type = "拣料库位: " + s_slocno; // } // else if (i_iotype == 104) // { // s_type = "并板库位: " + s_slocno; // } // if (i_iotype == 107) // { // s_type = "盘点库位: " + s_slocno; // } // //sql = "select matnr,maktx,anfme,altme from asr_wrk_detl where wrk_no=" + i_wrk_no + " "; // if (i_iotype != 101) // { // int index = (Common.gi_led_CurPageNumber[ledno] - 1) * 7 + 1; // int end = Common.gi_led_CurPageNumber[ledno] * 7; // sql = "select * from (select a.matnr,a.maktx,a.anfme,a.altme,b.anfme as anfme1,ROW_NUMBER() OVER(Order by a.modi_time,a.matnr) as rowid "; // sql += " from asr_wrk_detl a,asr_loc_detl b,asr_wrk_mast c where a.wrk_no=" + i_wrk_no + " "; // sql += " and a.wrk_no=c.wrk_no and a.matnr=b.matnr and c.source_loc_no=b.loc_no ) a"; // sql += " where rowid between (" + index + ") and (" + end + ") "; // } // DataView dv_detl = Common.ExecAsrsSelect(sql); // if (dv_detl.Count <= 0) // { // lb_CrnStnToOutStn.Text = "查询无资料--wrk_no=" + i_wrk_no; // continue; // } // string ls_ledData = s_type + ";"; // double li_anfme = 0, li_anfme1 = 0; // foreach (System.Data.DataRowView drow in dv_detl) // { // ls_matnr = drow[0].ToString(); // ls_maktx = drow[1].ToString(); // if (ls_maktx.Length > 4) // { // ls_maktx = ls_maktx.Substring(0, 5) + "."; // } // ls_maktx = ls_maktx.Replace(',', ' '); // ls_maktx = ls_maktx.Replace(';', ' '); // //ls_maktx = ""; // ls_anfme = drow[2].ToString(); // if (ls_anfme != "") // { // li_anfme = double.Parse(ls_anfme); // } // ls_altme = drow[3].ToString(); // ls_anfme1 = drow[4].ToString(); // if (ls_anfme1 != "") // { // li_anfme1 = double.Parse(ls_anfme1); // } // if (i_iotype == 107) // { // ls_ledData += ls_matnr + " " + ls_maktx + ";"; // //ls_ledData += ls_matnr + " " + ls_maktx + " QTY:" + li_anfme + "/STK:" + li_anfme1 + ";"; // } // else // { // ls_ledData += ls_matnr + " " + ls_maktx + " 数量:" + li_anfme + "/库存:" + li_anfme1 + ";"; // } // } // ls_ledData = ls_ledData.Substring(0, ls_ledData.Length - 1); // switch (ls_ledData.Split(';').Length) // { // case 1: // ls_ledData += ";;;;;;;"; // break; // case 2: // ls_ledData += ";;;;;;"; // break; // case 3: // ls_ledData += ";;;;;"; // break; // case 4: // ls_ledData += ";;;;"; // break; // case 5: // ls_ledData += ";;;"; // break; // case 6: // ls_ledData += ";;"; // break; // case 7: // ls_ledData += ";"; // break; // default: // break; // } // if (Common.gs_led_data_pre[ledno] != ls_ledData) // { // if (Common.gi_led_PageNumber[ledno] == 1 || // (Common.gi_led_PageNumber[ledno] > 1 && (Common.gi_led_Counts[ledno] % 8) == 0)) // { // Common.gs_led_data[ledno] = ls_ledData; // Common.gs_led_data_pre[ledno] = ls_ledData; // Common.gi_led_CurPageNumber[ledno]++; // if (Common.gi_led_CurPageNumber[ledno] > Common.gi_led_PageNumber[ledno]) // { // Common.gi_led_CurPageNumber[ledno] = 1; // } // } // if (Common.gi_led_PageNumber[ledno] > 1) // { // Common.gi_led_Counts[ledno]++; // if (Common.gi_led_Counts[ledno] > 8) // { // Common.gi_led_Counts[ledno] = 1; // } // } // } // } // sql = "update asr_wrk_mast set ove_mk='Y' where wrk_no =" + i_wrkno + ""; // Common.ExecAsrsModify(sql); // } // else // { // string ledMsg = ";;;;;;;"; // if (Common.gs_led_data_pre[ledno] != ledMsg) // { // Common.gi_led_PageNumber[ledno] = 1; // Common.gi_led_CurPageNumber[ledno] = 1; // Common.gi_led_Counts[ledno] = 0; // //Common.gi_led_Pages[ledno] = 1; // Common.gs_led_data[ledno] = ledMsg; // Common.gs_led_data_pre[ledno] = ledMsg; // } // } // } // } // catch (Exception em) // { // Common.WriteLogFile("WcsError", "Proc_SendOutDataToLed----" + em.Message); // } //} #region LED显示,已注释 ///// ///// 设备出库站,发送出货数据到LED后,更新LED标记OVE_MK ///// //private void Proc_SendOutDataToLed() //{ // try // { // int stnno = 0, seqno = 0, li_crnno = 0; // string sql = "", ls_locno = "", s_outabled = ""; // string s_slocno = "", s_dlocno = "", s_picking = "N", s_emptymk = "N"; // string s_sstano = "", s_dstano = "", ls_matnr = "", ls_maktx = "", ls_anfme = "", ls_altme = "", ls_anfme1 = ""; // int i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0, plcno = 0, ledno = 0; // DateTime dt1 = System.DateTime.Now; // for (int i = 0; i < 3; i++) // { // switch (i) // { // case 0: // stnno = 6; // plcno = 0; // ledno = 0; // break; // case 1: // stnno = 8; // plcno = 0; // ledno = 1; // break; // case 2: // stnno = 13; // plcno = 0; // ledno = 2; // break; // } // seqno = Common.GetStnSeq(stnno); // string s_autoing = Common.plc_s_autoing[plcno, seqno]; // string s_loading = Common.plc_s_loading[plcno, seqno]; // string s_inreq1 = Common.plc_s_inreq1[plcno, seqno]; // int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno]; // string s_next_stn = Common.plc_s_next_stn[plcno, seqno]; // //if (s_autoing == "Y" && s_loading == "Y" && i_wrk_no > 0) // if (s_loading == "Y" && i_wrk_no > 0) // { // sql = "select top 1 source_loc_no,loc_no,source_sta_no,sta_no,picking,wrk_no,crn_no,wrk_sts,io_type,empty_mk "; // sql += " from asr_wrk_mast where wrk_no=" + i_wrk_no + " and (sta_no=4 or sta_no=13) and io_type>100 "; // //sql += " from asr_wrk_mast where wrk_no=" + i_wrk_no + " and sta_no=" + stnno + " and io_type>100 "; // DataView dv = Common.ExecAsrsSelect(sql); // if (dv.Count <= 0) // { // lb_CrnStnToOutStn.Text = "查询无资料--wrk_no=" + i_wrk_no; // continue; // } // foreach (System.Data.DataRowView drow in dv) // { // s_slocno = drow[0].ToString(); // s_dlocno = drow[1].ToString(); // s_sstano = drow[2].ToString(); // s_dstano = drow[3].ToString(); // s_picking = drow[4].ToString(); // i_wrkno = Convert.ToInt32(drow[5].ToString()); // i_crnno = Convert.ToInt32(drow[6].ToString()); // i_wrksts = Convert.ToInt32(drow[7].ToString()); // i_iotype = Convert.ToInt32(drow[8].ToString()); // s_emptymk = drow[9].ToString(); // } // if (i_iotype == 103) //拣料模式,更新打印需求标记,回报调用SAP打印接口 // { // UpdateWaitOutPrintMk(i_wrkno); // } // if (i_wrksts < 14 || i_iotype < 100) continue; // if (s_emptymk == "Y") // { // string ledMsg = "空盘出库;库位:" + s_slocno + ";;"; // if (Common.gs_led_data_pre[ledno] != ledMsg) // { // Common.gi_led_PageSize[ledno] = 4; // Common.gs_led_data[ledno] = ledMsg; // Common.gs_led_data_pre[ledno] = ledMsg; // } // } // else // { // string s_type = ""; // if (i_iotype == 101) // { // s_type = "出库库位: " + s_slocno; // sql = "select matnr,maktx,anfme,altme,anfme from asr_wrk_detl where wrk_no=" + i_wrk_no + " "; // } // else if (i_iotype == 103) // { // s_type = "拣料库位: " + s_slocno; // } // else if (i_iotype == 104) // { // s_type = "并板库位: " + s_slocno; // } // if (i_iotype == 107) // { // s_type = "盘点库位: " + s_slocno; // } // //sql = "select matnr,maktx,anfme,altme from asr_wrk_detl where wrk_no=" + i_wrk_no + " "; // if (i_iotype != 101) // { // sql = "select a.matnr,a.maktx,a.anfme,a.altme,b.anfme from asr_wrk_detl a,asr_loc_detl b,asr_wrk_mast c "; // sql += " where a.wrk_no=" + i_wrk_no + " and a.wrk_no=c.wrk_no"; // sql += " and a.matnr=b.matnr and c.source_loc_no=b.loc_no"; // } // DataView dv_detl = Common.ExecAsrsSelect(sql); // if (dv_detl.Count <= 0) // { // lb_CrnStnToOutStn.Text = "查询无资料--wrk_no=" + i_wrk_no; // continue; // } // int li_1 = 1, li_2 = 1; // if (dv_detl.Count < 4) // { // Common.gi_led_PageSize[ledno] = 4; // } // else if (dv_detl.Count >= 4 && dv_detl.Count < 7) // { // Common.gi_led_PageSize[ledno] = 8; // li_1 = 1; // } // else // { // Common.gi_led_PageSize[ledno] = 8; // li_1 = 2; // } // //else if (dv_detl.Count > 8) // //{ // // li_1 = 3; // //} // string ls_ledData = s_type + ";"; // int li_anfme = 0, li_anfme1 = 0; // foreach (System.Data.DataRowView drow in dv_detl) // { // ls_matnr = drow[0].ToString(); // ls_maktx = drow[1].ToString(); // if (ls_maktx.Length > 4) // { // ls_maktx = ls_maktx.Substring(0, 5) + "."; // } // ls_maktx = ls_maktx.Replace(',',' '); // ls_maktx = ls_maktx.Replace(';', ' '); // ls_anfme = drow[2].ToString(); // if (ls_anfme != "") // { // li_anfme = (int)double.Parse(ls_anfme); // } // ls_altme = drow[3].ToString(); // ls_anfme1 = drow[4].ToString(); // if (ls_anfme1 != "") // { // li_anfme1 = (int)double.Parse(ls_anfme1); // } // if (i_iotype == 107) // { // if (li_2 % li_1 == 0) // { // ls_ledData += ls_matnr + " " + ls_maktx + ";"; // } // else // { // ls_ledData += ls_matnr + " " + ls_maktx + ", "; // } // } // else // { // if (li_2 % li_1 == 0) // { // ls_ledData += ls_matnr + " " + ls_maktx + " Q:" + li_anfme + "/" + li_anfme1 + ";"; // } // else // { // ls_ledData += ls_matnr + " " + ls_maktx + " Q:" + li_anfme + "/" + li_anfme1 + ", "; // } // } // li_2++; // } // switch (ls_ledData.Split(';').Length) // { // case 1: // if (Common.gi_led_PageSize[ledno] == 4) ls_ledData += ";;;"; // else ls_ledData += ";;;;;;;"; // break; // case 2: // if (Common.gi_led_PageSize[ledno] == 4) ls_ledData += ";;"; // else ls_ledData += ";;;;;;"; // break; // case 3: // if (Common.gi_led_PageSize[ledno] == 4) ls_ledData += ";"; // else ls_ledData += ";;;;;"; // break; // case 4: // if (Common.gi_led_PageSize[ledno] == 4) ls_ledData += ""; // else ls_ledData += ";;;;"; // break; // case 5: // Common.gi_led_PageSize[ledno] = 8; // ls_ledData += ";;;"; // break; // case 6: // Common.gi_led_PageSize[ledno] = 8; // ls_ledData += ";;"; // break; // case 7: // Common.gi_led_PageSize[ledno] = 8; // ls_ledData += ";"; // break; // default: // break; // } // //switch (dv_detl.Count) // //{ // // case 1: // // if (Common.gi_led_PageSize[ledno] == 4) ls_ledData += ";"; // // else ls_ledData += ";;;;;"; // // break; // // case 2: // // if (Common.gi_led_PageSize[ledno] == 4) ls_ledData += ""; // // else ls_ledData += ";;;;"; // // break; // // case 3: // // ls_ledData += ";;;"; // // break; // // case 4: // // ls_ledData += ";;"; // // break; // // case 5: // // ls_ledData += ";"; // // break; // // case 6: // // ls_ledData += ""; // // break; // // default: // // break; // //} // if (Common.gs_led_data_pre[ledno] != ls_ledData) // { // Common.gs_led_data[ledno] = ls_ledData; // Common.gs_led_data_pre[ledno] = ls_ledData; // } // } // sql = "update asr_wrk_mast set ove_mk='Y' where wrk_no =" + i_wrkno + ""; // Common.ExecAsrsModify(sql); // } // else // { // string ledMsg = ";;;"; // if (Common.gs_led_data_pre[ledno] != ledMsg) // { // Common.gi_led_PageSize[ledno] = 4; // Common.gs_led_data[ledno] = ledMsg; // Common.gs_led_data_pre[ledno] = ledMsg; // } // } // } // } // catch (Exception em) // { // Common.WriteLogFile("WcsError", "Proc_SendOutDataToLed----" + em.Message); // } //} #endregion /// /// 拣料模式,更新打印需求标记,回报调用SAP打印接口 /// /// 工作号 private void UpdateWaitOutPrintMk(int wrk_no) { try { string sql = "select lgnum,tbnum,tbpos,zmatid,matnr,maktx,werks,anfme,altme,zpallet,bname from asr_wrk_detl where wrk_no=" + wrk_no; DataView dv_wrkdet = Common.ExecAsrsSelect(sql); if (dv_wrkdet == null || dv_wrkdet.Count < 1) { return; } string sqlDetl = ""; foreach (DataRowView drow in dv_wrkdet) { string lgnum = "", tbnum = "", tbpos = "", zmatid = "", matnr = "", maktx = "", werks = "", anfme = "", altme = "", zpallet = "", bname = ""; lgnum = drow[0].ToString(); tbnum = drow[1].ToString(); tbpos = drow[2].ToString(); zmatid = drow[3].ToString(); matnr = drow[4].ToString(); maktx = drow[5].ToString(); werks = drow[6].ToString(); anfme = drow[7].ToString(); altme = drow[8].ToString(); zpallet = drow[9].ToString(); bname = drow[10].ToString(); sqlDetl += " update cust_wait_pakout set prnstatus=1 where lgnum='" + lgnum + "' and tanum=" + tbnum; sqlDetl += " and tapos=" + tbpos + " and matnr=" + matnr + " and action=2 and prnstatus=0;"; } bool result = Common.ExecAsrsModify(sqlDetl); } catch (Exception em) { Common.WriteLogFile("WcsError", "UpdateWaitOutPrintMk----" + em.Message); } } /// /// 空栈板初始化入库,叉车入库站放货 /// 根据站点信号,启动入库,下发命令给PLC /// private void Proc_StoreEmptyPlt() { try { for (int i = 0; i < 2; i++) { int plcno = 0, seqno = 0, li_wrkno = 0, li_stano = 0, li_crnno = 0, ledno = 0; int li_loctype = 1, li_rStano = 0; //double ld_wt = 0; string ls_locno = "", sql = ""; string ls_barcode = ""; DateTime ldt_date = DateTime.Now; switch (i) { case 0: li_stano = 104; li_rStano = 101; //退库站 ledno = 0; plcno = 0; break; case 1: li_stano = 104; li_rStano = 113; //退库站 ledno = 1; plcno = 0; break; case 2: li_stano = 104; li_rStano = 127; //退库站 ledno = 1; plcno = 1; break; } seqno = Common.GetStnSeq(li_stano); ls_barcode = Common.gs_barcode_data[i]; string s_autoing = Common.plc_s_autoing[plcno, seqno]; string s_loading = Common.plc_s_loading[plcno, seqno]; string s_canining = Common.plc_s_canining[plcno, seqno]; string s_emptyMk = Common.plc_s_inreq1[plcno, seqno]; int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno]; string s_next_stn = Common.plc_s_next_stn[plcno, seqno]; if (s_autoing == "Y" && s_loading == "Y" && s_canining == "Y" && s_next_stn == li_stano.ToString() && s_emptyMk == "Y" && i_wrk_no == 9999 && Common.plc_i_pakmk[plcno, seqno] == 0) { #region 生成工作档 //int stnType = 1; //ls_locno = Common.GetLocNo(10, li_loctype, 0, li_stano, stnType); //if (ls_locno == "") //{ // //toolStripStatusLabel4.Text = "磅秤站入库得到工作号和库位号失败"; // lb_AnalyzeScale.Text = "查找库位失败;库位" + ls_locno; // continue; //} //li_wrkno = Common.GetWrkno(0); //if (li_wrkno == 0) //{ // lb_AnalyzeScale.Text = "生成工作号失败;" + ls_barcode; // continue; //} //int li_crnrow = int.Parse(ls_locno.Substring(0, 2)); //li_crnno = (li_crnrow + 1) / 2; //int e_staNo = Common.getIoStaNo(1, li_crnno, li_stano); //sql = " insert into asr_wrk_mast(wrk_no,wrk_sts,io_time,io_type,crn_no,io_pri,loc_no,sta_no,source_sta_no,empty_mk,ctn_type,barcode) "; //sql += " values(" + li_wrkno + ",2,'" + ldt_date + "',10," + li_crnno + ",10,'" + ls_locno + "'," + e_staNo + "," + li_stano + ",'Y',1,'" + ls_barcode + "'); "; //sql += " update asr_loc_mast set loc_sts='S' where loc_no='" + ls_locno + "';"; //bool result = Common.ExecAsrsModify(sql); //if (result) //{ // Common.gs_barcode_data[i] = ""; // Common.AddPlcQuereCmd(plcno, "04" + li_wrkno.ToString("0000") + li_stano.ToString("0000") + e_staNo.ToString("0000")); // Common.plc_i_Wrk_no[plcno, seqno] = li_wrkno; // Common.plc_s_next_stn[plcno, seqno] = e_staNo.ToString(); // Common.plc_i_pakmk[plcno, seqno] = 1; // Common.plc_s_inreq1[plcno, seqno] = "N"; // toolStripStatusLabel4.Text = ""; //} //else //{ // lb_AnalyzeScale.Text = "插入表asr_wrk_mast数据,更新asr_loc_mast表失败"; // //toolStripStatusLabel4.Text = "8"; //} #endregion string postData = ""; string url = Common.HttpUrl; JSONObject json = new JSONObject(); json.put("ioType", 10); json.put("sourceStaNo", li_stano); json.put("barcode", ls_barcode); json.put("locType1", li_loctype); postData = json.ToString(); string responseData = HttpPostHelper.doHttpPost(url, postData); JSONObject jsonRes = new JSONObject(responseData); int code = jsonRes.getInt("code"); if (code == 200) { JSONObject data = new JSONObject(jsonRes.getString("data")); int e_staNo = data.getInt("staNo"); li_crnno = data.getInt("crnNo"); ls_locno = data.getString("locNo"); li_wrkno = data.getInt("workNo"); Common.gs_barcode_data[i] = ""; Common.AddPlcQuereCmd(plcno, "04" + li_wrkno.ToString("0000") + li_stano.ToString("0000") + e_staNo.ToString("0000")); Common.plc_i_Wrk_no[plcno, seqno] = li_wrkno; Common.plc_s_next_stn[plcno, seqno] = e_staNo.ToString(); Common.plc_i_pakmk[plcno, seqno] = 1; Common.plc_s_canining[plcno, seqno] = "N"; Common.plc_s_inreq1[plcno, seqno] = "N"; toolStripStatusLabel4.Text = ""; string ledMsg = "启动空板入库;库位号" + ls_locno + ";工作号" + li_wrkno; if (Common.gs_led_data_pre[ledno] != ledMsg) { Common.gs_led_data[ledno] = ledMsg; Common.gs_led_data_pre[ledno] = ledMsg; } } else { string ledMsg = "启动空板入库失败;失败;" + jsonRes.getString("msg"); if (Common.gs_led_data_pre[ledno] != ledMsg) { Common.gs_led_data[ledno] = ledMsg; Common.gs_led_data_pre[ledno] = ledMsg; } toolStripStatusLabel4.Text = jsonRes.getString("msg"); continue; } } else { lb_AnalyzeScale.Text = "站点不符合条件--要求自动/有物/可入/有ID"; //toolStripStatusLabel4.Text = "3"; } } } catch (Exception em) { //common.Class1.scal = true; //toolStripStatusLabel4.Text = "9" + r.Message; lb_AnalyzeScale.Text = "Proc_GenerateStoreWrkFile出错--" + em.Message; Common.WriteLogFile("WcsError", "Proc_GenerateStoreWrkFile----" + em.Message); return; } } /// /// 主程序入口,启动设备入出库操作 /// private void t_run_Tick(object sender, EventArgs e) { //DateTime dt = DateTime.Now; //DateTime dt1 = DateTime.Parse("2020-05-31"); //int ret = DateTime.Compare(dt1, dt); //if (ret < 0) //{ // return; //} try { string s_inenabled = "N"; string s_outenabled = "N"; if (Common.gi_Online_Flag == Common.ch_CMD_START) { //Proc_AnalyzeScale(); //入库站直接生成工作状态为2的任务,并下发命令到PLC Proc_GenerateStoreWrkFile(); //入库站,根据条码扫描生成入库工作档 Proc_StnToCrnStn(); //入库站至堆垛机入库站,工作状态1->2,下发命令到PLC Proc_StnToCrnStn_pick(); Proc_CrnStnToOutStn(); for (int crn = 0; crn < Common.ci_crn_count; crn++) { if (Common.crn_s_commandstr[crn] != "") continue; //this.Proc_LoctoLoc1(); if (Common.gb_crn_status[crn] == true) { try { DataView dv = Common.ExecAsrsSelect("select in_enable,out_enable from dbo.asr_bas_crnp where crn_no=" + (crn + 1)); foreach (DataRowView drow in dv) { s_inenabled = drow[0].ToString(); s_outenabled = drow[1].ToString(); } } catch (Exception) { goto IL_212; } //Proc_LoctoLoc(crn); if (Common.crn_i_crn_sts[crn] == Common.ci_CRN_STS_IDLE || Common.crn_i_Wrkno[crn] == 0) { if (Common.gs_crnlastio[crn] == "I") { if (s_inenabled == "Y") { this.Proc_CrnStnToLoc(crn); Common.gs_crnlastio[crn] = "O"; } else if (s_outenabled == "Y") { this.Proc_LocToCrnStn(crn); Common.gs_crnlastio[crn] = "I"; } } else if (Common.gs_crnlastio[crn] == "O") { if (s_outenabled == "Y") { this.Proc_LocToCrnStn(crn); Common.gs_crnlastio[crn] = "I"; } else if (s_inenabled == "Y") { this.Proc_CrnStnToLoc(crn); Common.gs_crnlastio[crn] = "O"; } } } } Proc_LoctoLoc(crn); IL_212: ; } //this.proc_stntostn(); } Proc_StoreFinished(); //Proc_UpdateCrnMove(); Proc_RecCrnErr(); } catch (Exception em) { Common.WriteLogFile("WcsError", "t_run----" + em.Message); } } /// /// 处理演示功能 /// private void Proc_Yanshi() { try { //1#堆垛机演示 if (Common.gi_Yanshi_Flag[0] == true) { int wrk_no = 0; string s_slocno = "", s_dlocno = "", sql = "", locsts = "", locsts1 = ""; sql = "select * from dbo.asr_wrk_mast where wrk_sts in (11,12,3,4) and (io_type=11) and crn_no= 1 order by io_time,wrk_no"; DataView dv = Common.ExecAsrsSelect(sql); if (dv != null && dv.Count <= 0) { int loc_type1 = 0; //库位类型 string loc_sts = ""; //库位状态 string sql1 = "select top 1 loc_no,loc_type1,loc_sts from asr_loc_mast where loc_sts in ('D') and crn_no = 1 and row1 not in (2,1) ORDER BY NEWID()"; DataView dv1 = Common.ExecAsrsSelect(sql1); if (dv1 != null && dv1.Count > 0) { foreach (System.Data.DataRowView dvrow in dv1) { s_slocno = dvrow[0].ToString(); loc_type1 = int.Parse(dvrow[1].ToString()); loc_sts = dvrow[2].ToString(); } } //在库库位查询库存明细 string matnr = ""; if (s_slocno != "" && loc_sts == "F") { string sqlDetl = "select top 1 matnr from asr_loc_detl where loc_no='" + s_slocno + "';"; DataView dvDetl = Common.ExecAsrsSelect(sqlDetl); if (dvDetl != null && dvDetl.Count > 0) { foreach (System.Data.DataRowView dvrow in dvDetl) { matnr = dvrow[0].ToString(); } } } string sql2 = "select top 1 loc_no from asr_loc_mast where loc_sts = 'O' and crn_no = 1 and loc_type1 = " + loc_type1 + " and row1 not in (2,1) order BY NEWID() "; DataView dv2 = Common.ExecAsrsSelect(sql2); if (dv2 != null && dv2.Count > 0) { foreach (System.Data.DataRowView dvrow in dv2) { s_dlocno = dvrow[0].ToString(); } } if (s_slocno != "" && s_dlocno != "") { wrk_no = Common.GetWrkno(0); DateTime dt = DateTime.Now; string emptyMk = loc_sts == "D" ? "Y" : "N"; string insertSql = " insert into asr_wrk_mast(wrk_no,wrk_sts,io_type,crn_no,io_pri,wrk_date,loc_no,source_loc_no,empty_mk,io_time) "; insertSql += " values(" + wrk_no + ",11,11,1,13,'" + dt + "','" + s_dlocno + "','" + s_slocno + "','" + emptyMk + "','" + dt + "');"; if (loc_sts == "F" && matnr != "") { insertSql += " insert into asr_wrk_detl(wrk_no,io_time,matnr,anfme) "; insertSql += " values(" + wrk_no + ",'" + dt + "','" + matnr + "',1); "; } insertSql += " update asr_loc_mast set loc_sts='R' where loc_no='" + s_slocno + "'; "; insertSql += " update asr_loc_mast set loc_sts='S' where loc_no='" + s_dlocno + "'; "; bool ret = Common.ExecAsrsModify(insertSql); } } } //2#堆垛机演示 if (Common.gi_Yanshi_Flag[1] == true) { int wrk_no = 0; string s_slocno = "", s_dlocno = "", sql = "", locsts = "", locsts1 = ""; sql = "select * from dbo.asr_wrk_mast where wrk_sts in (11,12,3,4) and (io_type=11) and crn_no= 2 order by io_time,wrk_no"; DataView dv = Common.ExecAsrsSelect(sql); if (dv != null && dv.Count <= 0) { int loc_type1 = 0; string loc_sts = ""; //库位状态 string sql1 = "select top 1 loc_no,loc_type1,loc_sts from asr_loc_mast where loc_sts in ('D') and crn_no = 2 ORDER BY NEWID()"; DataView dv1 = Common.ExecAsrsSelect(sql1); if (dv1 != null && dv1.Count > 0) { foreach (System.Data.DataRowView dvrow in dv1) { s_slocno = dvrow[0].ToString(); loc_type1 = int.Parse(dvrow[1].ToString()); loc_sts = dvrow[2].ToString(); } } //在库库位查询库存明细 string matnr = ""; if (s_slocno != "" && loc_sts == "F") { string sqlDetl = "select top 1 matnr from asr_loc_detl where loc_no='" + s_slocno + "';"; DataView dvDetl = Common.ExecAsrsSelect(sqlDetl); if (dvDetl != null && dvDetl.Count > 0) { foreach (System.Data.DataRowView dvrow in dvDetl) { matnr = dvrow[0].ToString(); } } } string sql2 = "select top 1 loc_no from asr_loc_mast where loc_sts = 'O' and crn_no = 2 and loc_type1 = " + loc_type1 + " order BY NEWID() "; DataView dv2 = Common.ExecAsrsSelect(sql2); if (dv2 != null && dv2.Count > 0) { foreach (System.Data.DataRowView dvrow in dv2) { s_dlocno = dvrow[0].ToString(); } } if (s_slocno != "" && s_dlocno != "") { wrk_no = Common.GetWrkno(0); DateTime dt = DateTime.Now; string emptyMk = loc_sts == "D" ? "Y" : "N"; string insertSql = " insert into asr_wrk_mast(wrk_no,wrk_sts,io_type,crn_no,io_pri,wrk_date,loc_no,source_loc_no,empty_mk,io_time) "; insertSql += " values(" + wrk_no + ",11,11,2,13,'" + dt + "','" + s_dlocno + "','" + s_slocno + "','" + emptyMk + "','" + dt + "');"; if (loc_sts == "F" && matnr != "") { insertSql += " insert into asr_wrk_detl(wrk_no,io_time,matnr,anfme) "; insertSql += " values(" + wrk_no + ",'" + dt + "','" + matnr + "',1); "; } insertSql += " update asr_loc_mast set loc_sts='R' where loc_no='" + s_slocno + "'; "; insertSql += " update asr_loc_mast set loc_sts='S' where loc_no='" + s_dlocno + "'; "; bool ret = Common.ExecAsrsModify(insertSql); } } } } catch (Exception em) { Common.WriteLogFile("WcsError", "演示失败----" + em.Message); } } private void timer1_Tick(object sender, EventArgs e) { Proc_SendOutDataToLed(); Proc_StoreEmptyPlt(); Proc_Yanshi(); } /// /// 设备出库站,发送出货数据到LED后,更新LED标记OVE_MK /// private void Proc_SendOutDataToLed() { try { int stnno = 0, seqno = 0, li_crnno = 0, seqno1 = 0; string sql = "", ls_locno = "", s_outabled = ""; string s_slocno = "", s_dlocno = "", s_picking = "N", s_emptymk = "N"; string s_sstano = "", s_dstano = "", ls_matnr = "", ls_maktx = "", ls_anfme = "", ls_altme = "", ls_anfme1 = ""; int i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0, plcno = 0, ledno = 0; DateTime dt1 = System.DateTime.Now; int stnno1 = 0; string plcError = ""; for (int i = 0; i < 6; i++) { switch (i) { case 0: stnno = 101; plcno = 0; ledno = 0; stnno1 = 104; break; case 1: stnno = 201; plcno = 0; ledno = 1; stnno1 = 204; break; } seqno1 = Common.GetStnSeq(stnno1); string s_loading1 = Common.plc_s_loading[plcno, seqno1]; seqno = Common.GetStnSeq(stnno); string s_autoing = Common.plc_s_autoing[plcno, seqno]; string s_loading = Common.plc_s_loading[plcno, seqno]; string s_inreq1 = Common.plc_s_inreq1[plcno, seqno]; int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno]; string s_next_stn = Common.plc_s_next_stn[plcno, seqno]; if (s_loading == "Y" && i_wrk_no > 0) { sql = "select top 1 source_loc_no,loc_no,source_sta_no,sta_no,picking,wrk_no,crn_no,wrk_sts,io_type,empty_mk "; //sql += " from asr_wrk_mast where wrk_no=" + i_wrk_no + " and (sta_no=4 or sta_no=13) and io_type>100 "; sql += " from asr_wrk_mast where wrk_no=" + i_wrk_no + " and sta_no=" + stnno + " and io_type>100 "; DataView dv = Common.ExecAsrsSelect(sql); if (dv.Count <= 0) { lb_CrnStnToOutStn.Text = "查询无资料--wrk_no=" + i_wrk_no; continue; } foreach (System.Data.DataRowView drow in dv) { s_slocno = drow[0].ToString(); s_dlocno = drow[1].ToString(); s_sstano = drow[2].ToString(); s_dstano = drow[3].ToString(); s_picking = drow[4].ToString(); i_wrkno = Convert.ToInt32(drow[5].ToString()); i_crnno = Convert.ToInt32(drow[6].ToString()); i_wrksts = Convert.ToInt32(drow[7].ToString()); i_iotype = Convert.ToInt32(drow[8].ToString()); s_emptymk = drow[9].ToString(); } //if (i_iotype == 103) //拣料模式,更新打印需求标记,回报调用SAP打印接口 //{ // UpdateWaitOutPrintMk(i_wrkno); //} if (i_wrksts < 14 || i_iotype < 100) continue; if (s_emptymk == "Y") { string ledMsg = "空盘出库;库位:" + s_slocno + ";"; if (Common.gs_led_data_pre[ledno] != ledMsg) { Common.gs_led_data[ledno] = ledMsg; Common.gs_led_data_pre[ledno] = ledMsg; } } else { //sql = "select matnr from asr_wrk_detl where wrk_no=" + i_wrk_no + " "; //DataView dv_detlCnt = Common.ExecAsrsSelect(sql); //if (dv_detlCnt!=null) //{ //int count = dv_detlCnt.Count; //int yushu = 0; //if (dv_detlCnt.Count % 7 > 0) //有余数时页码加1 //{ // yushu = 1; //} //Common.gi_led_PageNumber[ledno] = (int)(dv_detlCnt.Count / 7) + yushu ; //} string s_type = ""; if (i_iotype == 101) { s_type = "出库库位: " + s_slocno; //sql = "select matnr,maktx,anfme,altme,anfme from asr_wrk_detl where wrk_no=" + i_wrk_no + " "; //int index = (Common.gi_led_CurPageNumber[ledno] - 1) * 7 + 1; //int end = Common.gi_led_CurPageNumber[ledno] * 7; //sql = " select * from (select matnr,maktx,anfme,altme,anfme as anfme1,ROW_NUMBER() OVER(Order by modi_time,matnr) as rowid "; //sql += " from asr_wrk_detl where wrk_no=" + i_wrk_no + " ) a "; //sql += " where rowid between (" + index + ") and (" + end + ")"; } else if (i_iotype == 103) { s_type = "拣料库位: " + s_slocno; } else if (i_iotype == 104) { s_type = "并板库位: " + s_slocno; } if (i_iotype == 107) { s_type = "盘点库位: " + s_slocno; } sql = "select top 1 mat_no,mat_name,qty from asr_wrk_detl where wrk_no=" + i_wrk_no + " "; //if (i_iotype != 101) //{ //int index = (Common.gi_led_CurPageNumber[ledno] - 1) * 7 + 1; //int end = Common.gi_led_CurPageNumber[ledno] * 7; //sql = "select * from (select a.matnr,a.maktx,a.anfme,a.altme,b.anfme as anfme1,ROW_NUMBER() OVER(Order by a.modi_time,a.matnr) as rowid "; //sql += " from asr_wrk_detl a,asr_loc_detl b,asr_wrk_mast c where a.wrk_no=" + i_wrk_no + " "; //sql += " and a.wrk_no=c.wrk_no and a.matnr=b.matnr and c.source_loc_no=b.loc_no ) a"; //sql += " where rowid between (" + index + ") and (" + end + ") "; //} DataView dv_detl = Common.ExecAsrsSelect(sql); if (dv_detl.Count <= 0) { lb_CrnStnToOutStn.Text = "查询无资料--wrk_no=" + i_wrk_no; continue; } string ls_ledData = s_type + ";"; double li_anfme = 0;//, li_anfme1 = 0; foreach (System.Data.DataRowView drow in dv_detl) { ls_matnr = drow[0].ToString(); ls_matnr = ls_maktx.Replace(',', ' '); ls_matnr = ls_maktx.Replace(';', ' '); ls_matnr = ls_matnr.Substring(0, 12); ls_maktx = drow[1].ToString(); //if (ls_maktx.Length > 4) //{ // ls_maktx = ls_maktx.Substring(0, 5) + "."; //} ls_maktx = ls_maktx.Replace(',', ' '); ls_maktx = ls_maktx.Replace(';', ' '); //ls_maktx = ""; ls_anfme = drow[2].ToString(); if (ls_anfme != "") { li_anfme = double.Parse(ls_anfme); } //ls_altme = drow[3].ToString(); //ls_anfme1 = drow[4].ToString(); //if (ls_anfme1 != "") //{ // li_anfme1 = double.Parse(ls_anfme1); //} //if (i_iotype == 107) //{ // ls_ledData += ls_matnr + " " + ls_maktx + ";"; // //ls_ledData += ls_matnr + " " + ls_maktx + " QTY:" + li_anfme + "/STK:" + li_anfme1 + ";"; //} //else //{ ls_ledData += ls_matnr + " ;数量:" + li_anfme + ";"; // //ls_ledData += ls_matnr + " " + ls_maktx + " 数量:" + li_anfme + "/库存:" + li_anfme1 + ";"; //} } ls_ledData = ls_ledData.Substring(0, ls_ledData.Length - 1); switch (ls_ledData.Split(';').Length) { case 1: ls_ledData += ";;;;;;;"; break; case 2: ls_ledData += ";;;;;;"; break; case 3: ls_ledData += ";;;;;"; break; case 4: ls_ledData += ";;;;"; break; case 5: ls_ledData += ";;;"; break; case 6: ls_ledData += ";;"; break; case 7: ls_ledData += ";"; break; default: break; } if (Common.gs_led_data_pre[ledno] != ls_ledData) { Common.gs_led_data[ledno] = ls_ledData; Common.gs_led_data_pre[ledno] = ls_ledData; } } //sql = "update asr_wrk_mast set ove_mk='Y' where wrk_no =" + i_wrkno + ""; //Common.ExecAsrsModify(sql); } else if (s_loading1 == "N") { string ledMsg = ";;"; if (Common.gs_led_data_pre[ledno] != ledMsg) { //Common.gi_led_PageNumber[ledno] = 1; //Common.gi_led_CurPageNumber[ledno] = 1; //Common.gi_led_Counts[ledno] = 0; //Common.gi_led_Pages[ledno] = 1; Common.gs_led_data[ledno] = ledMsg; Common.gs_led_data_pre[ledno] = ledMsg; } } } } catch (Exception em) { Common.WriteLogFile("WcsError", "Proc_SendOutDataToLed----" + em.Message); } } /// /// 执行对工作档的入库完成 /// private void Proc_StoreFinished() { try { int wrk_no = 0, wrk_sts = 0, io_type = 0; DateTime dt1 = System.DateTime.Now; for (int crn = 0; crn < Common.ci_crn_count; crn++) { if (Common.Mode[crn] == Common.ci_CRN_ONLINE && (Common.crn_i_kind[crn] == 7 || Common.crn_i_kind[crn] == 12) && Common.CrnState[crn] == Common.ci_CRN_STS_TASK_FINISH && Common.TaskNo[crn] > 0 && Common.TaskFinish[crn] == 1 && Common.TaskFlag[crn] == 0) { wrk_no = Common.TaskNo[crn]; if (wrk_no == 0) { continue; } try { DataView dv = Common.ExecAsrsSelect("select wrk_sts,io_type from dbo.asr_wrk_mast where wrk_no=" + wrk_no + ""); foreach (System.Data.DataRowView drow in dv) { wrk_sts = Convert.ToInt32(drow[0].ToString()); io_type = Convert.ToInt32(drow[1].ToString()); } } catch (Exception e) { continue; } if (wrk_sts == 3 && (io_type == 1 || io_type == 10 || io_type == 53 || io_type == 54 || io_type == 57 || io_type == 11)) { if (Common.ExecAsrsModify("update dbo.asr_wrk_mast set wrk_sts =4,crn_end_time ='" + dt1 + "' where wrk_no =" + wrk_no + "") == true) { Common.TaskFlag[crn] = 1; } } } } } catch (Exception em) { Common.WriteLogFile("WcsError", "Proc_StoreFinished----" + em.Message); } } /// /// 记录堆垛机异常信息 /// private void Proc_RecCrnErr() { try { int wrkno = 0; string locno = ""; string crnno = ""; int tag = 0; DateTime dt1 = System.DateTime.Now, dt2 = System.DateTime.Now; for (int crn = 0; crn < Common.ci_crn_count; crn++) { //堆垛机产生异常 wrkno = Common.crn_i_Wrkno[crn]; if (wrkno == 0) { wrkno = Common.gi_crn_wrkno[crn]; } if (Common.crn_i_kind[crn] == 7) { locno = Common.crn_s_Tlocno[crn]; int row = 0, bay = 0, lev = 0; row = int.Parse(locno.Substring(0, 2)); bay = int.Parse(locno.Substring(2, 3)) - 1; lev = int.Parse(locno.Substring(5, 2)); locno = row.ToString().PadLeft(2, '0') + bay.ToString().PadLeft(3, '0') + lev.ToString().PadLeft(2, '0'); } else if (Common.crn_i_kind[crn] == 8) { locno = Common.crn_s_Flocno[crn]; int row1 = 0, bay1 = 0, lev1 = 0; row1 = int.Parse(locno.Substring(0, 2)); bay1 = int.Parse(locno.Substring(2, 3)) - 1; lev1 = int.Parse(locno.Substring(5, 2)); locno = row1.ToString().PadLeft(2, '0') + bay1.ToString().PadLeft(3, '0') + lev1.ToString().PadLeft(2, '0'); } else { locno = ""; } crnno = "C" + (crn + 1).ToString(); try { DataView dv = Common.ExecAsrsSelect("select top 1 io_time from dbo.asr_wrk_mast where wrk_no=" + wrkno + ""); foreach (System.Data.DataRowView drow in dv) { dt2 = Convert.ToDateTime(drow[0].ToString()); } } catch (Exception e) { } if (Common.Mode[crn] == 1) { tag = 1; } else { tag = 0; } if (Common.AlarmCode[crn] > 0 && Common.gs_crn_err_pre[crn] == "0") { Common.ExecAsrsModify("insert into dbo.asr_stk_plcm(io_time,wrk_no,s_location,s_station,o_location,dev_no,modi_user,modi_time,wrk_time,tag) values('" + dt1 + "'," + wrkno + ",'" + Common.AlarmCode[crn].ToString() + "','Y','" + locno + "','" + crnno + "','Online','" + dt1 + "','" + dt2 + "'," + tag + ")"); } //堆垛机恢复异常 else if (Common.AlarmCode[crn] == 0 && Common.gs_crn_err_pre[crn] != "0") { Common.ExecAsrsModify("insert into dbo.asr_stk_plcm(io_time,wrk_no,s_location,s_station,o_location,dev_no,modi_user,modi_time,wrk_time,tag) values('" + dt1 + "'," + wrkno + ",'" + Common.gs_crn_err_pre[crn] + "','N','" + locno + "','" + crnno + "','Online','" + dt1 + "','" + dt2 + "'," + tag + ")"); } Common.gs_crn_err_pre[crn] = Common.AlarmCode[crn].ToString(); } } catch (Exception em) { Common.WriteLogFile("WcsError", "Proc_RecCrnErr----" + em.Message); } } /// /// 更新堆垛机移动时工作档状态 /// private void Proc_UpdateCrnMove() { try { int wrk_no = 0, wrk_sts = 0, iotype = 0; DateTime dt1 = System.DateTime.Now; for (int crn = 0; crn < Common.ci_crn_count; crn++) { if (Common.crn_i_crn_sts[crn] == Common.ci_CRN_STS_STORE_MOVE || Common.crn_i_crn_sts[crn] == Common.ci_CRN_STS_STORE_OK) { wrk_no = Common.crn_i_Wrkno[crn]; if (wrk_no == 0) { wrk_no = Common.gi_crn_wrkno[crn]; } try { DataView dv = Common.ExecAsrsSelect("select wrk_sts,io_type from dbo.asr_wrk_mast where wrk_no=" + wrk_no + ""); foreach (System.Data.DataRowView drow in dv) { wrk_sts = Convert.ToInt32(drow[0].ToString()); } } catch (Exception e) { continue; } if (wrk_sts < 3 || wrk_sts == 7) { if (Common.ExecAsrsModify("update dbo.asr_wrk_mast set wrk_sts =3 ,crn_str_time ='" + dt1 + "' where wrk_no =" + wrk_no + "") == true) { Common.gs_crnlastio[crn] = "O"; } } } else if (Common.crn_i_crn_sts[crn] == Common.ci_CRN_STS_RETRIEVE_MOVE || Common.crn_i_crn_sts[crn] == Common.ci_CRN_STS_RETRIEVE_OK || Common.crn_i_crn_sts[crn] == Common.ci_CRN_STS_LOCATION_MOVE) { wrk_no = Common.crn_i_Wrkno[crn]; if (wrk_no == 0) { wrk_no = Common.gi_crn_wrkno[crn]; } try { DataView dv = Common.ExecAsrsSelect("select top 1 wrk_sts,io_type from dbo.asr_wrk_mast where wrk_no=" + wrk_no + ""); foreach (System.Data.DataRowView drow in dv) { wrk_sts = Convert.ToInt32(drow[0].ToString()); iotype = Convert.ToInt32(drow[1].ToString()); } } catch (Exception e) { continue; } if ((wrk_sts < 12 && (iotype == 104 || iotype == 107 || iotype == 103)) || (wrk_sts < 12 && (iotype == 101 || iotype == 110)) || (wrk_sts < 12 && iotype == 11)) { if (Common.ExecAsrsModify("update dbo.asr_wrk_mast set wrk_sts =12 ,crn_str_time ='" + dt1 + "' where wrk_no =" + wrk_no + "") == true) { Common.gs_crnlastio[crn] = "I"; } } } else if (Common.crn_i_crn_sts[crn] == Common.ci_CRN_STS_STNCHG_MOVE) { wrk_no = Common.crn_i_Wrkno[crn]; if (wrk_no == 0) { wrk_no = Common.gi_crn_wrkno[crn]; } try { DataView dv = Common.ExecAsrsSelect("select top 1 wrk_sts,io_type from dbo.asr_wrk_mast where wrk_no=" + wrk_no + ""); foreach (System.Data.DataRowView drow in dv) { wrk_sts = Convert.ToInt32(drow[0].ToString()); iotype = Convert.ToInt32(drow[1].ToString()); } } catch (Exception e) { continue; } if ((wrk_sts == 2 && iotype == 1)) { if (Common.ExecAsrsModify("update dbo.asr_wrk_mast set wrk_sts =6 ,crn_str_time ='" + dt1 + "' where wrk_no =" + wrk_no + "") == true) { Common.gs_crnlastio[crn] = "I"; } } if ((wrk_sts == 8 && (iotype == 101 || iotype == 110))) { if (Common.ExecAsrsModify("update dbo.asr_wrk_mast set wrk_sts =6 where wrk_no =" + wrk_no + "") == true) { Common.gs_crnlastio[crn] = "I"; } } } //解决空出库更新工作档 if (Common.crn_ycmm[crn].ToString() != "0" && Common.crn_yc[crn] == true) { if (Common.crn_ycmm[crn].ToString() == "39") { wrk_no = Common.crn_i_Wrkno[crn]; if (wrk_no > 0) { Common.ExecAsrsModify("update dbo.asr_wrk_mast set wrk_sts =13,upd_mk='X',error_time='" + dt1 + "',error_memo= '空出库异常' where wrk_no =" + wrk_no + " and wrk_sts=12 and crn_no=" + crn + 1 + ""); Common.gi_crn_iotype[crn] = 0; } } } } } catch (Exception em) { Common.WriteLogFile("WcsError", "Proc_UpdateCrnMove----" + em.Message); } } /// /// 入库,堆垛机入库站 --> 库位 /// /// private void Proc_CrnStnToLoc(int crnno) { int stnno = 0, seqno = 0; string s_slocno = "", s_dlocno = "", s_picking = "N", sql = "", locsts = "", s_inabled = ""; int i_sstano = 0, i_dstano = 0, i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0, plcno = 0; ; string s_wrknos = ""; bool flag = false; if (Common.Mode[crnno] != Common.ci_CRN_ONLINE || Common.CrnState[crnno] != Common.ci_CRN_STS_IDLE || Common.TaskNo[crnno] != 0 || Common.gs_crncmd[crnno] != "") { lb_CrnStnToLoc.Text = "堆垛机不符合条件--要求空闲/无ID/无命令"; return; } try { ////判断堆垛机是否禁用 try { DataView dv_crnsts = Common.ExecAsrsSelect("select in_enable from dbo.asr_bas_crnp where crn_no=" + (crnno + 1) + ""); foreach (System.Data.DataRowView drow in dv_crnsts) { s_inabled = drow[0].ToString(); } } catch (Exception e) { lb_CrnStnToLoc.Text = "查询堆垛机是否可用出错" + e.Message; return; } if (s_inabled != "Y") { lb_CrnStnToLoc.Text = "堆垛机已禁用"; return; } s_wrknos = " wrk_no in ("; for (int i = 0; i < 2; i++) { switch (i) { case 0: stnno = 104; plcno = 0; i_crnno = 1; break; case 1: stnno = 204; plcno = 0; i_crnno = 2; break; } if (i_crnno != (crnno + 1)) continue; seqno = Common.GetStnSeq(stnno); string s_autoing = Common.plc_s_autoing[plcno, seqno]; string s_loading = Common.plc_s_loading[plcno, seqno]; string s_canining = Common.plc_s_canining[plcno, seqno]; //string s_inreq1 = Common.plc_s_inreq1[plcno, seqno]; int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno]; //string s_next_stn = Common.plc_s_next_stn[plcno, seqno]; if (s_autoing == "Y" && s_loading == "Y" && i_wrk_no > 0 && s_canining == "Y") { flag = true; s_wrknos += i_wrk_no.ToString() + ","; } } if (flag == false) return; s_wrknos = s_wrknos.Substring(0, s_wrknos.Length - 1) + ") "; sql = "select TOP 1 source_loc_no,loc_no,source_sta_no,sta_no,picking,wrk_no,crn_no,wrk_sts,io_type from dbo.asr_wrk_mast " + " where wrk_sts=2 and crn_no=" + (crnno + 1) + " and " + s_wrknos + " and (io_type=1 or io_type=10 or io_type=53 or io_type=54 or io_type=57) order by io_pri desc,io_time,wrk_no ASC "; DataView dv = Common.ExecAsrsSelect(sql); if (dv.Count <= 0) { lb_CrnStnToLoc.Text = "查询无待入库数据--wrk_sts=2"; return; } foreach (DataRowView drow in dv) { s_slocno = drow[0].ToString(); s_dlocno = drow[1].ToString(); i_sstano = Convert.ToInt32(drow[2].ToString()); i_dstano = Convert.ToInt32(drow[3].ToString()); s_picking = drow[4].ToString(); i_wrkno = Convert.ToInt32(drow[5].ToString()); i_crnno = Convert.ToInt32(drow[6].ToString()); i_wrksts = Convert.ToInt32(drow[7].ToString()); i_iotype = Convert.ToInt32(drow[8].ToString()); /////////////目标库位是深库位时,判断浅库位状态 2022-2-11 string row = "", row2 = ""; row = s_dlocno.Substring(0, 2); if (row == "01") { row2 = "02"; string locno = row2 + s_dlocno.Substring(2, 5); bool flag1 = Proc_ShallowLoctoLoc(locno, i_wrkno, crnno); if (flag1) { return; } } //////////////////////////////////////////// switch (i_dstano) { case 104: stnno = 104; plcno = 0; i_crnno = 1; break; case 204: stnno = 204; plcno = 0; i_crnno = 2; break; } if ((i_iotype > 100) || (i_crnno != crnno + 1) || (s_dlocno == ""))// || (stnno != i_dstano)) { lb_CrnStnToLoc.Text = "工作档数据不符合条件--入出类型/堆垛机号/站点"; continue; } ///判断库位状态是否正常 try { DataView dv_locsts = Common.ExecAsrsSelect("select loc_sts from dbo.asr_loc_mast where loc_no='" + s_dlocno + "'"); if (dv_locsts.Count <= 0) { lb_CrnStnToLoc.Text = "查询库存无数据--库位号" + s_dlocno; continue; } foreach (System.Data.DataRowView drow1 in dv_locsts) { locsts = drow1[0].ToString(); } } catch (Exception e) { lb_CrnStnToLoc.Text = "查询库位状态数据出错--" + e.Message; continue; } if (locsts != "S" && locsts != "Q") { lb_CrnStnToLoc.Text = "库位状态不符合--状态" + locsts; continue; } seqno = Common.GetStnSeq(i_dstano); string autoing = Common.plc_s_autoing[plcno, seqno]; string loading = Common.plc_s_loading[plcno, seqno]; int wrk_no0 = Common.plc_i_Wrk_no[plcno, seqno]; if (Common.Mode[crnno] != Common.ci_CRN_ONLINE || Common.gs_crncmd[crnno] != "" || Common.TaskNo[crnno] != 0 || Common.CrnState[crnno] != 0) { continue; } //string row = "", bay = "", lev = "", row1 = ""; ////int stn = 0; //int bay1 = 0; //row1 = s_dlocno.Substring(0, 2); //if (row1 == "" || row1 == null) //{ // lb_CrnStnToLoc.Text = "根据库位得到row出错--库位号" + s_dlocno; // return; //} //row = row1;//(int.Parse(row1).ToString(); //bay1 = Int32.Parse(s_dlocno.Substring(2, 3)); //bay = bay1.ToString(); //lev = s_dlocno.Substring(5, 2); //stn = Common.GetCrnStnSeq(i_crnno); //if (stn == 0) //{ // lb_CrnStnToLoc.Text = "得到吊车入库站编号出错--入库站" + i_crnno; // return; //} if (autoing == "Y" && loading == "Y" && wrk_no0 > 0) { Common.gs_crncmd[crnno] = "07" + i_wrkno.ToString().PadLeft(4, '0') + Common.GetLocByStn(i_dstano) + s_dlocno; Common.gs_crnlastio[crnno] = "O"; Common.gi_crn_wrkno[crnno] = i_wrkno; break; } } } catch (Exception em) { lb_CrnStnToLoc.Text = "Proc_CrnStnToLoc出错--" + em.Message; Common.WriteLogFile("WcsError", "Proc_CrnStnToLoc----" + em.Message); } } /// /// 出库,库位 --> 堆垛机出库站 /// /// private void Proc_LocToCrnStn(int crnno) { int seqno = 0, seqno1 = 0, wrksts = 0, restnno = 0, ledno = 0, bay1 = 0; string s_slocno = "", s_dlocno = "", s_picking = "N", s_emptymk = "N", sql = "", locsts = "", s_outabled = "", ls_sheetno = "", row = "", bay = "", lev = "", row1 = ""; int i_sstano = 0, i_dstano = 0, i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0, plcno = 0; //Common.Mode[crnno] = 3; //Common.CrnState[crnno] = 0; //Common.TaskNo[crnno] = 0; if (Common.Mode[crnno] != Common.ci_CRN_ONLINE || Common.CrnState[crnno] != Common.ci_CRN_STS_IDLE || Common.TaskNo[crnno] != 0) { Common.gs_crnlastio[crnno] = "I"; lb_LocToCrnStn.Text = "堆垛机不符合条件--要求空闲/无ID"; return; } try { DataView dv_crnsts = Common.ExecAsrsSelect("select out_enable from dbo.asr_bas_crnp where crn_no=" + (crnno + 1) + ""); foreach (System.Data.DataRowView drow in dv_crnsts) { s_outabled = drow[0].ToString(); } } catch (Exception e) { lb_LocToCrnStn.Text = "堆垛机堆垛机出库是否禁用出错--" + e.Message; return; } if (s_outabled != "Y") { lb_LocToCrnStn.Text = "堆垛机出库已禁用"; return; } sql = "select TOP 1 source_loc_no,loc_no,source_sta_no,sta_no,picking,wrk_no,crn_no,wrk_sts,io_type,sheet_no,io_pri,packed from asr_wrk_mast where crn_no=" + (crnno + 1) + " and wrk_sts=11 and io_type>100 order by io_pri desc,io_time,wrk_no asc"; try { DataView dv = Common.ExecAsrsSelect(sql); if (dv.Count <= 0) { lb_LocToCrnStn.Text = "查询无待出库数据--wrk_sts=11"; return; } foreach (System.Data.DataRowView drow00 in dv) { s_slocno = drow00[0].ToString(); s_dlocno = drow00[1].ToString(); i_sstano = Convert.ToInt32(drow00[2].ToString()); i_dstano = Convert.ToInt32(drow00[3].ToString()); s_picking = drow00[4].ToString(); i_wrkno = Convert.ToInt32(drow00[5].ToString()); i_crnno = Convert.ToInt32(drow00[6].ToString()); i_wrksts = Convert.ToInt32(drow00[7].ToString()); i_iotype = Convert.ToInt32(drow00[8].ToString()); ls_sheetno = drow00[9].ToString(); //判断深库位,浅库位有货时执行移库任务 row1 = s_slocno.Substring(0, 2); if (row1 == "01") { string row2 = "02"; string s_slocno1 = row2 + s_slocno.Substring(2, 5); bool flag = Proc_ShallowLoctoLoc(s_slocno1, i_wrkno, crnno); if (flag) { return; } } if ((i_iotype < 100) || (i_crnno != crnno + 1) || (s_slocno == "") || (i_dstano == 0) || (i_dstano.ToString() == null) || (i_sstano == 0) || (i_sstano.ToString() == null)) { lb_LocToCrnStn.Text = "查询工作档数据不符合条件--入出类型/堆垛机/站点"; continue; } try { DataView dv_locsts = Common.ExecAsrsSelect("select loc_sts from dbo.asr_loc_mast where loc_no='" + s_slocno + "'"); foreach (System.Data.DataRowView drow in dv_locsts) { locsts = drow[0].ToString(); } } catch (Exception e) { lb_LocToCrnStn.Text = "查询库存库位状态出错--" + e.Message; continue; } if (locsts != "R" && locsts != "P") { lb_LocToCrnStn.Text = "库位状态不符合条件--库位" + s_slocno + "状态" + locsts; continue; } switch (i_sstano) { case 100: plcno = 0; i_crnno = 1; ledno = 0; break; case 200: plcno = 0; i_crnno = 2; ledno = 1; break; } if (i_crnno != (crnno + 1)) continue; seqno = Common.GetStnSeq(i_sstano); string s_autoing = Common.plc_s_autoing[plcno, seqno]; string s_loading = Common.plc_s_loading[plcno, seqno]; string s_canouting = Common.plc_s_canouting[plcno, seqno]; //string s_inreq1 = Common.plc_s_inreq1[plcno, seqno]; int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno]; if (s_autoing == "Y" && s_loading == "N" && s_canouting == "Y" && Common.plc_i_pakmk[plcno, seqno] == 0 && i_wrk_no == 0 && Common.gs_crncmd[crnno] == "") { Common.gs_crncmd[crnno] = "08" + i_wrkno.ToString().PadLeft(4, '0') + s_slocno + Common.GetLocByStn(i_sstano); Common.gs_crnlastio[crnno] = "I"; Common.plc_i_pakmk[plcno, seqno] = 1; Common.plc_s_canouting[plcno, seqno] = "N"; } } } catch (Exception e) { lb_LocToCrnStn.Text = "Proc_LocToCrnStn出错" + e.Message; return; } } /// /// 深库位出库,浅库位有货 /// /// 源库位 /// private bool Proc_ShallowLoctoLoc(string s_slocno, int wrk_no, int crnno) { bool flag = false; try { int i_sstano = 0, i_dstano = 0, i_wrkno = 0, i_crnno = 0, i_wrksts = 0, i_iotype = 0, plcno = 0; string s_dlocno = "", s_picking = "N", s_locsts = "O", s_dlocsts = "", s_loctype = "", s_barcode = "", s_qty = ""; i_crnno = crnno + 1; DataView dvloc_sts = Common.ExecAsrsSelect("select loc_sts,loc_type1,barcode from dbo.asr_loc_mast where loc_no='" + s_slocno + "'"); foreach (System.Data.DataRowView drow_locsts in dvloc_sts) { s_locsts = drow_locsts[0].ToString(); s_loctype = drow_locsts[1].ToString(); s_barcode = drow_locsts[2].ToString(); } if (s_locsts == "R") { string sql = " select source_loc_no,loc_no,source_sta_no,sta_no,picking,wrk_no,crn_no,wrk_sts,io_type,sheet_no,io_pri from asr_wrk_mast where crn_no = 1 and wrk_sts=11 and source_loc_no =" + s_slocno + ""; DataView dv1 = Common.ExecAsrsSelect(sql); if (dv1.Count > 0 && dv1 != null) { foreach (System.Data.DataRowView drow00 in dv1) { s_slocno = drow00[0].ToString(); s_dlocno = drow00[1].ToString(); i_sstano = Convert.ToInt32(drow00[2].ToString()); i_dstano = Convert.ToInt32(drow00[3].ToString()); s_picking = drow00[4].ToString(); i_wrkno = Convert.ToInt32(drow00[5].ToString()); i_crnno = Convert.ToInt32(drow00[6].ToString()); i_wrksts = Convert.ToInt32(drow00[7].ToString()); i_iotype = Convert.ToInt32(drow00[8].ToString()); } int seqno = Common.GetStnSeq(i_sstano); string s_autoing = Common.plc_s_autoing[plcno, seqno]; string s_loading = Common.plc_s_loading[plcno, seqno]; string s_canouting = Common.plc_s_canouting[plcno, seqno]; int i_wrk_no = Common.plc_i_Wrk_no[plcno, seqno]; //string s_inreq1 = Common.plc_s_inreq1[plcno, seqno]; //try //{ // string sql1 = "select loc_sts from dbo.asr_loc_mast where loc_no='" + s_slocno + "'"; // DataView dv_sloc = Common.ExecAsrsSelect(sql1); // foreach (System.Data.DataRowView drow1 in dv_sloc) // { // s_locsts = drow1[0].ToString(); // } //} //catch (Exception e) //{ // lb_ShallowLocToLoc.Text = "查询库存库位状态出错--" + e.Message; // return flag; //} try { string sql2 = "select loc_sts from dbo.asr_loc_mast where loc_no='" + s_dlocno + "'"; DataView dv_tloc = Common.ExecAsrsSelect(sql2); foreach (System.Data.DataRowView drow2 in dv_tloc) { s_dlocsts = drow2[0].ToString(); } } catch (Exception e) { //lb_ShallowLocToLoc.Text = "查询库存库位状态出错--" + e.Message; return flag; } if (i_iotype > 100 && s_locsts == "R") //i_iotype>100时执行出库任务 { if (s_autoing == "Y" && s_loading == "N" && s_canouting == "Y" && Common.plc_i_pakmk[plcno, seqno] == 0 && i_wrk_no == 0 && Common.gs_crncmd[crnno] == "") { Common.gs_crncmd[0] = "08" + i_wrkno.ToString().PadLeft(4, '0') + s_slocno + Common.GetLocByStn(i_sstano); Common.gs_crnlastio[crnno] = "I"; Common.plc_i_pakmk[plcno, seqno] = 1; Common.plc_s_canouting[plcno, seqno] = "N"; flag = true; } } else if (i_iotype == 11 && s_locsts == "R" && s_dlocsts == "S") //i_iotype=11时执行移库任务 { if (Common.gs_crncmd[crnno] == "") { Common.gs_crncmd[crnno] = "12" + i_wrkno.ToString().PadLeft(4, '0') + s_slocno + s_dlocno; flag = true; } } } else { //lb_ShallowLocToLoc.Text = "深库位出库,浅库位:" + s_slocno + ";库位状态为R,但没有工作档"; Common.WriteLogFile("WcsLog", "深库位出库,浅库位:" + s_slocno + ";库位状态为R,但没有工作档"); return flag; } } //浅库位没有移/出库任务,自动生成移库任务。 else if (s_locsts == "D" || s_locsts == "F") { string sqlDetl = ""; string sql = "select top 1 loc_no from asr_loc_mast where row1 in (1,3) and loc_sts = 'O' and loc_type1 = " + s_loctype; DataView dvd_locno = Common.ExecAsrsSelect(sql); if (dvd_locno.Count > 0 && dvd_locno != null) { i_wrkno = Common.GetWrkno(1); if (i_wrkno == 0) { //lb_ShallowLocToLoc.Text = "生成工作号失败"; flag = true; } foreach (System.Data.DataRowView dloc in dvd_locno) { s_dlocno = dloc[0].ToString(); } DateTime dt = DateTime.Now; if (s_locsts == "D") { sqlDetl = "insert into asr_wrk_mast(wrk_no,wrk_sts,io_type,io_pri,crn_no,source_loc_no,loc_no,full_plt,picking,exit_mk,empty_mk,barcode,link_mis,appe_user,modi_user,io_time)"; sqlDetl += "values (" + i_wrkno + ",11,11,15," + i_crnno + ",'" + s_slocno + "','" + s_dlocno + "','N','N','N','Y','" + s_barcode + "','N','9527','9527','" + dt + "');"; sqlDetl += "update asr_loc_mast set loc_sts = 'R' where loc_no = " + s_slocno + ";"; sqlDetl += "update asr_loc_mast set loc_sts = 'S' where loc_no = " + s_dlocno + ";"; } else if (s_locsts == "F") { sqlDetl = "insert into asr_wrk_mast(wrk_no,wrk_sts,io_type,io_pri,crn_no,source_loc_no,loc_no,full_plt,picking,exit_mk,empty_mk,barcode,link_mis,appe_user,modi_user,io_time)"; sqlDetl += "values (" + i_wrkno + ",11,11,15," + i_crnno + ",'" + s_slocno + "','" + s_dlocno + "','Y','N','N','N','" + s_barcode + "','N','9527','9527','" + dt + "');"; sqlDetl += " INSERT INTO asr_wrk_detl(wrk_no,mat_no,mat_name,specs,size,color,weight,qty,unit,zpallet,io_time,supplier) "; sqlDetl += " SELECT " + i_wrkno + ",mat_no,mat_name,specs,size,color,weight,qty,unit,zpallet,'" + dt + "',supplier "; sqlDetl += " FROM asr_loc_detl where loc_no ='" + s_slocno + "';"; sqlDetl += " update asr_loc_mast set loc_sts = 'R' where loc_no = " + s_slocno + ";"; sqlDetl += " update asr_loc_mast set loc_sts = 'S' where loc_no = " + s_dlocno + ";"; } bool result = Common.ExecAsrsModify(sqlDetl); if (result) { Common.gs_crncmd[crnno] = "12" + i_wrkno.ToString().PadLeft(4, '0') + s_slocno + s_dlocno; flag = true; } } else { //lb_ShallowLocToLoc.Text = "库位移转没有空库位可用"; Common.WriteLogFile("WcsLog", "库位移转错误:没有空库位可用"); flag = true; } } else { return flag; } } catch (Exception em) { //lb_ShallowLocToLoc.Text = "深库位出库浅库位有货,处理失败:" + em.Message; Common.WriteLogFile("WcsError", "深库位出库浅库位有货,处理失败:" + em.Message); return flag = true; } return flag; } #endregion #region 异常维护 //private void buttonX3_Click(object sender, EventArgs e) //{ // Common.AddPlcQuereCmd(0, "05000000000000"); //清空给PLC有出库资料信号 // //Common.AddPlcQuereCmd(0, "06000009990000"); //} //private void tb_wrkno_Leave(object sender, EventArgs e) //{ // try // { // if (tb_wrkno.Text.Trim() != "") // { // if (Common.ChkStrtoInt(tb_wrkno.Text.Trim())) // { // int wrkno = int.Parse(tb_wrkno.Text.Trim()); // string sql = "select wrk_sts from asr_wrk_mast where wrk_no=" + wrkno; // DataView dv = Common.ExecAsrsSelect(sql); // if (dv.Count <= 0) // { // MessageBox.Show("工作号在工作档中不存在", "提示"); // tb_wrkno.Focus(); // //tb_wrkno.SelectAll(); // return; // } // foreach (DataRowView drow in dv) // { // int sts = int.Parse(drow[0].ToString()); // switch (sts) // { // case 1: // tb_wrksts.Text = "1.生成入库ID"; // break; // case 2: // tb_wrksts.Text = "2.设备上走"; // break; // case 3: // tb_wrksts.Text = "3.堆垛机入库中"; // break; // case 4: // tb_wrksts.Text = "4.入库完成"; // break; // case 5: // tb_wrksts.Text = "5.库存更新完成"; // break; // case 11: // tb_wrksts.Text = "11.生成出库ID"; // break; // case 12: // tb_wrksts.Text = "12.堆垛机出库中"; // break; // case 13: // tb_wrksts.Text = "13.堆垛机空出库错误"; // break; // case 14: // tb_wrksts.Text = "14.出库完成"; // break; // case 15: // tb_wrksts.Text = "15.出库更新完成"; // break; // } // btnWrkSts.Enabled = true; // } // } // else // { // MessageBox.Show("请输入正确的工作号(只能为数字)", "提示"); // tb_wrksts.Focus(); // //tb_wrksts.SelectAll(); // return; // } // } // } // catch (Exception em) // { // MessageBox.Show(em.Message); // } //} //private void btnWrkSts_Click(object sender, EventArgs e) //{ // try // { // if (cb_wrksts.SelectedIndex < 0) // { // MessageBox.Show("请选择新工作状态", "提示"); // return; // } // int wrkno = int.Parse(tb_wrkno.Text.Trim()); // string sql = "select * from asr_wrk_mast where wrk_no=" + wrkno; // if (Common.ExecAsrsSelect1(sql) > 0) // { // DialogResult dr = MessageBox.Show("确定更新工作状态吗?请谨慎操作", "提示", MessageBoxButtons.OKCancel); // if (dr == DialogResult.OK) // { // int wrksts = 0; // switch (cb_wrksts.SelectedIndex) // { // case 0: // wrksts = 1; // break; // case 1: // wrksts = 2; // break; // case 2: // wrksts = 3; // break; // case 3: // wrksts = 4; // break; // case 4: // wrksts = 5; // break; // case 5: // wrksts = 11; // break; // case 6: // wrksts = 12; // break; // case 7: // wrksts = 13; // break; // case 8: // wrksts = 14; // break; // case 9: // wrksts = 15; // break; // } // if (wrksts > 0) // { // sql = "update asr_wrk_mast set wrk_sts=" + wrksts + " where wrk_no=" + wrkno; // SqlConnection sqlconn = new SqlConnection(Common.sqlcon); // sqlconn.Open(); // SqlTransaction sqltrans = sqlconn.BeginTransaction(); // SqlCommand sqlcmd = new SqlCommand(sql, sqlconn); // sqlcmd.Transaction = sqltrans; // try // { // sqlcmd.ExecuteNonQuery(); // sqltrans.Commit(); // MessageBox.Show("工作状态更新成功", "提示"); // btnWrkSts.Enabled = false; // tb_wrkno.Text = ""; // tb_wrksts.Text = ""; // cb_wrksts.SelectedIndex = -1; // } // catch (SqlException em) // { // sqltrans.Rollback(); // MessageBox.Show("更新工作状态失败:" + em.Message); // } // finally // { // sqlcmd.Dispose(); // sqlconn.Dispose(); // } // } // else // { // MessageBox.Show("请重新选择新工作状态", "提示"); // return; // } // } // } // else // { // MessageBox.Show("工作号在工作档中不存在", "提示"); // return; // } // } // catch (Exception em) // { // MessageBox.Show(em.Message); // } //} //private void tb_locno_Leave(object sender, EventArgs e) //{ // try // { // if (tb_locno.Text.Trim() != "") // { // if (tb_locno.Text.Trim().Length == 7) // { // string locno = tb_locno.Text.Trim(); // string sql = "select loc_sts from asr_loc_mast where loc_no='" + locno + "'"; // DataView dv = Common.ExecAsrsSelect(sql); // if (dv.Count <= 0) // { // MessageBox.Show("库位号在库存档中不存在", "提示"); // tb_locno.Focus(); // return; // } // foreach (DataRowView drow in dv) // { // string sts = drow[0].ToString(); // switch (sts) // { // case "D": // tb_locsts.Text = "D.周转箱在库"; // break; // case "O": // tb_locsts.Text = "O.空库位"; // break; // case "R": // tb_locsts.Text = "R.出库预约"; // break; // case "S": // tb_locsts.Text = "S.入库预约"; // break; // case "X": // tb_locsts.Text = "X.库位禁用"; // break; // } // btnLocSts.Enabled = true; // } // } // else // { // MessageBox.Show("库位号长度是7位", "提示"); // tb_locno.Focus(); // return; // } // } // } // catch (Exception em) // { // MessageBox.Show(em.Message); // } //} //private void btnLocSts_Click(object sender, EventArgs e) //{ // try // { // if (cb_locsts.SelectedIndex < 0) // { // MessageBox.Show("请选择新库位状态", "提示"); // return; // } // string locno = tb_locno.Text.Trim(); // string sql = "select * from asr_loc_mast where loc_no='" + locno + "'"; // if (Common.ExecAsrsSelect1(sql) > 0) // { // DialogResult dr = MessageBox.Show("确定更新库位状态吗?请谨慎操作", "提示", MessageBoxButtons.OKCancel); // if (dr == DialogResult.OK) // { // string locsts = ""; // switch (cb_locsts.SelectedIndex) // { // case 0: // locsts = "D"; // break; // case 1: // locsts = "O"; // break; // case 2: // locsts = "R"; // break; // case 3: // locsts = "S"; // break; // case 4: // locsts = "X"; // break; // } // if (locsts != "") // { // sql = "update asr_loc_mast set loc_sts='" + locsts + "' where loc_no=" + locno; // SqlConnection sqlconn = new SqlConnection(Common.sqlcon); // sqlconn.Open(); // SqlTransaction sqltrans = sqlconn.BeginTransaction(); // SqlCommand sqlcmd = new SqlCommand(sql, sqlconn); // sqlcmd.Transaction = sqltrans; // try // { // sqlcmd.ExecuteNonQuery(); // sqltrans.Commit(); // MessageBox.Show("库位状态更新成功", "提示"); // btnLocSts.Enabled = false; // tb_locno.Text = ""; // tb_locsts.Text = ""; // cb_locsts.SelectedIndex = -1; // } // catch (SqlException em) // { // sqltrans.Rollback(); // MessageBox.Show("更新库位状态失败:" + em.Message); // } // finally // { // sqlcmd.Dispose(); // sqlconn.Dispose(); // } // } // else // { // MessageBox.Show("请重新选择新库位状态", "提示"); // return; // } // } // } // else // { // MessageBox.Show("库位号在库存档中不存在", "提示"); // return; // } // } // catch (Exception em) // { // MessageBox.Show(em.Message); // } //} //private void buttonX4_Click(object sender, EventArgs e) //{ // try // { // string sql = "select wrk_no,wrk_sts from asr_wrk_mast where wrk_sts=2 or wrk_sts=3"; // DataView dv = Common.ExecAsrsSelect(sql); // if (dv.Count > 0) // { // foreach (DataRowView drow in dv) // { // int wrkno = int.Parse(drow[0].ToString()); // int wrksts = int.Parse(drow[1].ToString()); // if (Common.plc_i_Wrk_no[0, 0] == wrkno || Common.plc_i_Wrk_no[0, 1] == wrkno || Common.crn_i_Wrkno[0] == wrkno) // { // DialogResult dr = MessageBox.Show("设备上还存在该工作号[" + wrkno + "]对应料盒,确定手工完结?请谨慎操作", "提示", MessageBoxButtons.OKCancel); // if (dr == DialogResult.Cancel) continue; // } // else // { // DialogResult dr = MessageBox.Show("确定手工完结[工作号:" + wrkno + ";工作状态:" + wrksts + "]?请谨慎操作", "提示", MessageBoxButtons.OKCancel); // if (dr == DialogResult.Cancel) continue; // } // sql = "update asr_wrk_mast set wrk_sts=4 where wrk_no=" + wrkno; // SqlConnection sqlconn = new SqlConnection(Common.sqlcon); // sqlconn.Open(); // SqlTransaction sqltrans = sqlconn.BeginTransaction(); // SqlCommand sqlcmd = new SqlCommand(sql, sqlconn); // sqlcmd.Transaction = sqltrans; // try // { // sqlcmd.ExecuteNonQuery(); // sqltrans.Commit(); // MessageBox.Show("入库手工完结成功", "提示"); // } // catch (SqlException em) // { // sqltrans.Rollback(); // MessageBox.Show("入库手工完结失败:" + em.Message); // } // finally // { // sqlcmd.Dispose(); // sqlconn.Dispose(); // } // } // } // else // { // MessageBox.Show("工作档中不存在入库待完结资料", "提示"); // return; // } // } // catch (Exception em) // { // MessageBox.Show(em.Message); // } //} //private void buttonX5_Click(object sender, EventArgs e) //{ // try // { // string sql = "select wrk_no,wrk_sts from asr_wrk_mast where wrk_sts=11 or wrk_sts=12"; // DataView dv = Common.ExecAsrsSelect(sql); // if (dv.Count > 0) // { // foreach (DataRowView drow in dv) // { // int wrkno = int.Parse(drow[0].ToString()); // int wrksts = int.Parse(drow[1].ToString()); // if (Common.plc_i_Wrk_no[0, 0] == wrkno || Common.plc_i_Wrk_no[0, 1] == wrkno || Common.crn_i_Wrkno[0] == wrkno) // { // DialogResult dr = MessageBox.Show("设备上还存在该工作号[" + wrkno + "]对应料盒,确定出库手工完结?请谨慎操作", "提示", MessageBoxButtons.OKCancel); // if (dr == DialogResult.Cancel) continue; // } // else // { // DialogResult dr = MessageBox.Show("确定出库手工完结[工作号:" + wrkno + ";工作状态:" + wrksts + "]?请谨慎操作", "提示", MessageBoxButtons.OKCancel); // if (dr == DialogResult.Cancel) continue; // } // sql = "update asr_wrk_mast set wrk_sts=14 where wrk_no=" + wrkno; // SqlConnection sqlconn = new SqlConnection(Common.sqlcon); // sqlconn.Open(); // SqlTransaction sqltrans = sqlconn.BeginTransaction(); // SqlCommand sqlcmd = new SqlCommand(sql, sqlconn); // sqlcmd.Transaction = sqltrans; // try // { // sqlcmd.ExecuteNonQuery(); // sqltrans.Commit(); // MessageBox.Show("出库手工完结成功", "提示"); // } // catch (SqlException em) // { // sqltrans.Rollback(); // MessageBox.Show("出库手工完结失败:" + em.Message); // } // finally // { // sqlcmd.Dispose(); // sqlconn.Dispose(); // } // } // } // else // { // MessageBox.Show("工作档中不存在出库待完结资料", "提示"); // return; // } // } // catch (Exception em) // { // MessageBox.Show(em.Message); // } //} #endregion #region 手动发送LED //private void b_ledSend_Click(object sender, EventArgs e) //{ // try // { // //if (tb_ledtext1.Text == "" || tb_ledtext2.Text == "" || tb_ledtext3.Text == "" || tb_ledtext4.Text == "") // if (tb_ledtext1.Text == "" || tb_ledtext2.Text == "" || tb_ledtext3.Text == "") // { // MessageBox.Show("请输入发布内容"); // return; // } // //string data = tb_ledtext1.Text + ";" + tb_ledtext2.Text + ";" + tb_ledtext3.Text + ";" + tb_ledtext4.Text; // string data = tb_ledtext1.Text + ";" + tb_ledtext2.Text + ";" + tb_ledtext3.Text; // if (rb_led1.Checked) // { // //Common.gi_led_Pages[0] = 4; // Common.gs_led_data[0] = data; // tb_sendtoled1.Text = data; // } // else if (rb_led2.Checked) // { // //Common.gi_led_Pages[1] = 4; // Common.gs_led_data[1] = data; // tb_sendtoled2.Text = data; // } // } // catch (Exception em) // { // MessageBox.Show("发送失败" + em.Message); // } //} #endregion /// /// 字体变色 /// /// private void fontColorSwitch(int a) { try { switch (a) { case 0: break; case 1: this.button_main.ForeColor = Color.SandyBrown; this.button_plc.ForeColor = Color.White; this.button_crn.ForeColor = Color.White; break; case 2: this.button_plc.ForeColor = Color.SandyBrown; this.button_main.ForeColor = Color.White; this.button_crn.ForeColor = Color.White; break; case 3: this.button_crn.ForeColor = Color.SandyBrown; this.button_main.ForeColor = Color.White; this.button_plc.ForeColor = Color.White; break; } } catch { } } /// /// 主控界面置顶 /// /// /// private void button_main_Click(object sender, EventArgs e) { //panel_left.Parent = panel_plc_top; //panel_barcode.Parent = this; //panel_led.Parent = this; //panel_crn_top.Parent = this; //panel_plc_top.Parent = this; //panel_main.Parent = this; //panel_menu.Parent = panel_min_map; //panel_main.BringToFront(); //panel_main.Dock = DockStyle.Fill; //int value = 1; //fontColorSwitch(value); panel_left.Parent = panel_plc_top; panel_menu.Parent = panel_min_map; this.tc_main.SelectedTab = tp_map; int value = 1; fontColorSwitch(value); } /// /// 输送设备界面按钮 /// /// /// private void button_plc_Click(object sender, EventArgs e) { //panel_left.Parent = panel_plc_top; //panel_left.Dock = DockStyle.Left; //panel_barcode.Parent = this; //panel_led.Parent = this; //panel_crn_top.Parent = this; //panel_plc_top.Parent = this; //panel_main.Parent = this; //panel_menu.Parent = panel_left; //panel_plc_top.BringToFront(); //panel_plc_top.Dock = DockStyle.Fill; //int value = 2; //fontColorSwitch(value); panel_left.Parent = panel_plc_top; panel_menu.Parent = panel_left; this.tc_main.SelectedTab = tp_plc; int value = 2; fontColorSwitch(value); } /// /// 堆垛机界面按钮 /// /// /// private void button_crn_Click(object sender, EventArgs e) { //panel_left.Parent = panel_crn_top; //panel_left.Dock = DockStyle.Left; //panel_barcode.Parent = this; //panel_led.Parent = this; //panel_crn_top.Parent = this; //panel_plc_top.Parent = this; //panel_main.Parent = this; //panel_menu.Parent = panel_left; //panel_crn_top.BringToFront(); //panel_crn_top.Dock = DockStyle.Fill; //int value = 3; //fontColorSwitch(value); panel_left.Parent = panel_crn_top; panel_menu.Parent = panel_left; this.tc_main.SelectedTab = tp_crn; int value = 3; fontColorSwitch(value); } /// /// 关闭键 /// /// /// private void button59_Click(object sender, EventArgs e) { timer2.Start(); } /// /// 拖动 /// /// /// private void panel_plc_head_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { mouseOff = new Point(-e.X, -e.Y);//获得当前鼠标的坐标 leftFlag = true; } } private void panel_plc_head_MouseMove(object sender, MouseEventArgs e) { if (leftFlag) { WindowState = FormWindowState.Normal; //this.button78.BackgroundImage = Image.FromFile(Common.picpath + "全屏.png"); Point mouseSet = Control.MousePosition;//获得移动后鼠标的坐标 mouseSet.Offset(mouseOff.X, mouseOff.Y);//设置移动后的位置 Location = mouseSet; } } private void panel_plc_head_MouseUp(object sender, MouseEventArgs e) { if (leftFlag) { leftFlag = false; } } /// /// 渐隐关闭控件 /// /// /// private void timer2_Tick(object sender, EventArgs e) { if (this.Opacity >= 0.025) { this.Opacity -= 0.025; } else { timer2.Stop(); this.Close(); } } /// /// 最大化按钮 /// /// /// private void button78_Click_1(object sender, EventArgs e) { if (WindowState == FormWindowState.Normal) { this.WindowState = FormWindowState.Maximized; //this.button78.BackgroundImage = Image.FromFile(Common.picpath + "取消全屏.png"); } else { this.WindowState = FormWindowState.Normal; //this.button78.BackgroundImage = Image.FromFile(Common.picpath + "全屏.png"); } } /// /// 最小化按钮 /// /// /// private void button79_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Minimized; } private void YanShi1_Click(object sender, EventArgs e) { try { if (Common.gi_Yanshi_Flag[0] == false) { Common.gi_Yanshi_Flag[0] = true; YanShi1.Text = "1#暂停"; YanShi1.ForeColor = Color.Blue; } else { Common.gi_Yanshi_Flag[0] = false; YanShi1.Text = "1#演示"; YanShi1.ForeColor = Color.Red; } } catch (Exception em) { Common.WriteLogFile("WcsError", "YanShi1_Click--1#演示功能出错:" + em.Message); toolStripStatusLabel4.Text = "1#演示功能出错:" + em.Message; } } private void YanShi2_Click(object sender, EventArgs e) { try { if (Common.gi_Yanshi_Flag[1] == false) { Common.gi_Yanshi_Flag[1] = true; YanShi2.Text = "2#暂停"; YanShi2.ForeColor = Color.Blue; } else { Common.gi_Yanshi_Flag[1] = false; YanShi2.Text = "2#演示"; YanShi2.ForeColor = Color.Red; } } catch (Exception em) { Common.WriteLogFile("WcsError", "YanShi2_Click--2#演示功能出错:" + em.Message); toolStripStatusLabel4.Text = "2#演示功能出错:" + em.Message; } } private void YanShi3_Click(object sender, EventArgs e) { { try { if (Common.gi_Yanshi_Flag[2] == false) { Common.gi_Yanshi_Flag[2] = true; YanShi3.Text = "3#暂停"; YanShi3.ForeColor = Color.Blue; } else { Common.gi_Yanshi_Flag[2] = false; YanShi3.Text = "3#演示"; YanShi3.ForeColor = Color.Red; } } catch (Exception em) { Common.WriteLogFile("WcsError", "YanShi3_Click--3#演示功能出错:" + em.Message); toolStripStatusLabel4.Text = "3#演示功能出错:" + em.Message; } } } private void button334_Click(object sender, EventArgs e) { timer2.Start(); } private void button333_Click(object sender, EventArgs e) { if (WindowState == FormWindowState.Normal) { this.WindowState = FormWindowState.Maximized; this.button333.BackgroundImage = Image.FromFile(Common.picpath + "取消全屏.png"); } else { this.WindowState = FormWindowState.Normal; this.button333.BackgroundImage = Image.FromFile(Common.picpath + "全屏.png"); } } private void button332_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Minimized; } private void button337_Click(object sender, EventArgs e) { timer2.Start(); } private void button79_Click_1(object sender, EventArgs e) { timer2.Start(); } private void button340_Click(object sender, EventArgs e) { timer2.Start(); } private void button339_Click(object sender, EventArgs e) { if (WindowState == FormWindowState.Normal) { this.WindowState = FormWindowState.Maximized; this.button339.BackgroundImage = Image.FromFile(Common.picpath + "取消全屏.png"); } else { this.WindowState = FormWindowState.Normal; this.button339.BackgroundImage = Image.FromFile(Common.picpath + "全屏.png"); } } private void button78_Click(object sender, EventArgs e) { if (WindowState == FormWindowState.Normal) { this.WindowState = FormWindowState.Maximized; this.button78.BackgroundImage = Image.FromFile(Common.picpath + "取消全屏.png"); } else { this.WindowState = FormWindowState.Normal; this.button78.BackgroundImage = Image.FromFile(Common.picpath + "全屏.png"); } } private void button336_Click(object sender, EventArgs e) { if (WindowState == FormWindowState.Normal) { this.WindowState = FormWindowState.Maximized; this.button336.BackgroundImage = Image.FromFile(Common.picpath + "取消全屏.png"); } else { this.WindowState = FormWindowState.Normal; this.button336.BackgroundImage = Image.FromFile(Common.picpath + "全屏.png"); } } private void button335_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Minimized; } private void button59_Click_1(object sender, EventArgs e) { this.WindowState = FormWindowState.Minimized; } private void button338_Click(object sender, EventArgs e) { this.WindowState = FormWindowState.Minimized; } } }