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 System.ServiceModel; using WcfControlMonitorLib; using CommonLib; using System.Globalization; using System.Security.Cryptography; using System.Threading; using Model;//20151019richard namespace wcfControlMonitorClient { public partial class FrmHost : Form { Model.MonitorInfo mi;//20140824richard //20130122 private static FrmHost _formInstance; //20130122 public static FrmHost FormInstance { get { if (_formInstance == null) { _formInstance = new FrmHost(); } return _formInstance; } set { _formInstance = value; } } int timersum = 0;//20120513 int timerefesh = 0;//20150103增加断网恢复 DBFactory.DBOperator dbo; DBFactory.DBOperator dboM; /// /// /// public FrmHost() { try { dbo = CStaticClass.dbo; dboM = CStaticClass.dboM; //DBFactory.DBOperator dboMan = CStaticClass.dboM;//20130510 InitializeComponent(); CStaticClass.SystemName = CommonClassLib.AppSettings.GetValue("SystemName"); this.notifyIcon1.Text = CStaticClass.SystemName; this.Text = CStaticClass.SystemName; //WCSServer.ControlMonitorClient aa = new WCSServer.ControlMonitorClient(new InstanceContext(new FrmSystemInit())); //Model.MonitorInfo mi=new Model.MonitorInfo(); //if (aa.Heartbeat(out mi) == true) //{ // MessageBox.Show("网络中已经有WCS服务端工作,不要重复启动WCS服务!"); // this.Close(); // return; //} _host = new ServiceHost(typeof(WcfControlMonitorLib.SControlMonitor)); _host.Open(); //Silverlight跨域访问服务 //policyHost = ClientCrossDomainAccessPolicy.GetHost(_host.BaseAddresses[0].Host); //policyHost.Open(); SControlMonitor.ChannelOpen += new ClientLogEventHandler(SControlMonitor_ChannelOpen); SControlMonitor.ClientLogout += new ClientLogEventHandler(SControlMonitor_ClientLogout); SControlMonitor.RefreshMonitor += new RefreshMonitorEventHandler(SControlMonitor_RefreshMonitor); SControlMonitor.PLCCommonUpdateDB += new CUpdateDBEventHandler(SControlMonitor_PLCCommonUpdateDB);//PLC//20121108 SControlMonitor.AGVUpdateDB += new CUpdateDBEventHandler(SControlMonitor_AGVUpdateDB);//AGV//20121108 SControlMonitor.SendBarcode += new CStringInfoEventHandler(SControlMonitor_SendBarcode); SControlMonitor.WriteDarkCasket += new CWriteDarkCasketEventHandler(SControlMonitor_WriteDarkCasket);//20121108 SControlMonitor.SendDeviceOrder += new CSendDeviceOrderEventHandler(SControlMonitor_SendDeviceOrder); ;//20121108 } catch (Exception ex) { MessageBox.Show(ex.Message + ex.InnerException, "", MessageBoxButtons.OK, MessageBoxIcon.Error); this.Close(); } } void SControlMonitor_AGVUpdateDB(object sender, CUpdateDBChangeEventArgs e) {//20120616 this.BeginInvoke(new MethodInvoker(delegate() { CStaticClass.WcfControl.DealWithListenAGVState_UpdateDB(sender,e); })); } void SControlMonitor_PLCCommonUpdateDB(object sender, CUpdateDBChangeEventArgs e) { string errtext=string.Empty; this.BeginInvoke(new MethodInvoker(delegate() {CStaticClass.WcfControl.DealWithDeviceState(out errtext, e.Deviceindex, e.SplitbyteValue, e.Devicestates);})); } void SControlMonitor_SendBarcode(object sender, CStringInfoEventArgs e) { string errtext = string.Empty; this.BeginInvoke(new MethodInvoker(delegate() { CStaticClass.WcfControl.WriteDBData(e.Deviceindex,"DB1",e.Barcode+","+e.Confirm.ToString(),out errtext); dbo.ExceSQL(string.Format(" update T_Base_PLC_Ask set F_TaskIndex={0} WHERE (F_DeviceIndex = {1})", e.Deviceindex,Convert.ToInt32(sender))); })); } void SControlMonitor_SendDeviceOrder(object sender, CSendDeviceOrderEventArgs e) {//20121108 this.BeginInvoke(new MethodInvoker(delegate() { CStaticClass.WcfControl.DealWithSendDeviceOrder(sender, e); })); } void SControlMonitor_WriteDarkCasket(object sender, CWriteDarkCasketEventArgs e) {//20121108 this.BeginInvoke(new MethodInvoker(delegate() { CStaticClass.WcfControl.DealWithWriteDarkCasket(sender, e); })); } void SControlMonitor_CDeviceState(object sender, CDeviceStateChangeEventArgs e) { try { SendDeviceInfosToClient(e.Devinfo); } catch (Exception ex) { if (tsStatus.Text.IndexOf("SControlMonitor_CDeviceState:" + ex.StackTrace + ex.Message) < 0) { tsStatus.Text += "SControlMonitor_CDeviceState:" + ex.StackTrace + ex.Message; } } } void SControlMonitor_RefreshMonitor(RefreshMonitorEventArgs e) { try { this.BeginInvoke(new MethodInvoker(delegate() { SendMessageToClient(e.RefreshObjectName + "@" + e.RefreshObjectInfo); })); } catch (Exception ex) { if (tsStatus.Text.IndexOf("SControlMonitor_RefreshMonitor:" + ex.StackTrace + ex.Message) < 0) { tsStatus.Text += "SControlMonitor_RefreshMonitor:" + ex.StackTrace + ex.Message; } } } void SControlMonitor_DataChange(object sender, CDataChangeEventArgs e) { try { SendMessageToClient(sender.ToString()); } catch (Exception ex) { if (tsStatus.Text.IndexOf("SControlMonitor_DataChange:" + ex.StackTrace + ex.Message) < 0) { tsStatus.Text += "SControlMonitor_DataChange:" + ex.StackTrace + ex.Message; } } } void SControlMonitor_ClientLogout(ClientLogEventArgs e) { try { AddList1Info(e.clientInfo);//20120503 } catch (Exception ex) { if (tsStatus.Text.IndexOf("SControlMonitor_ClientLogout:" + ex.StackTrace + ex.Message) < 0) { tsStatus.Text += "SControlMonitor_ClientLogout:" + ex.StackTrace + ex.Message; } } } void SControlMonitor_ChannelOpen(ClientLogEventArgs e) { try { AddList1Info(e.clientInfo);//20120503 } catch (Exception ex) { if (tsStatus.Text.IndexOf("SControlMonitor_ChannelOpen:" + ex.StackTrace + ex.Message) < 0) { tsStatus.Text += "SControlMonitor_ChannelOpen:" + ex.StackTrace + ex.Message; } } } private ServiceHost _host = null; private ServiceHost policyHost = null; private void FrmHost_Load(object sender, EventArgs e) { MIStartRetrieveTask_Click(sender, e); MITurnOn_Click(sender, e); string targetDevice = Convert.ToString(dbo.ExceSQL("select * from WH_LANEWAY where WAREHOUSE_CODE = '1'").Tables[0].DefaultView[0]["LANEWAY_CODE"]); comboBox1.Text = targetDevice; label4.Text = targetDevice; } private void MIDataClear_Click(object sender, EventArgs e) { if (MessageBox.Show("您确认清空调度系统的调度队列和设备指令队列数据吗?这个操作将导致调度系统丢失当前记录的所有数据,并且使系统恢复到初始状态!", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) { return; } string errtext=string.Empty; if (CStaticClass.WcfControl.DataClear(out errtext) == false) { MessageBox.Show(errtext, "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } void SendMessageToClient(string strmessage) { IClient cl=null; try { if(AddList1Info(strmessage)==false)return ;//20130510 var list = WcfControlMonitorLib.SControlMonitor.ClientCallbackLists; if (list == null || list.Count == 0) { return; } lock (list) { foreach (System.Collections.DictionaryEntry client in list) { // Broadcast cl = (IClient)client.Key; //string aa = client.Value.ToString(); //this.BeginInvoke(new MethodInvoker(delegate() //{ //20140824richard if (strmessage == "巡检客户端") { cl.BeginSendOrderMessage(mi, new AsyncCallback(SendOrderMessageCallback), mi); } else { cl.BeginSendMessage(strmessage, new AsyncCallback(sendMessageCallback), strmessage); } //20140824richard //})); } } } catch (Exception ex) { if (cl != null) { WcfControlMonitorLib.SControlMonitor.ClientCallbackLists.Remove(cl); WcfControlMonitorLib.SControlMonitor.ClientShowLists.Remove(cl); } AddList1Info(string.Format("SendMessageToClient时异常:{0}", ex.Message));//20120503 //if (listBox1.Items.Count >= 100) listBox1.Items.Clear(); //this.listBox1.Items.Add(string.Format("SendMessageToClient时异常:{0},{1}" , ex.Message,DateTime.Now.ToString("u"))); } } void SendOrderMessageCallback(IAsyncResult ar) { } void sendMessageCallback(IAsyncResult ar) { try { this.BeginInvoke(new MethodInvoker(delegate() { string sem = (string)ar.AsyncState; AddList1Info(sem);//20120503 //if (listBox1.Items.Count >= 100) listBox1.Items.Clear(); //if (listBox1.Items.Count >= 1) //{ // if (this.listBox1.Items[listBox1.Items.Count - 1].ToString().IndexOf(sem) >= 0) return; //} //if (sem == "巡检客户端") return; //listBox1.Items.Add(DateTime.Now.ToLongTimeString()+sem); })); } catch (Exception ex) { this.BeginInvoke(new MethodInvoker(delegate() { if (tsStatus.Text.IndexOf("巡检客户端sendMessageCallback:" + ex.StackTrace + ex.Message) < 0) { tsStatus.Text += "巡检客户端sendMessageCallback:" + ex.StackTrace + ex.Message; } })); } } void SendDeviceInfosToClient(Model.MDevice devinfo) { IClient cl = null; try { var list = WcfControlMonitorLib.SControlMonitor.ClientCallbackLists; if (list == null || list.Count == 0) return; lock (list) { foreach (System.Collections.DictionaryEntry client in list) { // Broadcast cl = (IClient)client.Key; cl.BeginSendDeviceInfo(devinfo, new AsyncCallback(sendDeviceInfosCallback), null); } } } catch (Exception ex) { if (cl != null) { WcfControlMonitorLib.SControlMonitor.ClientCallbackLists.Remove(cl); WcfControlMonitorLib.SControlMonitor.ClientShowLists.Remove(cl); } AddList1Info(string.Format("SendDeviceInfosToClient时异常:{0}", ex.Message));//20120503 //if (listBox1.Items.Count >= 100) listBox1.Items.Clear(); //this.listBox1.Items.Add(string.Format("SendDeviceInfosToClient时异常:{0},{1}" , ex.Message , DateTime.Now.ToString("u"))); } } void sendDeviceInfosCallback(IAsyncResult ar) { } private void FrmHost_FormClosing(object sender, FormClosingEventArgs e) { if (MessageBox.Show("您确认要关闭"+CStaticClass.SystemName+"吗?", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK) { e.Cancel = true; return; } if (_host != null) { SControlMonitor.ChannelOpen -= new ClientLogEventHandler(SControlMonitor_ChannelOpen); SControlMonitor.ClientLogout -= new ClientLogEventHandler(SControlMonitor_ClientLogout); SControlMonitor.DataChange -= new CDataSourceChangeEventHandler(SControlMonitor_DataChange); SControlMonitor.RefreshMonitor -= new RefreshMonitorEventHandler(SControlMonitor_RefreshMonitor); SControlMonitor.CDeviceState -= new CDeviceStateChangeEventHandler(SControlMonitor_CDeviceState); SControlMonitor.PLCCommonUpdateDB -= new CUpdateDBEventHandler(SControlMonitor_PLCCommonUpdateDB); SControlMonitor.SendBarcode -= new CStringInfoEventHandler(SControlMonitor_SendBarcode); _host.Close(); IDisposable host = _host as IDisposable; host.Dispose(); } CommonClassLib.AppSettings.dbo.Close(); CommonClassLib.AppSettings.dboM.Close(); } private void MIStartRetrieveTask_Click(object sender, EventArgs e) { if (MITurnOn.Checked == true) { this.Text = CStaticClass.SystemName + "【开始获取任务!】" + "【正在执行自动命令!】";//20120510 } else { this.Text = CStaticClass.SystemName + "【开始获取任务!】";//20120510 } CStaticClass.WcfControl.ObtainTask("", "UPDATE"); MIStopRetrieveTask.Enabled = true; //CStaticClass.ObtainManageTask = true; MIStartRetrieveTask.Checked = true; MIStopRetrieveTask.Checked = false; } private void MIStopRetrieveTask_Click(object sender, EventArgs e) { if (MITurnOn.Checked == true) { this.Text = CStaticClass.SystemName + "【正在执行自动命令!】";//20120510 } else { this.Text = CStaticClass.SystemName;//20120510 } CStaticClass.WcfControl.StopObtainTask(); //CStaticClass.ObtainManageTask = false; //20120510CStaticClass.WcfControl.StopObtainTask(); ToolStripMenuItem tsm; for (int i = 0; i < MIStartRetrieveTask.DropDown.Items.Count; i++) { tsm = (ToolStripMenuItem)MIStartRetrieveTask.DropDown.Items[i]; tsm.Checked = false; } MIStartRetrieveTask.Checked = false; MIStartRetrieveTask.Enabled = true; MIStopRetrieveTask.Enabled = false; MIStopRetrieveTask.Checked = true; } void ToolStripMenu_Click(object sender, EventArgs e) { ToolStripMenuItem tsm; bool ifget = false; DataView dv; char[] cc = new char[1] { ':' }; int laneway = 0; StringBuilder minz = new StringBuilder(); StringBuilder maxz = new StringBuilder(); StringBuilder wherez = new StringBuilder(); ToolStripMenuItem aa = (ToolStripMenuItem)sender; if (aa.Name == "MCAll") { if (aa.Checked == true) { aa.Checked = false; CStaticClass.WcfControl.ObtainTask("", "UPDATE"); } else { aa.Checked = true; CStaticClass.WcfControl.ObtainTask(" or (1=1) ", "UPDATE"); } //20100625修正不能获取站台到站台的任务 for (int i = 0; i < MIStartRetrieveTask.DropDown.Items.Count; i++) { tsm = (ToolStripMenuItem)MIStartRetrieveTask.DropDown.Items[i]; if (tsm.Name != "MCAll") { tsm.Checked = aa.Checked; } } //20100625修正不能获取站台到站台的任务 } else { laneway = Convert.ToInt32(aa.Text.Split(cc)[1]); dv = dbo.ExceSQL("select min(f_z) as minZ from st_cell where flaneway=" + laneway + "").Tables[0].DefaultView; if (dv.Count > 0) { if (dv[0]["minZ"].ToString().Length == 1) { minz = minz.Append("'0").Append(dv[0]["minZ"].ToString()).Append("-00-00'"); } else { minz = minz.Append("'" + dv[0]["minZ"].ToString()).Append("-00-00'"); } } dv = dbo.ExceSQL("select max(f_z) as maxZ from st_cell where flaneway=" + laneway + "").Tables[0].DefaultView; if (dv.Count > 0) { if (dv[0]["maxZ"].ToString().Length == 1) { maxz = maxz.Append("'0").Append(dv[0]["maxZ"].ToString()).Append("-99-99'"); } else { maxz = maxz.Append("'" + dv[0]["maxZ"].ToString()).Append("-99-99'"); } } wherez.Append(" or ((START_DEVICE_CODE between ").Append(minz).Append(" and ").Append(maxz).Append(" ) or (END_DEVICE_CODE between ").Append(minz).Append(" and ").Append(maxz).Append("))"); if (aa.Checked == true) { aa.Checked = false; //20100625修正不能获取站台到站台的任务 CStaticClass.WcfControl.ObtainTask(wherez.ToString(), "REPLACE"); ToolStripMenuItem cm = new ToolStripMenuItem(); ToolStripMenuItem all = (ToolStripMenuItem)MIStartRetrieveTask.DropDown.Items["MCAll"]; CStaticClass.WcfControl.ObtainTask(" or (1=1) ", "REPLACE"); all.Checked = false; StringBuilder wherez1 = new StringBuilder(); for (int ii = 0; ii < MIStartRetrieveTask.DropDown.Items.Count; ii++) { //20101208 minz.Remove(0, minz.Length); maxz.Remove(0, maxz.Length); cm = (ToolStripMenuItem)MIStartRetrieveTask.DropDown.Items[ii]; if ((cm.Checked == true) && (cm.Name != aa.Name) && (cm.Name != "MCAll")) { laneway = Convert.ToInt32(cm.Text.Split(cc)[1]); dv = dbo.ExceSQL("select min(f_z) as minZ from st_cell where flaneway=" + laneway + "").Tables[0].DefaultView; if (dv.Count > 0) { if (dv[0]["minZ"].ToString().Length == 1) { minz = minz.Append("'0").Append(dv[0]["minZ"].ToString()).Append("-00-00'"); } else { minz = minz.Append("'" + dv[0]["minZ"].ToString()).Append("-00-00'"); } } dv = dbo.ExceSQL("select max(f_z) as maxZ from st_cell where flaneway=" + laneway + "").Tables[0].DefaultView; if (dv.Count > 0) { if (dv[0]["maxZ"].ToString().Length == 1) { maxz = maxz.Append("'0").Append(dv[0]["maxZ"].ToString()).Append("-99-99'"); } else { maxz = maxz.Append("'" + dv[0]["maxZ"].ToString()).Append("-99-99'"); } } wherez1.Append(" or ((START_DEVICE_CODE between ").Append(minz).Append(" and ").Append(maxz).Append(" ) or (END_DEVICE_CODE between ").Append(minz).Append(" and ").Append(maxz).Append("))"); } } CStaticClass.WcfControl.ObtainTask(wherez1.ToString(), "APPEND"); //20100625修正不能获取站台到站台的任务 } else { aa.Checked = true; CStaticClass.WcfControl.ObtainTask(wherez.ToString(), "APPEND"); } } MIStartRetrieveTask_Click(sender, e); for (int i = 0; i < MIStartRetrieveTask.DropDown.Items.Count; i++) { tsm = (ToolStripMenuItem)MIStartRetrieveTask.DropDown.Items[i]; if (tsm.Checked == true) { ifget = true; } } if (ifget == false) { MIStopRetrieveTask_Click(sender, e); } } private void MITurnOn_Click(object sender, EventArgs e) { MITurnOff.Enabled = true; MITurnOn.Enabled = false; tsmTurnOff.Enabled = true; tsmTurnOn.Enabled = false; tsmTurnOff.Checked = false; tsmTurnOn.Checked = true; MITurnOff.Checked = false; MITurnOn.Checked = true; //CStaticClass.Order = true; CStaticClass.WcfControl.OrderTurnOn(); if (MIStartRetrieveTask.Checked == true) { this.Text = CStaticClass.SystemName + "【开始获取任务!】" + "【正在执行自动命令!】"; } else { this.Text = CStaticClass.SystemName + "【正在执行自动命令!】"; } //20120510CStaticClass.WcfControl.OrderTurnOn(); } private void MITurnOff_Click(object sender, EventArgs e) { if (MessageBox.Show("您确认要“关闭命令开关”吗?如果“关闭命令开关”将导致调度计算机与所有设备通讯中断!", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK) { return; } CStaticClass.WcfControl.OrderTurnOff(); //CStaticClass.Order = false; MITurnOff.Enabled = false; MITurnOn.Enabled = true; tsmTurnOff.Enabled = false; tsmTurnOn.Enabled = true; tsmTurnOn.Checked = false; tsmTurnOff.Checked = true; MITurnOn.Checked = false; MITurnOff.Checked = true; if (MIStartRetrieveTask.Checked == true) { this.Text = CStaticClass.SystemName + "【开始获取任务!】"; } else { this.Text = CStaticClass.SystemName; } //20120510CStaticClass.WcfControl.OrderTurnOff(); } private void timerObtainTask_Tick(object sender, EventArgs e) { timerObtainTask.Enabled = false; try //if (CStaticClass.ObtainManageTask == true) { string errtext = string.Empty; if (CStaticClass.WcfControl.GetAllManageTask(out errtext) == false) { if (tsStatus.Text.IndexOf(errtext) < 0) { tsStatus.Text += errtext; } } #region AGV任务没响应,任务重发 //int DeviceIdx; //int TaskIdx = 0; //StringBuilder sql = new StringBuilder(); //DataView dvmo =new DataView(); //sql.Remove(0, sql.Length); //sql.Append("SELECT F_DeviceIndex,F_DeviceKindIndex,F_MaxSendCount,F_SendInterval FROM T_Base_Device WHERE F_DeviceKindIndex = 6"); //DataView dd = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView; //for (int j = 0; j < dd.Count; j++) //{ // DeviceIdx = Convert.ToInt32(dd[j]["F_DeviceIndex"]); // #region 发送后规定时间内没报开始或者读取数据成功需要进行超时重发,重发超限时报错 // sql.Remove(0, sql.Length); // sql.Append("select F_MonitorIndex,F_DeviceIndex,F_SendCount,F_StartTime,F_Status,F_AgvNo from T_Monitor_Task where F_DeviceIndex=").Append(DeviceIdx).Append(" and f_status=1 and F_SendFlag='1'"); // dvmo= dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;//20100905只重发主任务 // if (dvmo.Count > 0) // {//20110510 // TaskIdx = Convert.ToInt32(dvmo[0]["F_MonitorIndex"]); // int scount = Convert.ToInt32(dvmo[0]["F_SendCount"]); // scount++; // if (scount > Convert.ToInt32(dd[j]["F_MaxSendCount"])) // { // //发送次数超限报警 // sql.Remove(0, sql.Length); // sql.Append("update T_Monitor_Task set F_Status=999 where F_Status<>999 and F_MonitorIndex=").Append(TaskIdx);//20110505 // dbo.ExceSQL(sql.ToString()); // } // else // { // //DateTime.Now.AddMilliseconds // if (dvmo[0]["F_StartTime"].ToString() != "-") // { // if (Convert.ToDateTime(dvmo[0]["F_StartTime"].ToString().Substring(0, 19), CultureInfo.CurrentCulture).AddMilliseconds(Convert.ToDouble(dd[j]["F_SendInterval"])) <= DateTime.Now) // { // if (dvmo[0]["F_AgvNo"] == DBNull.Value) // { // sql.Remove(0, sql.Length); // sql.Append("update T_Base_Device set F_LockedState=0 where F_DeviceIndex=").Append(DeviceIdx); // dbo.ExceSQL(sql.ToString()); // sql.Remove(0, sql.Length); // sql.Append("update T_Monitor_Task set F_SendCount=").Append(scount).Append(",F_Status=0 where F_MonitorIndex=").Append(TaskIdx); // dbo.ExceSQL(sql.ToString()); // } // CommonClassLib.CCarryConvert.WriteDarkCasket("GetDeviceState", "超时重发", DeviceIdx.ToString(), "设备指令索引:" + TaskIdx.ToString() + "发送后,一直没有报告执行或者完成,重新发送命令!"); // } // } // } // } // #endregion //} #endregion } catch (Exception ex) { if (tsStatus.Text.IndexOf(ex.Message) < 0) { tsStatus.Text += ex.Message; } } finally { timerObtainTask.Enabled = true; } } private void timerDisassembleTask_Tick(object sender, EventArgs e) { timerDisassembleTask.Enabled = false; try //if (CStaticClass.Order == true) { string errtext = string.Empty; if (CStaticClass.WcfControl.DisassembleTask(out errtext) == false) { if (tsStatus.Text.IndexOf(errtext) < 0) { tsStatus.Text += errtext; } } } catch (Exception ex) { if (tsStatus.Text.IndexOf(ex.Message ) < 0) { tsStatus.Text += ex.Message; } } finally { timerDisassembleTask.Enabled = true; } } private void timerSendOrder_Tick(object sender, EventArgs e) { timerSendOrder.Enabled = false; try //if (CStaticClass.Order == true) { string errtext = string.Empty; if (CStaticClass.WcfControl.StartSendDeviceOrder(out errtext) == false) { if (tsStatus.Text.IndexOf(errtext) < 0) { tsStatus.Text += errtext; } } } catch (Exception ex) { if (tsStatus.Text.IndexOf(ex.Message) < 0) { tsStatus.Text += ex.Message; } } finally { timerSendOrder.Enabled = true; } } private void MISeeDarket_Click(object sender, EventArgs e) { FrmBrowseDarkCasket.FormInstance.Show(); } private void MIDarketFileSet_Click(object sender, EventArgs e) { FrmDarkCasket.FormInstance.Show(); } private void MIAutoTaskHistory_Click(object sender, EventArgs e) { FrmBrowseAotoTaskLog.FormInstance.Show(); } private void MMExitSystem_Click(object sender, EventArgs e) { this.Close(); } private void MISystemInit_Click(object sender, EventArgs e) { FrmSystemInit.FormInstance.Show(); } private void toolStripMenuItem13_Click(object sender, EventArgs e) { MITurnOn_Click(sender, e); } private void toolStripMenuItem14_Click(object sender, EventArgs e) { MITurnOff_Click(sender, e); } private void toolStripMenuItem9_Click(object sender, EventArgs e) { this.Close(); } private void toolStripMenuItem8_Click(object sender, EventArgs e) { this.Visible = true; this.WindowState = FormWindowState.Maximized; } private void toolStripMenuItem10_Click(object sender, EventArgs e) { this.Visible = false; } private void notifyIcon1_DoubleClick(object sender, EventArgs e) { this.TopMost = true; this.Visible = true; this.TopMost = false; this.WindowState = FormWindowState.Maximized; } private void button1_Click(object sender, EventArgs e) { listBox1.Items.Clear(); } /// /// 20120503向列表框增加显示内容 /// /// /// bool AddList1Info(string txtinfo) { try { if (txtinfo.IndexOf("巡检客户端") >= 0) return true; if (listBox1.Items.Count >= 70) listBox1.Items.Clear(); foreach (object li in listBox1.Items) { if (li.ToString().IndexOf(txtinfo) >= 0) { //listBox1.Items.Remove(li); //listBox1.Items.Add(DateTime.Now.ToLongTimeString() + txtinfo); return false; } } listBox1.Items.Add(DateTime.Now.ToLongTimeString() + txtinfo); return true; } catch (Exception ex) { if (tsStatus.Text.IndexOf("巡检客户端AddList1Info:" + ex.StackTrace + ex.Message) < 0) { tsStatus.Text += "巡检客户端AddList1Info:" + ex.StackTrace + ex.Message; } return false; } } private void button4_Click(object sender, EventArgs e) { try { this.listBox2.Items.Clear(); var list = WcfControlMonitorLib.SControlMonitor.ClientCallbackLists; if (list == null || list.Count == 0) return; lock (list) { foreach (System.Collections.DictionaryEntry client in list) { listBox2.Items.Add(client.Value.ToString()); } } } catch (Exception ex) { if (tsStatus.Text.IndexOf("刷新客户端时:" + ex.StackTrace + ex.Message) < 0) { tsStatus.Text += "刷新客户端时:" + ex.StackTrace + ex.Message; } } } private void button3_Click(object sender, EventArgs e) { try { if (listBox2.SelectedItem == null) return; var list = WcfControlMonitorLib.SControlMonitor.ClientCallbackLists; foreach (System.Collections.DictionaryEntry client in list) { if (client.Value.ToString() == listBox2.SelectedItem.ToString()) { WcfControlMonitorLib.SControlMonitor.ClientShowLists.Remove(client.Key); WcfControlMonitorLib.SControlMonitor.ClientCallbackLists.Remove(client.Key); button4_Click(sender, e); return; } } } catch (Exception ex) { if (tsStatus.Text.IndexOf("注销客户端时:" + ex.StackTrace + ex.Message) < 0) { tsStatus.Text += "注销客户端时:" + ex.StackTrace + ex.Message; } } } void ClickObtainTask() { if (MITurnOn.Checked == true) { if (this.Text != CStaticClass.SystemName + "【开始获取任务!】" + "【正在执行自动命令!】") { this.Text = CStaticClass.SystemName + "【开始获取任务!】" + "【正在执行自动命令!】"; } } else { if (this.Text != CStaticClass.SystemName + "【开始获取任务!】") { this.Text = CStaticClass.SystemName + "【开始获取任务!】"; } } MIStartRetrieveTask.Checked = true; MIStartRetrieveTask.Enabled = false; MIStopRetrieveTask.Checked = false; MIStopRetrieveTask.Enabled = true; } void ClickStopObtainTask() { if (MITurnOn.Checked == true) { if (this.Text != CStaticClass.SystemName + "【正在执行自动命令!】") { this.Text = CStaticClass.SystemName + "【正在执行自动命令!】"; } } else { if (this.Text != CStaticClass.SystemName) { this.Text = CStaticClass.SystemName; } } MIStartRetrieveTask.Checked = false; MIStartRetrieveTask.Enabled = true; MIStopRetrieveTask.Enabled = false; MIStopRetrieveTask.Checked = true; } void ClickOrderTurnOn() { if (MIStartRetrieveTask.Checked == true) { if (this.Text != CStaticClass.SystemName + "【开始获取任务!】" + "【正在执行自动命令!】") { this.Text = CStaticClass.SystemName + "【开始获取任务!】" + "【正在执行自动命令!】"; } } else { if (this.Text != CStaticClass.SystemName + "【正在执行自动命令!】") { this.Text = CStaticClass.SystemName + "【正在执行自动命令!】"; } } MITurnOff.Enabled = true; MITurnOn.Enabled = false; MITurnOff.Checked = false; MITurnOn.Checked = true; } void ClickOrderTurnOff() { if (MIStartRetrieveTask.Checked == true) { if (this.Text != CStaticClass.SystemName + "【开始获取任务!】") { this.Text = CStaticClass.SystemName + "【开始获取任务!】"; } } else { if (this.Text != CStaticClass.SystemName) { this.Text = CStaticClass.SystemName; } } MITurnOff.Enabled = false; MITurnOn.Enabled = true; MITurnOn.Checked = false; MITurnOff.Checked = true; } private void timer1_Tick(object sender, EventArgs e) { DataView dv = new DataView(); try {//20121203 #region 测试黑匣子记录 //for (int i = 0; i < 5000; i++) //{ // CommonClassLib.CCarryConvert.WriteDarkCasket("测试记录", i.ToString(), "", ""); //} #endregion CStaticClass.WcfControl.Heartbeat(out mi); if (mi.S7connectOnline.Count > 0) { if (mi.S7connectOnline["S7 connection_1"] == 0) { pbF1S7.Image = wcfControlMonitorClient.Properties.Resources.ProgressSuccess; } else { pbF1S7.Image = wcfControlMonitorClient.Properties.Resources.ProgressError; } } else { pbF1S7.Image = wcfControlMonitorClient.Properties.Resources.ProgressError; } if (mi.Orderturnon == true) { ClickOrderTurnOn(); } else { ClickOrderTurnOff(); } if (mi.Obtaintask == true) { ClickObtainTask(); } else { ClickStopObtainTask(); } timersum++;//20120513 if (timersum > 60)//20120513 { listBox1.Items.Clear(); timersum = 0; dv = dbo.ExceSQL("SELECT T_Monitor_Task.F_MonitorIndex,T_Base_Device.F_DeviceIndex FROM T_Base_Device,T_Monitor_Task where T_Base_Device.F_DeviceIndex = T_Monitor_Task.F_DeviceIndex and (T_Base_Device.F_DeviceKindIndex = 1 OR T_Base_Device.F_DeviceKindIndex = 4) and F_Status>0 and F_StartTime<>'-' and (datediff(MINUTE,CONVERT(datetime,SUBSTRING( F_StartTime,1,19),120),GETDATE()) >5)").Tables[0].DefaultView; for (int i = 0; i < dv.Count; i++) { CStaticClass.WcfControl.ActionError(Convert.ToInt32(dv[i][1]), Convert.ToInt32(dv[i][0]), 999); CStaticClass.dbo.ExecuteSql(string.Format("update T_Base_Device set F_ErrorTaskNo=0 where F_ErrorTaskNo={0}", Convert.ToInt32(dv[i][0]))); } } //timerefesh++;//20150103增加断网恢复//20151120取消断网恢复 //if (timerefesh > 1) //{//20150103增加断网恢复 // CStaticClass.WcfControl.RefreshMonitoringMode(); // timerefesh = 0; //} SendMessageToClient("巡检客户端"); } catch (Exception ex) { if (tsStatus.Text.IndexOf("巡检客户端时:"+ex.StackTrace+ex.Message) < 0) { tsStatus.Text += "巡检客户端时:" + ex.StackTrace + ex.Message; } } finally { dv.Dispose(); } } private void timerTCPReConnect_Tick(object sender, EventArgs e) { timerTCPReConnect.Enabled = false; try { string errtext = string.Empty; if (CStaticClass.WcfControl.ReConnectAGVPC(out errtext) == false) { if (tsStatus.Text.IndexOf(errtext) < 0) { tsStatus.Text += errtext; } } #region 20200519 增加AGV任务没有应答的重发 DealWithAGVNoHandCommand(); #endregion } catch (Exception ex) { if (tsStatus.Text.IndexOf(ex.Message) < 0) { tsStatus.Text += ex.Message; } } finally { timerTCPReConnect.Enabled = true; } } /// /// 处理发送成功但是AGV控制台没有应答的任务(已发送状态 1) /// private void DealWithAGVNoHandCommand() { DataView dv = new DataView(); try { dv = dbo.ExceSQL("SELECT T_Monitor_Task.F_MonitorIndex,T_Monitor_Task.F_StartTime,T_Base_Device.F_DeviceIndex FROM T_Base_Device,T_Monitor_Task where T_Base_Device.F_DeviceIndex = T_Monitor_Task.F_DeviceIndex and (T_Base_Device.F_DeviceKindIndex = 6 ) and F_Status = 1 and F_StartTime<>'-' ").Tables[0].DefaultView; for (int i = 0; i < dv.Count; i++) { DateTime appdt = new DateTime(); DateTime.TryParse(dv[i]["F_StartTime"].ToString().Substring(0, 19), out appdt); if (appdt.AddSeconds(5) < DateTime.Now) { dbo.ExceSQL("update T_Monitor_Task set F_status = 0 where F_MonitorIndex = " + dv[i]["F_MonitorIndex"]); CommonClassLib.CCarryConvert.WriteDarkCasket("timerTCPReConnect", "重发无应答AGV任务", dv[i]["F_DeviceIndex"].ToString(), "指令号:" + dv[i]["F_MonitorIndex"].ToString()); } } } catch (Exception ex) { if (tsStatus.Text.IndexOf("重发AGV任务时:" + ex.StackTrace + ex.Message) < 0) { tsStatus.Text += "重发AGV任务时:" + ex.StackTrace + ex.Message; } } finally { dv.Dispose(); } return; } /// /// 环形穿梭车、AGV数据库任务接口,获得任务状态定时器 /// /// /// private void timerGetARgvState_Tick(object sender, EventArgs e) { timerGetARgvState.Enabled = false; try //if (CStaticClass.ObtainManageTask == true) { string errtext = string.Empty; if (CStaticClass.WcfControl.GetARGVState(out errtext) == false) { if (tsStatus.Text.IndexOf(errtext) < 0) { tsStatus.Text += errtext; } } EmptyPalletNewTemp(); } catch (Exception ex) { if (tsStatus.Text.IndexOf(ex.Message) < 0) { tsStatus.Text += ex.Message; } } finally { timerGetARgvState.Enabled = true; } } //public void EmptyPallet() //{ // List ls = new List(); // ls.Add("22202"); // ls.Add("22203"); // ls.Add("22233"); // ls.Add("22230"); // ls.Add("22237"); // ls.Add("12242"); // ls.Add("12246"); // ls.Add("12141"); // ls.Add("12259"); // ls.Add("12239"); // ls.Add("12250"); // ls.Add("12151"); // ls.Add("12135"); // ls.Add("12127"); // StringBuilder sql = new StringBuilder(); // //sql.Remove(0, sql.Length); // for (int i = 0; i < ls.Count(); i++) // { // sql.Remove(0, sql.Length); // sql.Append("SELECT F_WareHouse,F_ManageAskkind,F_DeviceIndex, F_Askkind, F_HaveFirstProject,F_BindingDevice,F_FirstProject,F_Remark,F_TempFirstProject FROM T_Base_PLC_Ask WHERE (F_DeviceIndex = ").Append(ls[i]).Append(")"); // var dvsp = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView; // var values = 0; // if (dvsp.Count > 0) // { // //1.得到需要判断的条件--检查输送机索引,总任务数量 // bool bok = false; // int iMaxCount = Convert.ToInt32(dvsp[0]["F_Remark"]); // 可以缓存最大托盘数量: 有物开关 + 出库任务数量 // int istation = Convert.ToInt32(dvsp[0]["F_BindingDevice"]); // 申请站台 // string ConevyorToCheck = dvsp[0]["F_FirstProject"].ToString();// 需要检查有货的输送线组 // int iMaxTask = Convert.ToInt32(dvsp[0]["F_TempFirstProject"]); // 最大出库任务数量 // string ifask = dvsp[0]["F_HaveFirstProject"].ToString();//是否申请开关 // if (ifask == "0") // { // return; // } // if (ls[i] == "12135" || ls[i] == "12141" || ls[i] == "12259") // { // //values = ls[i] == "12259"?12135: 12128; // //var devinfo = Model.CGetInfo.GetDeviceInfo(values); // //if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 0) // //{ // // var dvsps = dbo.ExceSQL(string.Format($"select * from t_base_device_st where F_DeviceIndexs ='{ls[i]}' ")).Tables[0].DefaultView; // // if (dvsps.Count > 0) // // { // // var dvspsd = dbo.ExceSQL(string.Format($"select * from [dbo].[T_Manage_Task] where FPALLETBARCODE'{dvsps[0]["F_BarCode"].ToString()}' ")).Tables[0].DefaultView; //20130510F_ManageAskkind // // if (dvspsd.Count>0) // // { // // Thread.Sleep(1000); // // automaticTask(values, ls[i]); // // } // // } // //} // } // else { // // 条件判断 // bok = CStaticClass.WcfControl.CheckEmptyOutOK(iMaxCount, istation, ConevyorToCheck, iMaxTask); // if (bok) // { // //if (ls[i] == "22202" || ls[i] == "22203" || ls[i] == "12242" || ls[i] == "12246") // //{ // //if (devidx == 22226) // //{ // switch (ls[i]) // { // case "22202": // case "22203": // case "12242": // case "12246": // values = (ls[i] == "22202" || ls[i] == "22203") ? 22226 : 12118; // var dvbc = dbo.ExceSQL(string.Format($"select * from T_Monitor_Task where F_NumParam1='{values}' and F_Status='0'")).Tables[0].DefaultView; // if (dvbc.Count <= 0) // { // var dvbcsr = dbo.ExceSQL(string.Format($"select * from T_Manage_Task where FSTARTDEVICE='{values}' and FSTATUS=0 ")).Tables[0].DefaultView; // if (dvbcsr.Count <= 0) // { // var devinfo = Model.CGetInfo.GetDeviceInfo(values); // if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 5) // { // if (devinfo.RunState == 5) // { // string errtexts = string.Empty; // CStaticClass.WcfControl.WriteDBData(values, "DB1", "0", out errtexts); // Thread.Sleep(1000); // CStaticClass.WcfControl.WriteDBData(values, "DB1", "2", out errtexts); // //automaticTask(ls[i]); // automaticTask(values, ls[i]); // } // //} // } // } // //} // } // break; // case "12151": // //22270-12158已执行子表 // // 12158有货空闲 // //生成12158-12151 // #region 新增在12151申请空托盘时12158有货时从12158上进行上托盘 // values = 12159; // var devinfo1 = Model.CGetInfo.GetDeviceInfo(values); // if (devinfo1.SplitByte_0 == 1 && devinfo1.RunState == 0)//12158有货空闲 // { // //生成12158-12151 // var dvbcs1 = dbo.ExceSQL(string.Format($"select * from T_Monitor_Task where F_NumParam1='{values}' and (F_Status=0 or F_Status=1)")).Tables[0].DefaultView; // if (dvbcs1.Count <= 0) // { // var dvbcsr = dbo.ExceSQL(string.Format($"select * from T_Manage_Task where FSTARTDEVICE='{values}' and FSTATUS=0 ")).Tables[0].DefaultView; // if (dvbcsr.Count <= 0) // { // automaticTask(values, ls[i]); // Thread.Sleep(1000); // } // } // else { // int apptype = 2;// 双鹿要求申请类型0 // string warehouse = dvsp[0]["F_WareHouse"].ToString(); // string dtime = DateTime.Now.ToString("u"); // dtime.Remove(dtime.Length - 1, 1); // sql.Remove(0, sql.Length); // object[] ob = new object[9] { apptype, istation, "", 0, dtime, "", warehouse.ToString(), "", "1" };//CONTROL_APPLY_PARAMETER // dboM.ExecuteSql(string.Format("INSERT INTO IO_CONTROL_APPLY( CONTROL_APPLY_TYPE,DEVICE_CODE, STOCK_BARCODE, APPLY_TASK_STATUS, CREATE_TIME,CONTROL_APPLY_PARAMETER,WAREHOUSE_CODE,CONTROL_APPLY_PARA01,CONTROL_APPLY_PARA02)VALUES ({0},'{1}','{2}',{3},'{4}','{5}','{6}','{7}','{8}')", ob)); // //记录黑匣子 // CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "向管理系统申请空托盘出库任务:", ls[i].ToString(), ",站台:" + istation.ToString()); // // 20210607 记录申请时间,加间隔校验,管理申请不能太快! // dbo.ExecuteSql(string.Format("UPDATE T_Base_PLC_Ask SET F_Time='{1}' WHERE (F_DeviceIndex = {0}) ", ls[i], dtime)); // } // } // else // { // //var dvbcs2 = dbo.ExceSQL(string.Format($"select * from T_Monitor_Task where F_NumParam1='22270' and F_NumParam4='{values}' and (F_Status!=0 and F_Status!=1) ")).Tables[0].DefaultView; // //if (!(dvbcs2.Count > 1))//22270-12158已执行子表 // //{ // int apptype = 2;// 双鹿要求申请类型0 // string warehouse = dvsp[0]["F_WareHouse"].ToString(); // string dtime = DateTime.Now.ToString("u"); // dtime.Remove(dtime.Length - 1, 1); // sql.Remove(0, sql.Length); // object[] ob = new object[9] { apptype, istation, "", 0, dtime, "", warehouse.ToString(), "", "1" };//CONTROL_APPLY_PARAMETER // dboM.ExecuteSql(string.Format("INSERT INTO IO_CONTROL_APPLY( CONTROL_APPLY_TYPE,DEVICE_CODE, STOCK_BARCODE, APPLY_TASK_STATUS, CREATE_TIME,CONTROL_APPLY_PARAMETER,WAREHOUSE_CODE,CONTROL_APPLY_PARA01,CONTROL_APPLY_PARA02)VALUES ({0},'{1}','{2}',{3},'{4}','{5}','{6}','{7}','{8}')", ob)); // //记录黑匣子 // CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "向管理系统申请空托盘出库任务:", ls[i].ToString(), ",站台:" + istation.ToString()); // // 20210607 记录申请时间,加间隔校验,管理申请不能太快! // dbo.ExecuteSql(string.Format("UPDATE T_Base_PLC_Ask SET F_Time='{1}' WHERE (F_DeviceIndex = {0}) ", ls[i], dtime)); // //} // } // #endregion // #region 旧 空托盘申请入库 // //int apptype = 2;// 双鹿要求申请类型0 // //string warehouse = dvsp[0]["F_WareHouse"].ToString(); // ////int dcode = Convert.ToInt32(dvsp[0]["F_BindingDevice"]); // ////int BoxQuality = 1;// 0标记,1类型,2数量 // //string dtime = DateTime.Now.ToString("u"); // //dtime.Remove(dtime.Length - 1, 1); // //sql.Remove(0, sql.Length); // //object[] ob = new object[9] { apptype, istation, "", 0, dtime, "", warehouse.ToString(), "", "1" };//CONTROL_APPLY_PARAMETER // //dboM.ExecuteSql(string.Format("INSERT INTO IO_CONTROL_APPLY( CONTROL_APPLY_TYPE,DEVICE_CODE, STOCK_BARCODE, APPLY_TASK_STATUS, CREATE_TIME,CONTROL_APPLY_PARAMETER,WAREHOUSE_CODE,CONTROL_APPLY_PARA01,CONTROL_APPLY_PARA02)VALUES ({0},'{1}','{2}',{3},'{4}','{5}','{6}','{7}','{8}')", ob)); // //#region 旧代码注释 // //#endregion // ////记录黑匣子 // //CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "向管理系统申请空托盘出库任务:", ls[i].ToString(), ",站台:" + istation.ToString()); // //// 20210607 记录申请时间,加间隔校验,管理申请不能太快! // //dbo.ExecuteSql(string.Format("UPDATE T_Base_PLC_Ask SET F_Time='{1}' WHERE (F_DeviceIndex = {0}) ", ls[i], dtime)); // #endregion // break; // case "22237": // case "22233": // case "22230": // values =12151; // var dvbcs = dbo.ExceSQL(string.Format($"select * from T_Monitor_Task where F_NumParam1='{values}' and (F_Status=0 or F_Status=1)")).Tables[0].DefaultView; // if (dvbcs.Count <= 0) // { // var dvbcsr = dbo.ExceSQL(string.Format($"select * from T_Manage_Task where FSTARTDEVICE='{values}' and FSTATUS=0 ")).Tables[0].DefaultView; // if (dvbcsr.Count <= 0) // { // var devinfo = Model.CGetInfo.GetDeviceInfo(values); // if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 0) // { // if (devinfo.RunState == 0) // { // //string errtexts = string.Empty; // //CStaticClass.WcfControl.WriteDBData(values, "DB1", "", out errtexts); // Thread.Sleep(1000); // //automaticTask(ls[i]); // MDevice mDevice_12416 = CGetInfo.GetDeviceInfo(12416); // if (mDevice_12416.RunState == 0) // { // automaticTask(values, ls[i]); // } // } // //} // } // } // //} // } // break; // default: // break; // } // //} // //if (ls[i] == "22237" || ls[i] == "22233" || ls[i] == "22230") // //{ // // //bool ifSQLServer = true; // // //int appid = dboMan.GetManageTableIndex("IO_CONTROL_APPLY", ifSQLServer);//CONTROL_APPLY_ID // // int apptype = 2;// 双鹿要求申请类型0 // // string warehouse = dvsp[0]["F_WareHouse"].ToString(); // // //int dcode = Convert.ToInt32(dvsp[0]["F_BindingDevice"]); // // //int BoxQuality = 1;// 0标记,1类型,2数量 // // string dtime = DateTime.Now.ToString("u"); // // dtime.Remove(dtime.Length - 1, 1); // // sql.Remove(0, sql.Length); // // object[] ob = new object[9] { apptype, istation, "", 0, dtime, "", warehouse.ToString(), "", "1" };//CONTROL_APPLY_PARAMETER // // dboM.ExecuteSql(string.Format("INSERT INTO IO_CONTROL_APPLY( CONTROL_APPLY_TYPE,DEVICE_CODE, STOCK_BARCODE, APPLY_TASK_STATUS, CREATE_TIME,CONTROL_APPLY_PARAMETER,WAREHOUSE_CODE,CONTROL_APPLY_PARA01,CONTROL_APPLY_PARA02)VALUES ({0},'{1}','{2}',{3},'{4}','{5}','{6}','{7}','{8}')", ob)); // // #region 旧代码注释 // // #endregion // // //记录黑匣子 // // CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "向管理系统申请空托盘出库任务:", ls[i].ToString(), ",站台:" + istation.ToString()); // // // 20210607 记录申请时间,加间隔校验,管理申请不能太快! // // dbo.ExecuteSql(string.Format("UPDATE T_Base_PLC_Ask SET F_Time='{1}' WHERE (F_DeviceIndex = {0}) ", ls[i], dtime)); // //} // } // } // } // if (ls[i] == "12259"||ls[i] == "12239" || ls[i] == "12250") // { // var devinfo = Model.CGetInfo.GetDeviceInfo(Convert.ToInt32(ls[i]) ); // if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 5) // { // if (devinfo.RunState == 5) // { // string errtexts = string.Empty; // CStaticClass.WcfControl.WriteDBData(Convert.ToInt32(ls[i]), "DB1", "0", out errtexts); // Thread.Sleep(1000); // CStaticClass.WcfControl.WriteDBData(Convert.ToInt32(ls[i]), "DB1", "2", out errtexts); // //automaticTask(ls[i]); // //automaticTask(values, ls[i]); // } // //} // //} // } // } // if (ls[i] == "22237" || ls[i] == "12127"|| ls[i] == "12135")//ls[i] == "22237"|| // { // if (CommonClassLib.AppSettings.GetValue("EmptyPallets").Equals("1")) // { // var devinfo = Model.CGetInfo.GetDeviceInfo(Convert.ToInt32(ls[i])); // if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 5) // { // string errtexts = string.Empty; // CStaticClass.WcfControl.WriteDBData(Convert.ToInt32(ls[i]), "DB1", "0", out errtexts); // Thread.Sleep(1000); // CStaticClass.WcfControl.WriteDBData(Convert.ToInt32(ls[i]), "DB1", "2", out errtexts); // } // } // } // //if (ls[i] == "12135" || ls[i] == "12141" ) // //{ // // values = ls[i] == "12259" ? 12135 : 12128; // // var devinfo = Model.CGetInfo.GetDeviceInfo(values); // // if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 0) // // { // // var dvsps = dbo.ExceSQL(string.Format($"select * from t_base_device_st where F_DeviceIndexs ='{ls[i]}' ")).Tables[0].DefaultView; // // if (dvsps.Count > 0) // // { // // var dvspsd = dbo.ExceSQL(string.Format($"select * from [dbo].[T_Manage_Task] where FPALLETBARCODE'{dvsps[0]["F_BarCode"].ToString()}' ")).Tables[0].DefaultView; //20130510F_ManageAskkind // // if (dvspsd.Count > 0) // // { // // Thread.Sleep(1000); // // automaticTask(values, ls[i]); // // } // // } // // } // //} // #region 向管理申请 // ////2.向管理申请 // //if (bok == true) // //{ // // bool ifSQLServer = true; // // if (CStaticClass.ManDBFactory == "OracleDBFactory") // // { // // ifSQLServer = false; // // } // // int appid = dboMan.GetManageTableIndex("IO_CONTROL_APPLY", ifSQLServer);//CONTROL_APPLY_ID // // int apptype = 0;// 双鹿要求申请类型0 // // string warehouse = dvsp[0]["F_WareHouse"].ToString(); // // int dcode = Convert.ToInt32(dvsp[0]["F_BindingDevice"]); // // int BoxQuality = 1;// 0标记,1类型,2数量 // // string dtime = DateTime.Now.ToString("u"); // // dtime.Remove(dtime.Length - 1, 1); // // sql.Remove(0, sql.Length); // // sql.Append("INSERT INTO IO_CONTROL_APPLY(CONTROL_APPLY_ID,CONTROL_APPLY_TYPE, WAREHOUSE_CODE,DEVICE_CODE, STOCK_BARCODE, APPLY_TASK_STATUS, CREATE_TIME,CONTROL_APPLY_REMARK,CONTROL_APPLY_PARLAPTOP-G9N81K1O)VALUES ").Append( // // "(").Append(appid).Append(",").Append(apptype).Append(",'").Append(warehouse).Append("','").Append(dcode).Append("','',0,'").Append(dtime).Append("','',").Append(BoxQuality).Append(")"); // // // 插入记录 // // dboMan.ExceSQL(sql.ToString()); // // #region 旧代码注释 // // // int appid = dboMan.GetManageTableIndex("IO_CONTROL_APPLY", true);//CONTROL_APPLY_ID // // //object[] ob = new object[8] { 2, istation, "-", 0, dtime, "", "1", 1 }; // // //dboMan.ExecuteSql(string.Format("INSERT INTO IO_CONTROL_APPLY( CONTROL_APPLY_TYPE,DEVICE_CODE, STOCK_BARCODE, APPLY_TASK_STATUS, CREATE_TIME,CONTROL_APPLY_REMARK,WAREHOUSE_CODE,BOX_QUANTITY)VALUES ({0},'{1}','{2}',{3},'{4}','{5}','{6}',{7})", ob)); // // #endregion // // //记录黑匣子 // // CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "向管理系统申请空托盘出库任务:", devidx.ToString(), ",站台:" + istation.ToString()); // // // 20210607 记录申请时间,加间隔校验,管理申请不能太快! // // dbo.ExecuteSql(string.Format("UPDATE T_Base_PLC_Ask SET F_Time='{1}' WHERE (F_DeviceIndex = {0}) ", devidx, dtime)); // //} // #endregion // } // #region 新增空托盘在12159工位申请回库 // var valuess = 12159; // Thread.Sleep(2000); // var dvbcs3 = dbo.ExceSQL(string.Format($"select * from T_Monitor_Task where F_NumParam1='22270' and F_NumParam4='{valuess}' and F_Status!=0 ")).Tables[0].DefaultView; // Model.MDevice device = CGetInfo.GetDeviceInfo(12162); // if (dvbcs3.Count > 2 || (device.SplitByte_0 == 1 && device.RunState == 0)) // { // var dvbcs1 = dbo.ExceSQL(string.Format($"select * from T_Monitor_Task where F_NumParam1='{valuess}' and (F_Status=0 or F_Status=1)")).Tables[0].DefaultView; // if (dvbcs1.Count <= 0) // { // var dvbcsr = dbo.ExceSQL(string.Format($"select * from T_Manage_Task where FSTARTDEVICE='{valuess}' and FSTATUS=0 ")).Tables[0].DefaultView; // if (dvbcsr.Count <= 0) // { // var dvbc = dboM.ExceSQL(string.Format(" select * from IO_CONTROL where START_DEVICE_CODE='12159' and END_DEVICE_CODE='22245' and (CONTROL_STATUS = 0 or CONTROL_STATUS = 7 )")).Tables[0].DefaultView; // if (dvbc.Count <= 0) // { // var devinfo = Model.CGetInfo.GetDeviceInfo(valuess); // if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 0) // { // string dtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // object[] ob = new object[9] { "3", valuess, "", 0, dtime, "", "1".ToString(), "", "1" };//CONTROL_APPLY_PARAMETER // try // { // dboM.ExecuteSql(string.Format("INSERT INTO IO_CONTROL_APPLY( CONTROL_APPLY_TYPE,DEVICE_CODE, STOCK_BARCODE, APPLY_TASK_STATUS, CREATE_TIME,CONTROL_APPLY_PARAMETER,WAREHOUSE_CODE,CONTROL_APPLY_PARA01,CONTROL_APPLY_PARA02)VALUES ({0},'{1}','{2}',{3},'{4}','{5}','{6}','{7}','{8}')", ob)); // //dboMan.ExecuteSql(string.Format("INSERT INTO IO_CONTROL_APPLY( CONTROL_APPLY_TYPE,DEVICE_CODE, STOCK_BARCODE, APPLY_TASK_STATUS, CREATE_TIME,CONTROL_APPLY_REMARK,WAREHOUSE_CODE,CONTROL_APPLY_ID,CONTROL_APPLY_PARA01,CONTROL_APPLY_PARA02)VALUES ({0},'{1}','{2}',{3},'{4}','{5}','{6}',{7},'{8}','{9}')", ob)); // CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "向管理条码申请任务:", valuess.ToString(), $" 站台:{valuess} **条码:");//20140218 // Thread.Sleep(2000); // } // catch (Exception ex) // { // } // } // } // } // } // } // #endregion // //获取设备信息 // //Model.CGetInfo.GetDeviceInfo(123456); //} //public void EmptyPalletNew() //{ // List ls = new List // { // "22202", // "22203", // "22233", // "22230", // "22237", // "12242", // "12246", // "12141", // "12259", // "12239", // "12250", // "12149", // "12151", // "12135", // "12127" // }; // StringBuilder sql = new StringBuilder(); // for (int i = 0; i < ls.Count(); i++) // { // sql.Remove(0, sql.Length); // sql.Append("SELECT F_WareHouse,F_ManageAskkind,F_DeviceIndex, F_Askkind, F_HaveFirstProject,F_BindingDevice,F_FirstProject,F_Remark,F_TempFirstProject FROM T_Base_PLC_Ask WHERE (F_DeviceIndex = ").Append(ls[i]).Append(")"); // var dvsp = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView; // int values = 0; // string end_device = ""; // if (dvsp.Count > 0) // { // //1.得到需要判断的条件--检查输送机索引,总任务数量 // bool bok = false; // int iMaxCount = Convert.ToInt32(dvsp[0]["F_Remark"]); // 可以缓存最大托盘数量: 有物开关 + 出库任务数量 // int istation = Convert.ToInt32(dvsp[0]["F_BindingDevice"]); // 申请站台 // string ConevyorToCheck = dvsp[0]["F_FirstProject"].ToString();// 需要检查有货的输送线组 // int iMaxTask = Convert.ToInt32(dvsp[0]["F_TempFirstProject"]); // 最大出库任务数量 // string ifask = dvsp[0]["F_HaveFirstProject"].ToString();//是否申请开关 // if (ifask == "0") // { // return; // } // if (ls[i] != "12135" && ls[i] != "12141" && ls[i] != "12259") // { // sql.Clear(); // bok = CStaticClass.WcfControl.CheckEmptyOutOK(iMaxCount, istation, ConevyorToCheck, iMaxTask); // if (bok) // { // switch (ls[i]) // { // case "22202": // case "22203": // case "12242": // case "12246": // values = (ls[i] == "22202" || ls[i] == "22203") ? 22226 : 12118; // var dvbc = dbo.ExceSQL(string.Format($"select * from T_Monitor_Task where F_NumParam1='{values}' and F_Status='0'")).Tables[0].DefaultView; // if (dvbc.Count <= 0) // { // var dvbcsr = dbo.ExceSQL(string.Format($"select * from T_Manage_Task where FSTARTDEVICE='{values}' and FSTATUS=0 ")).Tables[0].DefaultView; // if (dvbcsr.Count <= 0) // { // var devinfo = CGetInfo.GetDeviceInfo(values); // if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 5) // { // if (devinfo.RunState == 5) // { // string errtexts = string.Empty; // CStaticClass.WcfControl.WriteDBData(values, "DB1", "0", out errtexts); // Thread.Sleep(1000); // CStaticClass.WcfControl.WriteDBData(values, "DB1", "2", out errtexts); // automaticTask(values, ls[i]); // } // } // } // } // break; // default: // break; // } // } // } // if (ls[i] == "12151") // { // #region // values = 12159; // sql.Clear(); // sql.Append("select * from T_Manage_Task where FENDDEVICE in(22230, 22233, 22237, 12151, 12149)"); // int task_count_fact = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count; // MDevice mDevice_12149 = CGetInfo.GetDeviceInfo(12149); // MDevice mDevice_12151 = CGetInfo.GetDeviceInfo(12151); // int task_count_need = 12;//终点是22230的任务4个,22233的任务2个,22237的任务2个,12149的任务1个,12151的任务4个,12149的缓存暂时没缓存上,先减少一个 // if (mDevice_12149.SplitByte_0 == 1 && mDevice_12149.RunState == 0) // { // task_count_fact += 1; // } // if (mDevice_12151.SplitByte_0 == 1 && mDevice_12151.RunState == 0) // { // task_count_fact += 1; // } // if (task_count_fact < task_count_need) // { // sql.Clear(); // sql.Append("select * from T_Manage_Task where FENDDEVICE = 12159"); // int task_count_12159 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count; // MDevice mDevice_22270 = CGetInfo.GetDeviceInfo(22270); // if (mDevice_22270.SplitByte_0 == 1 && mDevice_22270.RunState == 0) // { // task_count_12159 -= 1; // } // int task_count_tmp = task_count_fact + task_count_12159; // if (task_count_tmp < task_count_need)//所需要的空托盘数量和终点是12159的空托盘数量加一起也不够12个的话那就从库里出 // { // MDevice devinfo_12159 = CGetInfo.GetDeviceInfo(12159); // if (devinfo_12159.SplitByte_0 == 1 && devinfo_12159.RunState == 0)//12158有货空闲 // { // var dvbcs1 = dbo.ExceSQL(string.Format($"select * from T_Monitor_Task where F_NumParam1='{values}' and (F_Status=0 or F_Status=1)")).Tables[0].DefaultView; // if (dvbcs1.Count <= 0) // { // var dvbcsr = dbo.ExceSQL(string.Format($"select * from T_Manage_Task where FSTARTDEVICE='{values}' and FSTATUS=0 ")).Tables[0].DefaultView; // if (dvbcsr.Count <= 0) // { // automaticTask(values, ls[i]); // Thread.Sleep(1000); // } // } // } // else // { // int apptype = 2; // string warehouse = dvsp[0]["F_WareHouse"].ToString(); // string dtime = DateTime.Now.ToString("u"); // dtime.Remove(dtime.Length - 1, 1); // sql.Remove(0, sql.Length); // object[] ob = new object[9] { apptype, istation, "", 0, dtime, "", warehouse.ToString(), "", "1" };//CONTROL_APPLY_PARAMETER // dboM.ExecuteSql(string.Format("INSERT INTO IO_CONTROL_APPLY( CONTROL_APPLY_TYPE,DEVICE_CODE, STOCK_BARCODE, APPLY_TASK_STATUS, CREATE_TIME,CONTROL_APPLY_PARAMETER,WAREHOUSE_CODE,CONTROL_APPLY_PARA01,CONTROL_APPLY_PARA02)VALUES ({0},'{1}','{2}',{3},'{4}','{5}','{6}','{7}','{8}')", ob)); // CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "向管理系统申请空托盘出库任务:", ls[i].ToString(), ",站台:" + istation.ToString()); // dbo.ExecuteSql(string.Format("UPDATE T_Base_PLC_Ask SET F_Time='{1}' WHERE (F_DeviceIndex = {0}) ", ls[i], dtime)); // } // } // } // #endregion // } // if (ls[i] == "22230" || ls[i] == "22233" || ls[i] == "22237" || ls[i] == "12149") // { // if (ls[i] == "12149" || ls[i] == "22237") // { // values = 12151; // end_device = "12149, 22237"; // } // else // { // values = 12149; // end_device = "22230, 22233"; // } // MDevice mDevice_value = CGetInfo.GetDeviceInfo(values); // if (mDevice_value.SplitByte_0 == 1 && mDevice_value.RunState == 0) // { // sql.Clear(); // sql.AppendFormat("select FENDDEVICE, count(1) as cou from T_Manage_Task where FSTARTDEVICE = {0} and FENDDEVICE in({1}) group by FENDDEVICE order by cou", values, end_device); // DataView dataView = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView; // if (dataView.Count == 0) // { // CheckAutomaticTask(values, ls[i]); // } // else if (dataView.Count == 1) // { // string device_temp = Convert.ToString(dataView[0]["FENDDEVICE"]); // string device_end = ""; // if (device_temp == "12149") // { // device_end = "22237"; // } // else if (device_temp == "22237") // { // MDevice mDevice_12149 = CGetInfo.GetDeviceInfo(12149); // if (mDevice_12149.SplitByte_0 == 1 || mDevice_12149.RunState > 0) // { // int cou = Convert.ToInt32(dataView[0]["cou"]); // if (cou < 2) // { // CheckAutomaticTask(values, device_temp); // } // else // { // continue; // } // } // device_end = "12149"; // } // else if (device_temp == "22230") // { // device_end = "22233"; // } // else // { // device_end = "22230"; // } // CheckAutomaticTask(values, device_end); // } // else // { // int device_temp = Convert.ToInt32(dataView[0]["FENDDEVICE"]); // int cou = Convert.ToInt32(dataView[0]["cou"]); // if (device_temp == 22233 || device_temp == 22237) // { // if (cou < 2) // { // CheckAutomaticTask(values, device_temp.ToString()); // } // else // { // cou = Convert.ToInt32(dataView[1]["cou"]); // if (cou < 4) // { // device_temp = Convert.ToInt32(dataView[1]["FENDDEVICE"]); // CheckAutomaticTask(values, device_temp.ToString()); // } // } // } // else // { // if (cou < 4) // { // CheckAutomaticTask(values, device_temp.ToString()); // } // } // } // } // } // } // if (ls[i] == "12259" || ls[i] == "12239" || ls[i] == "12250") // { // var devinfo = CGetInfo.GetDeviceInfo(Convert.ToInt32(ls[i])); // if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 5) // { // if (devinfo.RunState == 5) // { // string errtexts = string.Empty; // CStaticClass.WcfControl.WriteDBData(Convert.ToInt32(ls[i]), "DB1", "0", out errtexts); // Thread.Sleep(1000); // CStaticClass.WcfControl.WriteDBData(Convert.ToInt32(ls[i]), "DB1", "2", out errtexts); // } // } // } // if (ls[i] == "22237" || ls[i] == "12127" || ls[i] == "12135")//ls[i] == "22237"|| // { // if (CommonClassLib.AppSettings.GetValue("EmptyPallets").Equals("1")) // { // var devinfo = CGetInfo.GetDeviceInfo(Convert.ToInt32(ls[i])); // if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 5) // { // string errtexts = string.Empty; // CStaticClass.WcfControl.WriteDBData(Convert.ToInt32(ls[i]), "DB1", "0", out errtexts); // Thread.Sleep(1000); // CStaticClass.WcfControl.WriteDBData(Convert.ToInt32(ls[i]), "DB1", "2", out errtexts); // } // } // } // } // #region 新增空托盘在12159工位申请回库 // var valuess = 12159; // Thread.Sleep(2000); // var dvbcs3 = dbo.ExceSQL(string.Format($"select * from T_Monitor_Task where F_NumParam1='22270' and F_NumParam4='{valuess}' and F_Status!=0 ")).Tables[0].DefaultView; // MDevice device = CGetInfo.GetDeviceInfo(12162); // if (dvbcs3.Count > 2 || (device.SplitByte_0 == 1 && device.RunState == 0)) // { // var dvbcs1 = dbo.ExceSQL(string.Format($"select * from T_Monitor_Task where F_NumParam1='{valuess}' and (F_Status=0 or F_Status=1)")).Tables[0].DefaultView; // if (dvbcs1.Count <= 0) // { // var dvbcsr = dbo.ExceSQL(string.Format($"select * from T_Manage_Task where FSTARTDEVICE='{valuess}' and FSTATUS=0 ")).Tables[0].DefaultView; // if (dvbcsr.Count <= 0) // { // var dvbc = dboM.ExceSQL(string.Format(" select * from IO_CONTROL where START_DEVICE_CODE='12159' and END_DEVICE_CODE='22245' and (CONTROL_STATUS = 0 or CONTROL_STATUS = 7 )")).Tables[0].DefaultView; // if (dvbc.Count <= 0) // { // var devinfo = CGetInfo.GetDeviceInfo(valuess); // if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 0) // { // string dtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // object[] ob = new object[9] { "3", valuess, "", 0, dtime, "", "1".ToString(), "", "1" }; // try // { // dboM.ExecuteSql(string.Format("INSERT INTO IO_CONTROL_APPLY( CONTROL_APPLY_TYPE,DEVICE_CODE, STOCK_BARCODE, APPLY_TASK_STATUS, CREATE_TIME,CONTROL_APPLY_PARAMETER,WAREHOUSE_CODE,CONTROL_APPLY_PARA01,CONTROL_APPLY_PARA02)VALUES ({0},'{1}','{2}',{3},'{4}','{5}','{6}','{7}','{8}')", ob)); // CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "向管理条码申请任务:", valuess.ToString(), $" 站台:{valuess} **条码:");//20140218 // Thread.Sleep(2000); // } // catch (Exception ex) // { // } // } // } // } // } // } // #endregion //} public void EmptyPalletNewTemp() { List ls = new List { "22202", "22203", "22233", "22230", "12242", "12246", "12141", "12259", "12239", "12250", "22237", "12149", "12151", "12135", "12127" }; StringBuilder sql = new StringBuilder(); for (int i = 0; i < ls.Count(); i++) { sql.Remove(0, sql.Length); sql.Append("SELECT F_WareHouse,F_ManageAskkind,F_DeviceIndex, F_Askkind, F_HaveFirstProject,F_BindingDevice,F_FirstProject,F_Remark,F_TempFirstProject FROM T_Base_PLC_Ask WHERE (F_DeviceIndex = ").Append(ls[i]).Append(")"); var dvsp = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView; int values = 0; string end_device = ""; if (dvsp.Count > 0) { //1.得到需要判断的条件--检查输送机索引,总任务数量 bool bok = false; int iMaxCount = Convert.ToInt32(dvsp[0]["F_Remark"]); // 可以缓存最大托盘数量: 有物开关 + 出库任务数量 int istation = Convert.ToInt32(dvsp[0]["F_BindingDevice"]); // 申请站台 string ConevyorToCheck = dvsp[0]["F_FirstProject"].ToString();// 需要检查有货的输送线组 int iMaxTask = Convert.ToInt32(dvsp[0]["F_TempFirstProject"]); // 最大出库任务数量 string ifask = dvsp[0]["F_HaveFirstProject"].ToString();//是否申请开关 if (ifask == "0") { return; } if (ls[i] != "12135" && ls[i] != "12141" && ls[i] != "12259") { sql.Clear(); bok = CStaticClass.WcfControl.CheckEmptyOutOK(iMaxCount, istation, ConevyorToCheck, iMaxTask); if (bok) { switch (ls[i]) { case "22202": case "22203": case "12242": //case "12246": values = (ls[i] == "22202" || ls[i] == "22203") ? 22226 : 12118; var dvbc = dbo.ExceSQL(string.Format($"select * from T_Monitor_Task where F_NumParam1='{values}' and F_Status='0'")).Tables[0].DefaultView; if (dvbc.Count <= 0) { var dvbcsr = dbo.ExceSQL(string.Format($"select * from T_Manage_Task where FSTARTDEVICE='{values}' and FSTATUS=0 ")).Tables[0].DefaultView; if (dvbcsr.Count <= 0) { var devinfo = CGetInfo.GetDeviceInfo(values); if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 5) { if (devinfo.RunState == 5) { string errtexts = string.Empty; CStaticClass.WcfControl.WriteDBData(values, "DB1", "0", out errtexts); Thread.Sleep(1000); CStaticClass.WcfControl.WriteDBData(values, "DB1", "2", out errtexts); automaticTask(values, ls[i]); } } } } break; default: break; } } } if (ls[i] == "12246") { values = 12118; sql.Clear(); sql.AppendFormat("select * from T_Manage_Task where FENDDEVICE = {0}", ls[i]); int count = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count; if (count < 3) { var dvbc = dbo.ExceSQL(string.Format($"select * from T_Monitor_Task where F_NumParam1='{values}' and F_Status='0'")).Tables[0].DefaultView; if (dvbc.Count <= 0) { var dvbcsr = dbo.ExceSQL(string.Format($"select * from T_Manage_Task where FSTARTDEVICE='{values}' and FSTATUS=0 ")).Tables[0].DefaultView; if (dvbcsr.Count <= 0) { var devinfo = CGetInfo.GetDeviceInfo(values); if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 5) { if (devinfo.RunState == 5) { string errtexts = string.Empty; CStaticClass.WcfControl.WriteDBData(values, "DB1", "0", out errtexts); Thread.Sleep(1000); CStaticClass.WcfControl.WriteDBData(values, "DB1", "2", out errtexts); automaticTask(values, ls[i]); } } } } } } if (ls[i] == "12151") { #region values = 12159; sql.Clear(); sql.Append("select * from T_Manage_Task where FENDDEVICE in(22230, 22233, 22237, 12151, 12149)"); int task_count_fact = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count; MDevice mDevice_12149 = CGetInfo.GetDeviceInfo(12149); MDevice mDevice_12151 = CGetInfo.GetDeviceInfo(12151); int task_count_need = 13;//终点是22230的任务4个,22233的任务2个,22237的任务2个,12149的任务1个,12151的任务4个,12149的缓存暂时没缓存上,先减少一个 if (mDevice_12149.SplitByte_0 == 1 && mDevice_12149.RunState == 0) { task_count_fact += 1; } if (mDevice_12151.SplitByte_0 == 1 && mDevice_12151.RunState == 0) { task_count_fact += 1; } if (task_count_fact < task_count_need) { sql.Clear(); sql.Append("select * from T_Manage_Task where FENDDEVICE = 12159"); int task_count_12159 = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView.Count; MDevice mDevice_22270 = CGetInfo.GetDeviceInfo(22270); if (mDevice_22270.SplitByte_0 == 1 && mDevice_22270.RunState == 0) { task_count_12159 -= 1; } int task_count_tmp = task_count_fact + task_count_12159; if (task_count_tmp < task_count_need)//所需要的空托盘数量和终点是12159的空托盘数量加一起也不够12个的话那就从库里出 { MDevice devinfo_12159 = CGetInfo.GetDeviceInfo(12159); if (devinfo_12159.SplitByte_0 == 1 && devinfo_12159.RunState == 0)//12158有货空闲 { var dvbcs1 = dbo.ExceSQL(string.Format($"select * from T_Monitor_Task where F_NumParam1='{values}' and (F_Status=0 or F_Status=1)")).Tables[0].DefaultView; if (dvbcs1.Count <= 0) { var dvbcsr = dbo.ExceSQL(string.Format($"select * from T_Manage_Task where FSTARTDEVICE='{values}' and FSTATUS=0 ")).Tables[0].DefaultView; if (dvbcsr.Count <= 0) { CheckAutomaticTask(values, ls[i]); Thread.Sleep(1000); } } } else { //if (task_count_tmp < 10) //{ // int apptype = 2; // string warehouse = dvsp[0]["F_WareHouse"].ToString(); // string dtime = DateTime.Now.ToString("u"); // dtime.Remove(dtime.Length - 1, 1); // sql.Remove(0, sql.Length); // object[] ob = new object[9] { apptype, istation, "", 0, dtime, "", warehouse.ToString(), "", "1" };//CONTROL_APPLY_PARAMETER // dboM.ExecuteSql(string.Format("INSERT INTO IO_CONTROL_APPLY( CONTROL_APPLY_TYPE,DEVICE_CODE, STOCK_BARCODE, APPLY_TASK_STATUS, CREATE_TIME,CONTROL_APPLY_PARAMETER,WAREHOUSE_CODE,CONTROL_APPLY_PARA01,CONTROL_APPLY_PARA02)VALUES ({0},'{1}','{2}',{3},'{4}','{5}','{6}','{7}','{8}')", ob)); // CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "向管理系统申请空托盘出库任务:", ls[i].ToString(), ",站台:" + istation.ToString()); // dbo.ExecuteSql(string.Format("UPDATE T_Base_PLC_Ask SET F_Time='{1}' WHERE (F_DeviceIndex = {0}) ", ls[i], dtime)); //} int tmpCount = 10; if (task_count_12159==0) { tmpCount = 12; } if (task_count_tmp < tmpCount) { int apptype = 2; string warehouse = dvsp[0]["F_WareHouse"].ToString(); string dtime = DateTime.Now.ToString("u"); dtime.Remove(dtime.Length - 1, 1); sql.Remove(0, sql.Length); var dvbc = dboM.ExceSQL(string.Format("SELECT DEVICE_CODE,STOCK_BARCODE FROM IO_CONTROL_APPLY WHERE APPLY_TASK_STATUS<2 and DEVICE_CODE='{0}' ", istation)).Tables[0].DefaultView; if (dvbc.Count <= 0) { DataView dataView = dboM.ExceSQL("select * from IO_CONTROL where END_DEVICE_CODE = '12151' and (CONTROL_STATUS = 0 or CONTROL_STATUS = 7)").Tables[0].DefaultView; if (dataView != null && dataView.Count == 0) { object[] ob = new object[9] { apptype, istation, "", 0, dtime, "", warehouse.ToString(), "", "1" };//CONTROL_APPLY_PARAMETER dboM.ExecuteSql(string.Format("INSERT INTO IO_CONTROL_APPLY( CONTROL_APPLY_TYPE,DEVICE_CODE, STOCK_BARCODE, APPLY_TASK_STATUS, CREATE_TIME,CONTROL_APPLY_PARAMETER,WAREHOUSE_CODE,CONTROL_APPLY_PARA01,CONTROL_APPLY_PARA02)VALUES ({0},'{1}','{2}',{3},'{4}','{5}','{6}','{7}','{8}')", ob)); CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "向管理系统申请空托盘出库任务:", ls[i].ToString(), ",站台:" + istation.ToString()); dbo.ExecuteSql(string.Format("UPDATE T_Base_PLC_Ask SET F_Time='{1}' WHERE (F_DeviceIndex = {0}) ", ls[i], dtime)); } } } } } } #endregion } if (ls[i] == "22230" || ls[i] == "22233" || ls[i] == "22237" || ls[i] == "12149") { if (ls[i] == "12149" || ls[i] == "22237") { values = 12151; end_device = "12149, 22237"; } else { values = 12149; end_device = "22230, 22233"; } MDevice mDevice_value = CGetInfo.GetDeviceInfo(values); if (mDevice_value.SplitByte_0 == 1 && mDevice_value.RunState == 0) { sql.Clear(); sql.AppendFormat("select FENDDEVICE, count(1) as cou from T_Manage_Task where FSTARTDEVICE = {0} and FENDDEVICE in({1}) group by FENDDEVICE order by cou", values, end_device); DataView dataView = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView; if (dataView.Count == 0) { CheckAutomaticTask(values, ls[i]); } else if (dataView.Count == 1) { string device_temp = Convert.ToString(dataView[0]["FENDDEVICE"]); string device_end = ""; if (device_temp == "12149") { device_end = "22237"; } else if (device_temp == "22237") { MDevice mDevice_12149 = CGetInfo.GetDeviceInfo(12149); if (mDevice_12149.SplitByte_0 == 1 || mDevice_12149.RunState > 0) { int cou = Convert.ToInt32(dataView[0]["cou"]); if (cou < 2) { CheckAutomaticTask(values, device_temp); } else { continue; } } else { device_end = "12149"; } } else if (device_temp == "22230") { device_end = "22233"; } else { device_end = "22230"; } CheckAutomaticTask(values, device_end); } else { int device_temp = Convert.ToInt32(dataView[0]["FENDDEVICE"]); int cou = Convert.ToInt32(dataView[0]["cou"]); if (device_temp == 22233 || device_temp == 22237) { if (cou < 2) { CheckAutomaticTask(values, device_temp.ToString()); } else { cou = Convert.ToInt32(dataView[1]["cou"]); if (cou < 4) { device_temp = Convert.ToInt32(dataView[1]["FENDDEVICE"]); CheckAutomaticTask(values, device_temp.ToString()); } } } else { if (cou < 4) { CheckAutomaticTask(values, device_temp.ToString()); } } } } } } if (ls[i] == "12259" || ls[i] == "12239" || ls[i] == "12250") { var devinfo = CGetInfo.GetDeviceInfo(Convert.ToInt32(ls[i])); if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 5) { if (devinfo.RunState == 5) { string errtexts = string.Empty; CStaticClass.WcfControl.WriteDBData(Convert.ToInt32(ls[i]), "DB1", "0", out errtexts); Thread.Sleep(1000); CStaticClass.WcfControl.WriteDBData(Convert.ToInt32(ls[i]), "DB1", "2", out errtexts); } } } if (ls[i] == "22237" || ls[i] == "12127" || ls[i] == "12135")//ls[i] == "22237"|| { if (CommonClassLib.AppSettings.GetValue("EmptyPallets").Equals("1")) { var devinfo = CGetInfo.GetDeviceInfo(Convert.ToInt32(ls[i])); if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 5) { string errtexts = string.Empty; CStaticClass.WcfControl.WriteDBData(Convert.ToInt32(ls[i]), "DB1", "0", out errtexts); Thread.Sleep(1000); CStaticClass.WcfControl.WriteDBData(Convert.ToInt32(ls[i]), "DB1", "2", out errtexts); } } } } #region 新增空托盘在12159工位申请回库 //var valuess = 12159; //Thread.Sleep(2000); //var dvbcs3 = dbo.ExceSQL(string.Format($"select * from T_Monitor_Task where F_NumParam1='22270' and F_NumParam4='{valuess}' and F_Status!=0 ")).Tables[0].DefaultView; //MDevice device = CGetInfo.GetDeviceInfo(12162); //if (dvbcs3.Count > 4 || (device.SplitByte_0 == 1 && device.RunState == 0)) //{ // var dvbcs1 = dbo.ExceSQL(string.Format($"select * from T_Monitor_Task where F_NumParam1='{valuess}' and (F_Status=0 or F_Status=1)")).Tables[0].DefaultView; // if (dvbcs1.Count <= 0) // { // var dvbcsr = dbo.ExceSQL(string.Format($"select * from T_Manage_Task where FSTARTDEVICE='{valuess}' and FSTATUS=0 ")).Tables[0].DefaultView; // if (dvbcsr.Count <= 0) // { // var dvbc = dboM.ExceSQL(string.Format(" select * from IO_CONTROL where START_DEVICE_CODE='12159' and END_DEVICE_CODE='22245' and (CONTROL_STATUS = 0 or CONTROL_STATUS = 7 )")).Tables[0].DefaultView; // if (dvbc.Count <= 0) // { // var devinfo = CGetInfo.GetDeviceInfo(valuess); // if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 0) // { // string dtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // object[] ob = new object[9] { "3", valuess, "", 0, dtime, "", "1".ToString(), "", "1" }; // try // { // dboM.ExecuteSql(string.Format("INSERT INTO IO_CONTROL_APPLY( CONTROL_APPLY_TYPE,DEVICE_CODE, STOCK_BARCODE, APPLY_TASK_STATUS, CREATE_TIME,CONTROL_APPLY_PARAMETER,WAREHOUSE_CODE,CONTROL_APPLY_PARA01,CONTROL_APPLY_PARA02)VALUES ({0},'{1}','{2}',{3},'{4}','{5}','{6}','{7}','{8}')", ob)); // dbo.ExecuteSql(string.Format("update T_Base_Device set F_HaveGoods = 0, F_DeviceNameGerman = '' where F_DeviceIndex = {0}", valuess)); // CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "向管理条码申请任务:", valuess.ToString(), $" 站台:{valuess} **条码:");//20140218 // } // catch (Exception ex) // { // } // } // } // } // } //} #endregion #region 新增空托盘在12159工位申请回库 var valuess = 12159; Thread.Sleep(2000); var dvbcs3 = dbo.ExceSQL(string.Format($"select * from T_Monitor_Task where F_NumParam1='22270' and F_NumParam4='{valuess}' and F_Status!=0 ")).Tables[0].DefaultView; //MDevice device = CGetInfo.GetDeviceInfo(12162); MDevice device12160 = CGetInfo.GetDeviceInfo(12160); int counts = 4; string sDivice = "12159,12160,12161,12162"; for (int i = 0; i < sDivice.Split(',').Length; i++) { MDevice device = CGetInfo.GetDeviceInfo(Convert.ToInt32( sDivice.Split(',')[i])); if (device.SplitByte_0==1&&device.RunState==0) { counts--; } } if ((dvbcs3.Count > 4 && (device12160.SplitByte_0 == 1 && device12160.RunState == 0))|| counts==0) { var dvbcs1 = dbo.ExceSQL(string.Format($"select * from T_Monitor_Task where F_NumParam1='{valuess}' and (F_Status=0 or F_Status=1)")).Tables[0].DefaultView; if (dvbcs1.Count <= 0) { var dvbcsr = dbo.ExceSQL(string.Format($"select * from T_Manage_Task where FSTARTDEVICE='{valuess}' and FSTATUS=0 ")).Tables[0].DefaultView; if (dvbcsr.Count <= 0) { var dvbc = dboM.ExceSQL(string.Format(" select * from IO_CONTROL where START_DEVICE_CODE='12159' and END_DEVICE_CODE='22245' and (CONTROL_STATUS = 0 or CONTROL_STATUS = 7 )")).Tables[0].DefaultView; if (dvbc.Count <= 0) { DataView dataView = dbo.ExceSQL(string.Format("select * from T_Base_Device where F_DeviceIndex = 12159")).Tables[0].DefaultView; if (dataView != null && dataView.Count > 0 && Convert.ToInt32(dataView[0]["F_HaveGoods"]) == 1) { var devinfo = CGetInfo.GetDeviceInfo(valuess); if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 0) { string dtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); object[] ob = new object[9] { "3", valuess, "", 0, dtime, "", "1".ToString(), "", "1" }; try { if (dboM.ExecuteSql(string.Format("INSERT INTO IO_CONTROL_APPLY( CONTROL_APPLY_TYPE,DEVICE_CODE, STOCK_BARCODE, APPLY_TASK_STATUS, CREATE_TIME,CONTROL_APPLY_PARAMETER,WAREHOUSE_CODE,CONTROL_APPLY_PARA01,CONTROL_APPLY_PARA02)VALUES ({0},'{1}','{2}',{3},'{4}','{5}','{6}','{7}','{8}')", ob)) > 0) { dbo.ExecuteSql(string.Format("update T_Base_Device set F_HaveGoods = 0, F_DeviceNameGerman = '' where F_DeviceIndex = {0}", valuess)); CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "向管理条码申请任务:", valuess.ToString(), $" 站台:{valuess} **条码:");//20140218 } } catch (Exception ex) { } } } } } } } #endregion } public void automaticTask(int stVal, string endVal) { try { DateTime dateTime = DateTime.Now; string sql = string.Format("select * from T_Base_Device where F_DeviceIndex = {0}", stVal); string plate_no = Convert.ToString(dbo.ExceSQL(sql).Tables[0].DefaultView[0]["F_DeviceNameGerman"]); if (string.IsNullOrWhiteSpace(plate_no)) { plate_no = DateTime.Now.ToString("yyyyMMddHHmmss"); } string dtime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"); CCommonFunction ccf = new CCommonFunction(); int AutoManageIdx = ccf.GetTempManageIdx(); //var dcode = 22226; //var iDevice = "22202"; //var dvbc = dbo.ExceSQL(string.Format("select fid from T_Manage_Task where FENDDEVICE = '{0}' and fstartdevice='{1}' AND FCONTROLTASKTYPE = 4 ", ls[i], "22226")).Tables[0].DefaultView; //if (dvbc.Count <= iMaxTask) //{ //插入临时调度任务T_Manage_Task(监控下的调度任务): string Sql = "insert into T_Manage_Task(FID,FPALLETBARCODE,FCONTROLTASKTYPE,F_ManageTaskKindIndex,FSTARTWAREHOUSE,FSTARTDEVICE,FSTARTCELL," + "FENDWAREHOUSE,FENDDEVICE,FENDCELL,FLANEWAY,FSTACK,FUseAwayFork,FBEGTIME) " + "values(" + AutoManageIdx + ",'" + plate_no + "','4',2,'1','" + stVal + "','-','1','" + endVal + "','-', '-' ,'','-','" + dtime + "')";//20101028 if (dbo.ExecuteSql(Sql) > 0) { Sql = string.Format("update T_Base_Device set F_HaveGoods = 0, F_DeviceNameGerman = '' where F_DeviceIndex = {0}", stVal); dbo.ExecuteSql(Sql); CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "生成自动任务成功", stVal.ToString(), $"生成{stVal}到{endVal} 任务成功!"); } } catch (Exception ex) { CommonClassLib.CCarryConvert.WriteDarkCasket("监控", "测试", "数据", "错误信息" + ex.Message); } } public void CheckAutomaticTask(int stVal, string endVal) { var dvbcs = dbo.ExceSQL(string.Format($"select * from T_Monitor_Task where F_NumParam1='{stVal}' and (F_Status=0 or F_Status=1)")).Tables[0].DefaultView; if (dvbcs.Count <= 0) { var dvbcsr = dbo.ExceSQL(string.Format($"select * from T_Manage_Task where FSTARTDEVICE='{stVal}' and FSTATUS=0 ")).Tables[0].DefaultView; if (dvbcsr.Count <= 0) { var dv = dbo.ExceSQL(string.Format("select * from T_Base_Device where F_DeviceIndex = {0}", stVal)).Tables[0].DefaultView; if (dv.Count > 0) { if (stVal == 12118 || stVal == 22226) { var devinfo = CGetInfo.GetDeviceInfo(stVal); if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 0) { if (devinfo.RunState == 0) { Thread.Sleep(1000); automaticTask(stVal, endVal); } } } else { CommonClassLib.CCarryConvert.WriteDarkCasket("监控", "测试", "数据", "设备号" + stVal + "是否有货" + Convert.ToInt32(dv[0]["F_HaveGoods"])); if (Convert.ToInt32(dv[0]["F_HaveGoods"]) == 1) { var devinfo = CGetInfo.GetDeviceInfo(stVal); if (devinfo.SplitByte_0 == 1 && devinfo.RunState == 0) { if (devinfo.RunState == 0) { Thread.Sleep(1000); automaticTask(stVal, endVal); } } } } } } } } //public void automaticTask(string sDeviceIndex) //{ // //string errtexts = string.Empty; // //CStaticClass.WcfControl.WriteDBData(22226, "DB1", "", out errtexts); // string dtime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"); // CCommonFunction ccf = new CCommonFunction(); // int AutoManageIdx = ccf.GetTempManageIdx(); // //var dcode = 22226; // //var iDevice = "22202"; // //var dvbc = dbo.ExceSQL(string.Format("select fid from T_Manage_Task where FENDDEVICE = '{0}' and fstartdevice='{1}' AND FCONTROLTASKTYPE = 4 ", ls[i], "22226")).Tables[0].DefaultView; // //if (dvbc.Count <= iMaxTask) // //{ // //插入临时调度任务T_Manage_Task(监控下的调度任务): // string Sql = "insert into T_Manage_Task(FID,FPALLETBARCODE,FCONTROLTASKTYPE,F_ManageTaskKindIndex,FSTARTWAREHOUSE,FSTARTDEVICE,FSTARTCELL," + // "FENDWAREHOUSE,FENDDEVICE,FENDCELL,FLANEWAY,FSTACK,FUseAwayFork,FBEGTIME) " + // "values(" + AutoManageIdx + ",'" + "PP" + 22226.ToString() + "','4',2,'1','" + 22226 + "','-','1','" // + sDeviceIndex + "','-', '-' ,'','-','" + dtime + "')";//20101028 // if (dbo.ExecuteSql(Sql) > 0) // { // CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "生成自动任务成功", 22226.ToString(), $"生成{22226}到{sDeviceIndex} 任务成功!"); // } //} /// /// 20200927 双鹿电池控制点灯定时器,从管理软件表读数据,写给PLC DB2 600-900 300byte 控制300个灯;1亮,0灭 /// /// /// private void timerLighting_Tick(object sender, EventArgs e) { timerLighting.Enabled = false; try //if (CStaticClass.Order == true) { string errtext = string.Empty; if (CStaticClass.WcfControl.DealwithLight(out errtext) == false) { if (tsStatus.Text.IndexOf(errtext) < 0) { tsStatus.Text += errtext; } } } catch (Exception ex) { if (tsStatus.Text.IndexOf(ex.Message) < 0) { tsStatus.Text += ex.Message; } } finally { timerLighting.Enabled = true; } } private void button2_Click(object sender, EventArgs e) { //GlobalModel.targetDevice = comboBox1.Text; label4.Text = comboBox1.Text; var result = dbo.ExecuteSql(string.Format("update WH_LANEWAY set LANEWAY_CODE = '{0}' where WAREHOUSE_CODE = '1'", label4.Text)); } } }