using System; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.ServiceModel; using System.Net; using CommonLib; using System.Speech.Synthesis; namespace wcfControlMonitorClient { public partial class FrmClient : Form, WcfControlMonitor.IControlMonitorCallback { //protected override CreateParams CreateParams //{ // get // { // CreateParams cp = base.CreateParams; // cp.ExStyle |= 0x02000000;//WS_CLIPCHILDREN 两个窗体叠加时,重叠部分不重绘 // return cp; // } //} int timersum = 0;//20150103增加断网恢复 Model.MDevice devinfo; FrmDeviceStatus _deviceStatus = new FrmDeviceStatus(); FrmWorkstationStatus _worstation = new FrmWorkstationStatus(); StringBuilder sql = new StringBuilder(); DBFactory.DBOperator dbo = CStaticClass.dbo; DBFactory.DBOperator dbo1 = new DBFactory.DBOperator(); //SpeechVoiceSpeakFlags SpFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync; //public SpVoice Voice = new SpVoice(); private static SpeechSynthesizer speak = new SpeechSynthesizer(); public Model.MDevice[] devlist; public int devsn = 0; private static FrmClient _formInstance; public static FrmClient FormInstance { get { if (_formInstance == null) { _formInstance = new FrmClient(); } return _formInstance; } set { _formInstance = value; } } public FrmClient() { CommonClassLib.CCarryConvert.WriteDarkCasket("Login", "操作日志", "FrmClient()", "", ""); InitializeComponent(); try { //初始化管理和调度交互状态 Model.CGetInfo.AddIOControlStatus(); Model.CGetInfo.AddDeviceKindInfo(); Model.CGetInfo.AddDeviceInfo(); Model.CGetInfo.AddDeviceErrors(); devlist = Model.CGetInfo.DeviceInfo.Values.ToArray(); DataView dv0 = dbo.ExceSQL("SELECT distinct F_S7Connection,F_DBWGetLength FROM T_Base_Device WHERE (F_DeviceKindIndex = 28)").Tables[0].DefaultView; if (dv0.Count > 0) { for (int i = 0; i < dv0.Count; i++) { if (CStaticClass.MutiS7ConnReturns.ContainsKey(dv0[i]["F_S7Connection"].ToString()) == false) { CStaticClass.MutiS7ConnReturns.Add(dv0[i]["F_S7Connection"].ToString(), new int[Convert.ToInt32(dv0[i]["F_DBWGetLength"])]); } } } CStaticClass.SystemName = CommonClassLib.AppSettings.GetValue("SystemName"); this.notifyIcon1.Text = CStaticClass.SystemName; this.Text = CStaticClass.SystemName; #region 客户端订阅初始化20120428 DataView dvx; DataView dv = dbo.ExceSQL("SELECT F_ReadSubscription, F_DeviceIndex, F_DBW2Address, F_DBWGetLength, F_S7Connection, F_SplitByte FROM T_Base_Device WHERE (F_ReadSubscription IS NOT NULL) AND (F_ReadSubscription =F_DeviceIndex) ORDER BY F_ReadSubscription").Tables[0].DefaultView; for (int i = 0; i < dv.Count; i++) { dvx = dbo.ExceSQL(string.Format("SELECT (MAX(F_DBW2Address) + F_DBWGetLength) AS maxdbw2 FROM T_Base_Device WHERE (F_ReadSubscription = '{0}') AND (F_DeviceKindIndex <> 33) GROUP BY F_DBWGetLength ORDER BY maxdbw2 DESC", dv[i]["F_ReadSubscription"])).Tables[0].DefaultView; if (dvx.Count > 0) { if (CStaticClass.MutiReadSubscriptionDeviceStateReturns.ContainsKey(dv[i]["F_ReadSubscription"].ToString()) == false) { CStaticClass.MutiReadSubscriptionDeviceStateReturns.Add(dv[i]["F_ReadSubscription"].ToString(), new int[Convert.ToInt32(dvx[0]["maxdbw2"]) - Convert.ToInt32(dv[i]["F_DBW2Address"])]); } } } dv = dbo.ExceSQL("SELECT F_ReadSubscription, F_DeviceIndex, F_DBW2Address, F_DBWGetLength, F_S7Connection, F_SplitByte FROM T_Base_Device WHERE (F_ReadSubscription IS NOT NULL) AND (F_DeviceKindIndex=33) ORDER BY F_ReadSubscription").Tables[0].DefaultView; for (int i = 0; i < dv.Count; i++) { if (CStaticClass.MutiReadSubscriptionDeviceSplitReturns.ContainsKey(dv[i]["F_ReadSubscription"].ToString()) == false) { CStaticClass.MutiReadSubscriptionDeviceSplitReturns.Add(dv[i]["F_ReadSubscription"].ToString(), new int[Convert.ToInt32(dv[i]["F_DBWGetLength"])]); } } CommonClassLib.CCarryConvert.WriteDarkCasket("Login", "操作日志", "FrmClient()-准备CreateSubscriptionGroup", "", ""); OPCClient.CCommonOPCClient.Hostname = CommonClassLib.AppSettings.GetValue("HostName"); OPCClient.CCommonOPCClient.ProgID = CommonClassLib.AppSettings.GetValue("OPCProgID"); OPCClient.CCommonOPCClient.CreateSubscriptionGroup(); CommonClassLib.CCarryConvert.WriteDarkCasket("Login", "操作日志", "FrmClient()-CreateSubscriptionGroup", "", ""); OPCClient.CCommonOPCClient.UpdateDB += new CUpdateDBEventHandler(CCommon_UpdateDB); if (OPCClient.CCommonOPCClient.OpcError != null) { MessageBox.Show(OPCClient.CCommonOPCClient.OpcError); } } catch (Exception ex) { CommonClassLib.CCarryConvert.WriteDarkCasket("Login", "操作日志", "FrmClient()-catch", ex.StackTrace, ex.Message); throw ex; } #endregion } /// /// 客户端事件响应20120428 /// /// /// void CCommon_UpdateDB(object sender, CUpdateDBChangeEventArgs e) { if (CStaticClass.WCFOK == true && !CStaticClass.client.IsDisposed) { string errtext = string.Empty; this.BeginInvoke(new MethodInvoker(delegate() { DealWithDeviceState(out errtext, e.Deviceindex, e.SplitbyteValue, e.Devicestates); })); } } /// /// 客户端事件响应处理函数20120428 /// /// /// /// /// /// bool DealWithDeviceState(out string errtext, int deviceindex, byte[] splitbyteValue, byte[] devicestates) {//deviceindex设备组代表的订阅,首先把设备组按照F_DBW2Address由小到大排序,拆分到具体每个设备 if ((devicestates == null))//(splitbyteValue == null) && {//20120420 errtext = OPCClient.CCommonOPCClient.OpcError; SendMessage(string.Format("tsStatus@FrmClient.DealWithDeviceState时,订阅组:{0}发生异常,{1}!", deviceindex, errtext)); return false; } errtext = string.Empty; DataView dv = new DataView(); DataView dvsp = new DataView(); DataView dvbc = new DataView(); //int devicebegin = 0; int DBW2Addressbegin = 0; string S7Connection = string.Empty; //int SplitByteLength = 0; try { //StringBuilder sql = new StringBuilder(string.Format("SELECT F_DeviceIndex, F_DBW2Address, F_DBWGetLength, F_SplitByte,F_S7Connection FROM T_Base_Device WHERE (F_DeviceKindIndex <>33) AND (F_ReadSubscription = '{0}') AND (F_DBW2Address IS NOT NULL) ORDER BY F_DBW2Address", deviceindex)); //dv = dbo1.ExceSQL(sql.ToString()).Tables[0].DefaultView; //if (dv.Count > 0) //{ // devicebegin = Convert.ToInt32(dv[0]["F_DeviceIndex"]); // DBW2Addressbegin = Convert.ToInt32(dv[0]["F_DBW2Address"]); // //SplitBytebegin = Convert.ToInt32(dv[0]["F_SplitByte"]); // S7Connection = dv[0]["F_S7Connection"].ToString(); // sql = new StringBuilder(string.Format("SELECT F_DeviceIndex, F_DBW2Address, F_DBWGetLength, F_SplitByte,F_S7Connection FROM T_Base_Device WHERE (F_DeviceKindIndex =33) AND (F_ReadSubscription = '{0}') ORDER BY F_DBW2Address", deviceindex)); // dvsp = dbo1.ExceSQL(sql.ToString()).Tables[0].DefaultView; // if (dvsp.Count > 0) // { // SplitByteLength = Convert.ToInt32(dvsp[0]["F_DBWGetLength"]); // } //} //else //{ // sql = new StringBuilder(string.Format("SELECT F_DeviceIndex, F_DBW2Address, F_DBWGetLength, F_SplitByte,F_S7Connection FROM T_Base_Device WHERE (F_DeviceIndex = '{0}') AND (F_DBW2Address IS NOT NULL) ORDER BY F_DBW2Address", deviceindex)); // dv = dbo1.ExceSQL(sql.ToString()).Tables[0].DefaultView; // if (dv.Count > 0) // { // devicebegin = Convert.ToInt32(dv[0]["F_DeviceIndex"]); // DBW2Addressbegin = Convert.ToInt32(dv[0]["F_DBW2Address"]); // //SplitBytebegin = Convert.ToInt32(dv[0]["F_SplitByte"]); // S7Connection = dv[0]["F_S7Connection"].ToString(); // sql = new StringBuilder(string.Format("SELECT F_DeviceIndex, F_DBW2Address, F_DBWGetLength, F_SplitByte,F_S7Connection FROM T_Base_Device WHERE (F_DeviceKindIndex =33) AND (F_ReadSubscription = '{0}') ORDER BY F_DBW2Address", deviceindex)); // dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView; // if (dv.Count > 0) // { // SplitByteLength = Convert.ToInt32(dv[0]["F_DBWGetLength"]); // } // } // else // {//20120420 // errtext = string.Format("FrmClient.DealWithDeviceState时,订阅组:{0}对应的设备索引不存在!", deviceindex); // SendMessage(string.Format("tsStatus@FrmClient.DealWithDeviceState时,订阅组:{0}对应的设备索引不存在!", deviceindex)); // return false; // } //} //int tempdb2addr = 0; StringBuilder sss = new StringBuilder(); StringBuilder barcode = new StringBuilder(); if (devicestates != null) { Array.Copy(devicestates, CStaticClass.MutiReadSubscriptionDeviceStateReturns[deviceindex.ToString()], devicestates.Length); //for (int di = 0; di < dv.Count; di++) //{ // int devidx = Convert.ToInt32(dv[di]["F_DeviceIndex"]); // devinfo = Model.CGetInfo.GetDeviceInfo(devidx); // int taskindex = 0; // int state = 0; // //以下代码重新开发CStaticClass.MutiS7ConnReturns改为按照F_ReadSubscription // if (devinfo.Dbw2Getlength > 3) // { // tempdb2addr = Convert.ToInt32(dv[di]["F_DBW2Address"]) - DBW2Addressbegin; // taskindex = (devicestates[tempdb2addr + 2] << 8) + devicestates[tempdb2addr + 3]; // if (devinfo.Dbw2Getlength > 1) // { // state = devicestates[tempdb2addr + 1]; // } // } // int devkind = devinfo.DeviceKind; // if (state >= 30) // { // devinfo.ErrorCode = state; // devinfo.RunState = 2; // } // else // {//0,1,2 // if (state == 2) // { // devinfo.RunState = 5; // } // else // { // devinfo.RunState = state; // } // devinfo.ErrorCode = state; // } // if (devkind == 13 && devinfo.UnControl != "1") // {//richard.liu20230718鸿安环穿0-1是心跳单独订阅;2是可下任务状态0:不可下命令,1:可下命令 // state = devicestates[tempdb2addr + 1] == 0 ? 1 : 0;//可下任务状态 // taskindex = (devicestates[tempdb2addr + 2] << 8) + devicestates[tempdb2addr + 3]; // } // devinfo.TaskNo = taskindex; // int sn = 4;//输送机光电开关位移 // if ((devinfo.DeviceKind == 1) || (devinfo.DeviceKind == 4) || (devinfo.DeviceKind == 14)) // { // devinfo.XCoor = devicestates[tempdb2addr + 7] + (devicestates[tempdb2addr + 6] << 8) + (devicestates[tempdb2addr + 5] << 16) + (devicestates[tempdb2addr + 4] << 32);//X坐标 // if (devinfo.DeviceKind == 1) // { // sn = 13;//堆垛机光电开关位移 // devinfo.YCoor = devicestates[tempdb2addr + 11] + (devicestates[tempdb2addr + 10] << 8) + (devicestates[tempdb2addr + 9] << 16) + (devicestates[tempdb2addr + 8] << 32);//Y坐标 // devinfo.ZCoor = devicestates[tempdb2addr + 12];//Z相对坐标(1或2\3) // } // else // { // sn = 8;//直穿和环穿光电开关位移 // } // } // //设备开关状态 // if (devinfo.Dbw2Getlength >= 3) // { // devinfo.SplitByte_0 = (devicestates[tempdb2addr + sn] & 1) == 1 ? 1 : 0; // devinfo.SplitByte_1 = (devicestates[tempdb2addr + sn] & 2) == 2 ? 1 : 0; // devinfo.SplitByte_2 = (devicestates[tempdb2addr + sn] & 4) == 4 ? 1 : 0; // devinfo.SplitByte_3 = (devicestates[tempdb2addr + sn] & 8) == 8 ? 1 : 0; // devinfo.SplitByte_4 = (devicestates[tempdb2addr + sn] & 16) == 16 ? 1 : 0; // devinfo.SplitByte_5 = (devicestates[tempdb2addr + sn] & 32) == 32 ? 1 : 0; // devinfo.SplitByte_6 = (devicestates[tempdb2addr + sn] & 64) == 64 ? 1 : 0; // devinfo.SplitByte_7 = (devicestates[tempdb2addr + sn] & 128) == 128 ? 1 : 0; // } // Model.CGetInfo.SetDeviceInfo(devinfo); //} int devidx =deviceindex; devinfo = Model.CGetInfo.GetDeviceInfo(devidx); int taskindex = 0; int state = 0; //以下代码重新开发CStaticClass.MutiS7ConnReturns改为按照F_ReadSubscription if (devinfo.Dbw2Getlength > 3) { //tempdb2addr = Convert.ToInt32(dv[di]["F_DBW2Address"]) - DBW2Addressbegin; taskindex = (devicestates[ 2] << 8) + devicestates[ 3]; if (devinfo.Dbw2Getlength > 1) { state = devicestates[ 1]; } } if (devinfo.Dbw2Getlength == 1) { state = devicestates[0]; } int devkind = devinfo.DeviceKind; if (state >= 30) { devinfo.ErrorCode = state; devinfo.RunState = 2; } else {//0,1,2 if (state == 2) { devinfo.RunState = 5; } else { devinfo.RunState = state; } devinfo.ErrorCode = state; } if (devkind == 13 && devinfo.UnControl != "1") {//richard.liu20230718鸿安环穿0-1是心跳单独订阅;2是可下任务状态0:不可下命令,1:可下命令 state = devicestates[1] == 0 ? 1 : 0;//可下任务状态 taskindex = (devicestates[ 2] << 8) + devicestates[ 3]; } devinfo.TaskNo = taskindex; int sn = 4;//输送机光电开关位移 if ((devinfo.DeviceKind == 1) || (devinfo.DeviceKind == 4) || (devinfo.DeviceKind == 14)) { devinfo.XCoor = devicestates[ 7] + (devicestates[ 6] << 8) + (devicestates[5] << 16) + (devicestates[4] << 32);//X坐标 if (devinfo.DeviceKind == 1) { sn = 13;//堆垛机光电开关位移 devinfo.YCoor = devicestates[11] + (devicestates[10] << 8) + (devicestates[9] << 16) + (devicestates[8] << 32);//Y坐标 devinfo.ZCoor = devicestates[12];//Z相对坐标(1或2\3) } else { sn = 8;//直穿和环穿光电开关位移 } } if (devinfo.DeviceKind == 5) { sn = 2; } //设备开关状态 if (devinfo.Dbw2Getlength >= 3) { devinfo.SplitByte_0 = (devicestates[sn] & 1) == 1 ? 1 : 0; devinfo.SplitByte_1 = (devicestates[sn] & 2) == 2 ? 1 : 0; devinfo.SplitByte_2 = (devicestates[sn] & 4) == 4 ? 1 : 0; devinfo.SplitByte_3 = (devicestates[sn] & 8) == 8 ? 1 : 0; devinfo.SplitByte_4 = (devicestates[sn] & 16) == 16 ? 1 : 0; devinfo.SplitByte_5 = (devicestates[sn] & 32) == 32 ? 1 : 0; devinfo.SplitByte_6 = (devicestates[sn] & 64) == 64 ? 1 : 0; devinfo.SplitByte_7 = (devicestates[sn] & 128) == 128 ? 1 : 0; } Model.CGetInfo.SetDeviceInfo(devinfo); } return true; } catch (Exception ex) { SendMessage(string.Format("tsStatus@FrmClient.DealWithDeviceState时{0}", ex.StackTrace + ex.Message)); errtext = string.Format("tsStatus@FrmClient.DealWithDeviceState时{0}", ex.StackTrace + ex.Message); return false; } finally { dv.Dispose(); dvbc.Dispose(); dvsp.Dispose(); } } #region wcf回调 public void SendDeviceInfo(Model.MDevice devinfo) { try { if (CStaticClass.WCFOK == false) return; if (this.IsDisposed) return; Model.CGetInfo.SetDeviceInfo(devinfo); } catch (Exception ex) { throw ex; } } public IAsyncResult BeginSendDeviceInfo(Model.MDevice devinfo, AsyncCallback acb, object state) { return state as IAsyncResult; } public void EndSendDeviceInfo(IAsyncResult ar) { } public IAsyncResult BeginSendMessage(string message, AsyncCallback acb, object state) { return state as IAsyncResult; } public void EndSendMessage(IAsyncResult ar) { } public void SendMessage(string message) { char[] cc = new char[1] { '@' }; string[] strsplit = message.Split(cc); if (strsplit.GetLength(0) > 1) {//更新指定控件 if (strsplit[0] == "tsStatus") { tsStatus.Text = strsplit[1]; } else if (strsplit[0] == "notifyIcon1") { this.BeginInvoke(new MethodInvoker(delegate() { notifyIcon1.BalloonTipText = strsplit[1]; notifyIcon1.ShowBalloonTip(10000, "警告:", strsplit[1],ToolTipIcon.Warning); })); } } //else //{//刷新数据显示 // this.dgvManager.BeginInvoke(new MethodInvoker(delegate() // { // sql.Remove(0, sql.Length); // sql.Append("select * from V_Manage_Task where ").Append(CStaticClass.Manstatus); // this.dgvManager.DataSource = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView; // })); // this.dgvMonitor.BeginInvoke(new MethodInvoker(delegate() // { // sql.Remove(0, sql.Length); // sql.Append("select * from V_Monitor_Task where ").Append(CStaticClass.Monstatus).Append(" order by 设备指令索引 asc "); // this.dgvMonitor.DataSource = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView; // })); //} } //20140824richard public void SendOrderMessage(Model.MonitorInfo mi) { this.BeginInvoke(new MethodInvoker(delegate() { try { if (CStaticClass.UserID.ToUpper() == "SA") { CStaticClass.Order = mi.Orderturnon; CStaticClass.ObtainManageTask = mi.Obtaintask; if (CStaticClass.Order == true) { ClickOrderTurnOn(); } else { ClickOrderTurnOff(); } if (CStaticClass.ObtainManageTask == true) { ClickObtainTask(); } else { ClickStopObtainTask(); } } } catch (Exception ex) { if (tsStatus.Text.IndexOf("接收【获取任务和命令开关】广播时:" + ex.Message) < 0) { tsStatus.ForeColor = Color.Red; this.tsStatus.Text += "接收【获取任务和命令开关】广播时:" + ex.Message; } } })); } public IAsyncResult BeginSendOrderMessage(Model.MonitorInfo mi, AsyncCallback callBack, object state) { return state as IAsyncResult; } public void EndSendOrderMessage(IAsyncResult ar) { } //20140824richard #endregion private void Client_FormClosing(object sender, FormClosingEventArgs e) { if (MessageBox.Show("您确认要关闭"+CStaticClass.SystemName+"吗?", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Warning) != DialogResult.OK) { e.Cancel = true; return; } ClientLogout(); OPCClient.CCommonOPCClient.DisConnectOPCServer();//20120428 CommonClassLib.AppSettings.dbo.Close();//richard20181022 CommonClassLib.AppSettings.dboM.Close();//richard20181022 FrmLogin.FormInstance.Close(); } void LogCallBack(IAsyncResult ar) { try { string strErr = string.Empty; if (CStaticClass.WcfControl.EndLogoutClient(out strErr, ar) == true) { //if (ar.AsyncState.ToString() == "RegisterClientCallBack") //{ // CStaticClass.WcfControl.BeginRegisterClient(CStaticClass.UserID, "客户端:" + CStaticClass.ClientID + ",用户名:" + CStaticClass.UserID, new AsyncCallback(RegisterClientCallBack), null); // return; //} } CStaticClass.WCFOK = false; } catch (Exception ex) { MessageBox.Show(ex.Message, "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } } public void ClientLogout() { try { string errtext = string.Empty; CStaticClass.WcfControl.BeginLogoutClient("客户端:" + CStaticClass.ClientID + ",用户名:" + CStaticClass.UserID,new AsyncCallback(LogCallBack),"" ); } catch (Exception ex) { MessageBox.Show(ex.Message, "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void toolStripMenuItem1_Click(object sender, EventArgs e) { FrmHandCommand.FormInstance.Show(); } private void toolStripMenuItem2_Click(object sender, EventArgs e) { FrmHandAssociateCommand.FormInstance.Show(); } private void MIManageShow_Click(object sender, EventArgs e) { FrmAutoCommand.FormInstance.Show(); } private void MIAltMonitor_Click(object sender, EventArgs e) { FrmModifyMonitor.FormInstance.Show(); } private void MIAltManange_Click(object sender, EventArgs e) { FrmModifyManage.FormInstance.Show(); } private void notifyIcon1_BalloonTipShown(object sender, EventArgs e) { try { speak.Volume = 100;//设置音量 speak.Rate = 0;//设置语速 speak.SetOutputToDefaultAudioDevice(); speak.SpeakAsync(notifyIcon1.BalloonTipText);//播放内容 //Voice.Speak(notifyIcon1.BalloonTipText, SpFlags); } catch { } } private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e) { if (CStaticClass.WCFOK == true) { this.TopMost = true; this.Visible = true; this.TopMost = false; this.WindowState = FormWindowState.Maximized; } } private void tsStatus_TextChanged(object sender, EventArgs e) { } private void TSMrefresh_Click(object sender, EventArgs e) { sql.Remove(0, sql.Length); sql.Append("select * from V_Manage_Task where ").Append(CStaticClass.Manstatus); //this.dgvManager.DataSource = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView; } private void TSMMonitorRefresh_Click(object sender, EventArgs e) { sql.Remove(0, sql.Length); sql.Append("select * from V_Monitor_Task where ").Append(CStaticClass.Monstatus).Append(" order by 设备指令索引 asc "); //this.dgvMonitor.DataSource = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView; } private void rbmanAll_CheckedChanged(object sender, EventArgs e) { RadioButton rb = (RadioButton)sender; if (rb.Checked == true) { CStaticClass.Manstatus = " F_Status>=-1 "; } TSMrefresh_Click(sender, e); } private void rbmanRun_CheckedChanged(object sender, EventArgs e) { RadioButton rb = (RadioButton)sender; if (rb.Checked == true) { CStaticClass.Manstatus = " F_Status=1 "; } TSMrefresh_Click(sender, e); } private void rbmanWait_CheckedChanged(object sender, EventArgs e) { RadioButton rb = (RadioButton)sender; if (rb.Checked == true) { CStaticClass.Manstatus = " F_Status=0 "; } TSMrefresh_Click(sender, e); } //private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) //{ // try // { // string df = ""; // switch (this.comboBox1.Text) // { // case "条码": // df = "条码"; // break; // case "调度任务索引": // df = "调度任务索引"; // break; // case "设备指令索引": // df = "设备指令索引"; // break; // default: // return; // } // //20100208 // sql.Remove(0, sql.Length); // sql.Append("select distinct " + df + " from V_Monitor_Task "); // DataView dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView; // if (dv.Count > 0) // { // this.textBox1.DataSource = null; // this.textBox1.DisplayMember = df; // this.textBox1.ValueMember = df; // this.textBox1.DataSource = dv; // } // } // catch (Exception ex) // { // MessageBox.Show(ex.Message); // } //} //private void button1_Click(object sender, EventArgs e) //{ // try // { // if (this.textBox1.Text.Trim().Length == 0) return; // if (this.comboBox1.Text == "条码") // { // CStaticClass.Monstatus = " 条码='" + this.textBox1.Text.Trim() + "' "; // } // if (this.comboBox1.Text == "调度任务索引") // { // CStaticClass.Monstatus = " 调度任务索引='" + this.textBox1.Text.Trim() + "' "; // } // if (this.comboBox1.Text == "设备指令索引") // { // CStaticClass.Monstatus = " 设备指令索引='" + this.textBox1.Text.Trim() + "' "; // } // TSMMonitorRefresh_Click(sender, e); // } // catch (Exception ex) // { // MessageBox.Show(ex.Message); // } //} private void button2_Click(object sender, EventArgs e) { CStaticClass.Monstatus = " F_Status>=-1 "; TSMMonitorRefresh_Click(sender, e); } public void MonitorRefresh() {//20110222 sql.Remove(0, sql.Length); sql.Append("select * from V_Monitor_Task where ").Append(CStaticClass.Monstatus).Append(" order by 设备指令索引 asc "); //this.dgvMonitor.DataSource = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView; } public void ManagerRefresh() {//20110222 sql.Remove(0, sql.Length); sql.Append("select * from V_Manage_Task where ").Append(CStaticClass.Manstatus); //this.dgvManager.DataSource = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView; } private void Btn_MouseEnter_Stop(object sender, EventArgs e) { string deviceindex = (sender as Control).Tag.ToString(); devinfo = Model.CGetInfo.GetDeviceInfo(Convert.ToInt32(deviceindex)); if (devinfo != null) { if (devinfo.SplitByte_6 == 1)//未停车 { deviceindex = string.Format("{0}-未联机停车", devinfo.DeviceIndex); } if (devinfo.SplitByte_6 == 0)//停车 { deviceindex = string.Format("{0}-联机停车", devinfo.DeviceIndex); } } toolTip1.SetToolTip(sender as Control, deviceindex); } void BuildHandTaskCallBack(IAsyncResult ar) { string errtext = string.Empty; if (CStaticClass.WcfControl.EndBuildHandTask(out errtext, ar) == false) { //MessageBox.Show(errtext, "操作提示:", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void Client_Load(object sender, EventArgs e) { try { //for (int i = 0; i <= 1000; i++) //{ // Model.HandTask ht = new Model.HandTask(11001, 1, 0, "0", "00-00-00", "-", 0, 0); // CStaticClass.WcfControl.BeginBuildHandTask(ht, new AsyncCallback(BuildHandTaskCallBack), ht); //} #region 添加输送机、穿梭车和堆垛机的单击事件 foreach (Control ctrl in this.plAccessorial1.Controls) { if (ctrl.GetType().ToString() == "System.Windows.Forms.Button") { ctrl.Click += new EventHandler(ctrl_Click); toolTip1.SetToolTip(ctrl, ctrl.Tag.ToString()); } if ((ctrl.GetType().ToString() == "System.Windows.Forms.PictureBox") && (ctrl.Enabled == true)) { if (ctrl.Name.ToString().Contains("stop")) { ctrl.Click += new EventHandler(ctrl_ClickPicStop); ctrl.MouseEnter += new EventHandler(Btn_MouseEnter_Stop); } else { ctrl.Click += new EventHandler(ctrl_ClickPic); } toolTip1.SetToolTip(ctrl, ctrl.Tag.ToString()); } } foreach (Control ctrl in this.plAccessorial2.Controls) { if (ctrl.GetType().ToString() == "System.Windows.Forms.Button") { ctrl.Click += new EventHandler(ctrl_Click); toolTip1.SetToolTip(ctrl, ctrl.Tag.ToString()); } if ((ctrl.GetType().ToString() == "System.Windows.Forms.PictureBox") && (ctrl.Enabled == true)) { if (ctrl.Name.ToString().Contains("stop")) { ctrl.Click += new EventHandler(ctrl_ClickPicStop); ctrl.MouseEnter += new EventHandler(Btn_MouseEnter_Stop); } else { ctrl.Click += new EventHandler(ctrl_ClickPic); } toolTip1.SetToolTip(ctrl, ctrl.Tag.ToString()); } } foreach (Control ctrl in this.plAccessorial3.Controls) { if (ctrl.GetType().ToString() == "System.Windows.Forms.Button") { ctrl.Click += new EventHandler(ctrl_Click); toolTip1.SetToolTip(ctrl, ctrl.Tag.ToString()); } if ((ctrl.GetType().ToString() == "System.Windows.Forms.PictureBox") && (ctrl.Enabled == true)) { if (ctrl.Name.ToString().Contains("stop")) { ctrl.Click += new EventHandler(ctrl_ClickPicStop); ctrl.MouseEnter += new EventHandler(Btn_MouseEnter_Stop); } else { ctrl.Click += new EventHandler(ctrl_ClickPic); } toolTip1.SetToolTip(ctrl, ctrl.Tag.ToString()); } } //foreach (Control ctrl in this.plAccessorial4.Controls) //{ // if (ctrl.GetType().ToString() == "System.Windows.Forms.Button") // { // ctrl.Click += new EventHandler(ctrl_Click); // } // if ((ctrl.GetType().ToString() == "System.Windows.Forms.PictureBox") && (ctrl.Enabled == true)) // { // if (ctrl.Name.ToString().Contains("stop")) // { // ctrl.Click += new EventHandler(ctrl_ClickPicStop); // } // else // { // ctrl.Click += new EventHandler(ctrl_ClickPic); // } // } //} //foreach (Control ctrl in this.plAccessorial5.Controls) //{ // if (ctrl.GetType().ToString() == "System.Windows.Forms.Button") // { // ctrl.Click += new EventHandler(ctrl_Click); // } // if ((ctrl.GetType().ToString() == "System.Windows.Forms.PictureBox") && (ctrl.Enabled == true)) // { // if (ctrl.Name.ToString().Contains("stop")) // { // ctrl.Click += new EventHandler(ctrl_ClickPicStop); // } // else // { // ctrl.Click += new EventHandler(ctrl_ClickPic); // } // } //} //foreach (Control ctrl in this.plAccessorial6.Controls) //{ // if (ctrl.GetType().ToString() == "System.Windows.Forms.Button") // { // ctrl.Click += new EventHandler(ctrl_Click); // } // if ((ctrl.GetType().ToString() == "System.Windows.Forms.PictureBox") && (ctrl.Enabled == true)) // { // if (ctrl.Name.ToString().Contains("stop")) // { // ctrl.Click += new EventHandler(ctrl_ClickPicStop); // } // else // { // ctrl.Click += new EventHandler(ctrl_ClickPic); // } // } //} //foreach (Control ctrl in this.plAccessorial7.Controls) //{ // if (ctrl.GetType().ToString() == "System.Windows.Forms.Button") // { // ctrl.Click += new EventHandler(ctrl_Click); // } // if ((ctrl.GetType().ToString() == "System.Windows.Forms.PictureBox") && (ctrl.Enabled == true)) // { // if (ctrl.Name.ToString().Contains("stop")) // { // ctrl.Click += new EventHandler(ctrl_ClickPicStop); // } // else // { // ctrl.Click += new EventHandler(ctrl_ClickPic); // } // } //} #endregion TSMrefresh_Click(sender, e); TSMMonitorRefresh_Click(sender, e); if (CStaticClass.UserID.ToUpper() == "SA") { this.MMmasterAdmin.Visible = true; } else { this.MMmasterAdmin.Visible = false; } } catch (Exception ex) { throw (ex); } } private void MIDeviceState_Click(object sender, EventArgs e) { FrmDeviceInfoEdit.FormInstance.Show(); } private void MIRouteInfo_Click(object sender, EventArgs e) { FrmRouteEdit.FormInstance.Show(); } private void MIWaitTime_Click(object sender, EventArgs e) { FrmWaitTime.FormInstance.Show(); } private void MIMonitorConnectInfo_Click(object sender, EventArgs e) { FrmConnectDB.FormInstance.ConnectType = "Monitor"; FrmConnectDB.FormInstance.Show(); } private void MIIOStation_Click(object sender, EventArgs e) { FrmIOStation.FormInstance.Show(); } private void timer1_Tick(object sender, EventArgs e) { try { //for (int i = 0; i < 100; i++) //{ // OPCClient.CCommonOPCClient.DisConnectOPCServer(); // OPCClient.CCommonOPCClient.CreateSubscriptionGroup(); //} if (CStaticClass.WcfControl != null) { if (CStaticClass.WcfControl.State == CommunicationState.Faulted) { CStaticClass.WCFOK = false; ReConnectAndRegisterClient();//20160115添加断线重连功能 } else { CStaticClass.WcfControl.BeginHeartbeat(new AsyncCallback(CallBackHeartbeat), null); //if (OPCClient.CCommonOPCClient.dtt != null) //{ // if (OPCClient.CCommonOPCClient.dtt.AddMinutes(2) < DateTime.Now) // { // OPCClient.CCommonOPCClient.DisConnectOPCServer(); // OPCClient.CCommonOPCClient.CreateSubscriptionGroup(); // } //} } } } catch (Exception ex) { ReConnectAndRegisterClient();//20160115添加断线重连功能 } if (CStaticClass.WCFOK == false) return; try { CStaticClass.WcfControl.BeginHeartbeat(new AsyncCallback(CallBackHeartbeat), null); } catch (Exception ex) { if (tsStatus.Text.IndexOf("BeginHeartbeat时:" + ex.Message) < 0) { tsStatus.ForeColor = Color.Red; this.tsStatus.Text += "BeginHeartbeat时:" + DateTime.Now.ToString("u") + ex.Message; } ReRegisterClient(); } } void ReConnectAndRegisterClient() { try { CStaticClass.ClientID = Dns.GetHostName(); var ctx = new InstanceContext(CStaticClass.client); CStaticClass.WcfControl = new WcfControlMonitor.ControlMonitorClient(ctx); string errtext = string.Empty; CommonClassLib.CCarryConvert.WriteDarkCasket("Login", "UserID:" + CStaticClass.UserID + "的操作日志", "尝试重新连接", "", ""); CStaticClass.WcfControl.BeginRegisterClient(CStaticClass.UserID, "客户端:" + CStaticClass.ClientID + ",用户名:" + CStaticClass.UserID, new AsyncCallback(ReConnectAndRegisterClientCallBack), null); } catch (Exception ex) { throw ex; } } void ReConnectAndRegisterClientCallBack(IAsyncResult ar) { try { string ErrText = string.Empty; if (false == CStaticClass.WcfControl.EndRegisterClient(out ErrText, ar)) { //MessageBox.Show(ErrText, "登陆错误", MessageBoxButtons.OK, MessageBoxIcon.Error); CStaticClass.WCFOK = false; return; } CommonClassLib.CCarryConvert.WriteDarkCasket("Login", "UserID:" + CStaticClass.UserID + "的操作日志", "重连**成功登录系统", "", ""); tsStatus.Text = ""; //CStaticClass.WcfControl.BeginSendAllDeviceStates(CStaticClass.client.devlist[0].DeviceIndex, new AsyncCallback(CStaticClass.client.SendAllDeviceStatesCallback), null); CStaticClass.WCFOK = true; //OPCClient.CCommonOPCClient.kkk(); //OPCClient.CCommonOPCClient.CreateSubscriptionGroup(); } catch (Exception ex) { //MessageBox.Show(ex.Message, "登陆错误", MessageBoxButtons.OK, MessageBoxIcon.Error); CStaticClass.WCFOK = false; return; } //try //{ // string ErrText = string.Empty; // if (false == CStaticClass.WcfControl.EndRegisterClient(out ErrText, ar)) // { // //MessageBox.Show(ErrText, "登陆错误", MessageBoxButtons.OK, MessageBoxIcon.Error); // //CStaticClass.WCFOK = false; // return; // } // OPCClient.CCommonOPCClient.DisConnectOPCServer(); // OPCClient.CCommonOPCClient.UpdateDB += new CUpdateDBEventHandler(CCommon_UpdateDB); // OPCClient.CCommonOPCClient.CreateSubscriptionGroup(); // CommonClassLib.CCarryConvert.WriteDarkCasket("Login", "UserID:" + CStaticClass.UserID + "的操作日志", "重连**成功登录系统", "", ""); // //CStaticClass.WcfControl.BeginSendAllDeviceStates(CStaticClass.client.devlist[0].DeviceIndex, new AsyncCallback(CStaticClass.client.SendAllDeviceStatesCallback), null); // CStaticClass.WCFOK = true; //} //catch (Exception ex) //{ // //MessageBox.Show(ex.Message, "登陆错误", MessageBoxButtons.OK, MessageBoxIcon.Error); // CStaticClass.WCFOK = false; // return; //} } public void SendAllDeviceStatesCallback(IAsyncResult ar) { try { Model.MDevice dev; dev = CStaticClass.WcfControl.EndSendAllDeviceStates(ar); if (dev != null) { Model.CGetInfo.SetDeviceInfo(dev); } devsn++; if (devsn < devlist.Count()) { CStaticClass.WcfControl.BeginSendAllDeviceStates(devlist[devsn].DeviceIndex, new AsyncCallback(SendAllDeviceStatesCallback), null); } else { //devsn=0; //CStaticClass.WcfControl.BeginSendAllDeviceStates(devlist[devsn].DeviceIndex, new AsyncCallback(SendAllDeviceStatesCallback), null); } } catch (Exception ex) { this.BeginInvoke(new MethodInvoker(delegate() { if (tsStatus.Text.IndexOf("SendAllDeviceStatesCallback时:" + ex.Message) < 0) { tsStatus.ForeColor = Color.Red; this.tsStatus.Text += "SendAllDeviceStatesCallback时:" + ex.Message; } })); ReRegisterClient(); } } private void MITransportTimeout_Click(object sender, EventArgs e) { FrmTransportTimeout.FormInstance.Show(); } 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 MIUserInfoManage_Click(object sender, EventArgs e) { FrmUsers.FormInstance.Show(); } private void MIAltPassword_Click(object sender, EventArgs e) { FrmPassword.FormInstance.Show(); } private void MMExitSystem_Click(object sender, EventArgs e) { this.Close(); } private void toolStripMenuItem10_Click(object sender, EventArgs e) { this.Visible = false; } private void toolStripMenuItem8_Click(object sender, EventArgs e) { this.Visible = true; this.WindowState = FormWindowState.Maximized; } private void toolStripMenuItem9_Click(object sender, EventArgs e) { this.Close(); } private void tabPage1_Paint(object sender, PaintEventArgs e) { Graphics g = e.Graphics; g.TranslateTransform(this.tabPage1.AutoScrollPosition.X, this.tabPage1.AutoScrollPosition.Y); g.Dispose(); } private void ctrl_Click(object sender, EventArgs e) { Button btn = (Button)sender; _deviceStatus.DeviceIndex = Convert.ToInt32(btn.Tag); _deviceStatus.ShowDialog(); } private void ctrl_ClickTxt(object sender, EventArgs e) { TextBox txt = (TextBox)sender; _worstation.DeviceIndex = Convert.ToInt32(txt.Tag); _worstation.ShowDialog(); } private void ctrl_ClickPic(object sender, EventArgs e) { PictureBox btn = (PictureBox)sender; _deviceStatus.DeviceIndex = Convert.ToInt32(btn.Tag); _deviceStatus.ShowDialog(); } private void ctrl_ClickPicStop(object sender, EventArgs e) { PictureBox btn = (PictureBox)sender; int DeviceIndexForRunButton = Convert.ToInt32(btn.Tag); Model.MDevice deviceRun = Model.CGetInfo.GetDeviceInfo(DeviceIndexForRunButton); int iValue = 0; iValue = (deviceRun.SplitByte_6 == 1) ? 0 : 1; //if (iValue == 0) //{ // if (MessageBox.Show("您确认要向设备:" + DeviceIndexForRunButton + "发送【设备急停】吗?", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) // { // return; // } //} //else //{ // if (MessageBox.Show("您确认要向设备:" + DeviceIndexForRunButton + "发送【急停复位】吗?", "操作提示:", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK) // { // return; // } //} CStaticClass.WcfControl.BeginSendDeviceReset(DeviceIndexForRunButton, 10 + iValue, new AsyncCallback(SendDeviceResetCallBack), iValue); // CStaticClass.WcfControl.BeginSendDeviceReset(DeviceIndexForRunButton, iValue, new AsyncCallback(SendDeviceResetCallBack), iValue); } void SendDeviceResetCallBack(IAsyncResult ar) { string errtext = string.Empty; if (CStaticClass.WcfControl.EndSendDeviceReset(out errtext, ar) == false) { MessageBox.Show(errtext, "操作提示", MessageBoxButtons.OK, MessageBoxIcon.Error); } } private void timerFlash_Tick(object sender, EventArgs e) { string[] DS;char[] dd=new char [1]{'.'}; Model.MDevice device; TimeSpan ts = DateTime.Now.TimeOfDay; DataView dv; DataView dvJY; this.SuspendLayout(); //richard.liu20140806 try { if (CStaticClass.WCFOK == true) { //timersum++;//20150103增加断网恢复//20151120取消断网恢复 //if (timersum >= 120)//1分钟刷新订阅一次 //{//20150103增加断网恢复 // OPCClient.CCommonOPCClient.RefreshMonitoringMode(); // timersum = 0; //} sql.Remove(0, sql.Length);//richard.liu20140806 sql.Append("SELECT F_DeviceIndex FROM T_Base_Device WHERE (F_LockedState = - 1) "); dvJY = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;//richard.liu20140806 dvJY.Sort = "F_DeviceIndex"; //PictureBox stack1 = bt11001; PictureBox pbdevice = pictureBoxShelfB1_1; TextBox tw0 = t31101; Panel pp = plAccessorial1; if (this.tabControl1.SelectedIndex == 0) { pp = plAccessorial1; } if (this.tabControl1.SelectedIndex == 1) { pp = plAccessorial2; } if (this.tabControl1.SelectedIndex == 2) { pp = plAccessorial3; } #region 每层楼监视画面 #region 堆垛机、RGV foreach (PictureBox ctrl in pp.Controls.OfType()) { if (ctrl.Enabled == false) continue; device = Model.CGetInfo.GetDeviceInfo(Convert.ToInt32(ctrl.Tag)); if (device == null) {//20100108 if (tsStatus.Text.IndexOf(ctrl.Name + "控件对应的设备索引:" + ctrl.Tag + "在数据库没有记录!") < 0) { tsStatus.ForeColor = Color.Red; this.tsStatus.Text += ctrl.Name + "控件对应的设备索引:" + ctrl.Tag + "在数据库没有记录!"; } continue; } #region 紧急停车按钮 if (ctrl.Name.ToString().Contains("stop")) { //紧急停车按钮 if (device.SplitByte_6 == 1) { ctrl.Image = global::wcfControlMonitorClient.Properties.Resources.stop0; } else { ctrl.Image = global::wcfControlMonitorClient.Properties.Resources.stop1; } continue; } #endregion #region 动画 //if ((device.DeviceKind == 1) && ((device.XCoor != 0) && (device.YCoor != 0) || (device.DeviceIndex == 15011)))//&& (device.ZCoor != 0) // {//堆垛机 // switch (device.DeviceIndex)//770/37 = 20.81 770/38 = 20.26 // { // case 11001: // stack1.Location = new Point((int)(500 + 20.35 * (device.XCoor - 1)), stack1.Location.Y); // tw1.Location = new Point(stack1.Location.X + 7, tw1.Location.Y); // break; // case 11002: // switch (device.ZCoor) // { // case 2: // stack2.Location = new Point((int)(500 + 20.9 * (device.XCoor - 1)), 103); // tw2.Location = new Point(stack2.Location.X + 7, stack2.Location.Y + 5); // break; // case 3: // stack2.Location = new Point(1269, 82); // tw2.Location = new Point(stack2.Location.X + 7, stack2.Location.Y + 5); // break; // case 1: // stack2.Location = new Point((int)(500 + 20.9 * (device.XCoor - 1)), 62); // tw2.Location = new Point(stack2.Location.X + 7, stack2.Location.Y + 5); // break; // default: // stack2.Location = new Point((int)(500 + 20.9 * (device.XCoor - 1)), 62); // tw2.Location = new Point(stack2.Location.X + 7, stack2.Location.Y + 5); // break; // } // break; // case 11003: // switch (device.ZCoor) // { // case 2: // stack3.Location = new Point((int)(500 + 20.9 * (device.XCoor - 1)), 185); // tw3.Location = new Point(stack3.Location.X + 7, stack3.Location.Y + 5); // break; // case 3: // stack3.Location = new Point(1269, 164); // tw3.Location = new Point(stack3.Location.X + 7, stack3.Location.Y + 5); // break; // case 1: // stack3.Location = new Point((int)(500 + 20.9 * (device.XCoor - 1)), 144); // tw3.Location = new Point(stack3.Location.X + 7, stack3.Location.Y + 5); // break; // default: // stack3.Location = new Point((int)(500 + 20.9 * (device.XCoor - 1)), 144); // tw3.Location = new Point(stack3.Location.X + 7, stack3.Location.Y + 5); // break; // } // break; // case 11004: // switch (device.ZCoor) // { // case 2: // stack4.Location = new Point((int)(500 + 20.9 * (device.XCoor - 1)), 273); // tw4.Location = new Point(stack4.Location.X + 7, stack4.Location.Y + 5); // break; // case 3: // stack4.Location = new Point(1269, 252); // tw4.Location = new Point(stack4.Location.X + 7, stack4.Location.Y + 5); // break; // case 1: // stack4.Location = new Point((int)(500 + 20.9 * (device.XCoor - 1)), 232); // tw4.Location = new Point(stack4.Location.X + 7, stack4.Location.Y + 5); // break; // default: // stack4.Location = new Point((int)(500 + 20.9 * (device.XCoor - 1)), 232); // tw4.Location = new Point(stack4.Location.X + 7, stack4.Location.Y + 5); // break; // } // break; // case 11005: // stack5.Location = new Point((int)(500 + 20.35 * (device.XCoor - 1)), stack5.Location.Y); // tw5.Location = new Point(stack5.Location.X + 7, tw5.Location.Y); // break; // case 11006: // switch (device.ZCoor) // { // case 2: // stack6.Location = new Point((int)(500 + 20.9 * (device.XCoor - 1)), 396); // tw6.Location = new Point(stack6.Location.X + 7, stack6.Location.Y + 5); // break; // case 3: // stack6.Location = new Point(1269, 375); // tw6.Location = new Point(stack6.Location.X + 7, stack6.Location.Y + 5); // break; // case 1: // stack6.Location = new Point((int)(500 + 20.9 * (device.XCoor - 1)), 355); // tw6.Location = new Point(stack6.Location.X + 7, stack6.Location.Y + 5); // break; // default: // stack6.Location = new Point((int)(500 + 20.9 * (device.XCoor - 1)), 355); // tw6.Location = new Point(stack6.Location.X + 7, stack6.Location.Y + 5); // break; // } // break; // case 11007: // stack7.Location = new Point((int)(500 + 20.35 * (device.XCoor - 1)), stack7.Location.Y); // tw7.Location = new Point(stack7.Location.X + 7, tw7.Location.Y); // break; // case 11008://850/40=21.25 850/39=21.80 // switch (device.ZCoor) // { // case 2: // stack8.Location = new Point((int)(421 + 20.7 * (device.XCoor - 1)), 529); // tw8.Location = new Point(stack8.Location.X + 7, stack8.Location.Y + 5); // break; // case 3: // stack8.Location = new Point(1269, 508); // tw8.Location = new Point(stack8.Location.X + 7, stack8.Location.Y + 5); // break; // case 1: // stack8.Location = new Point((int)(421 + 20.7 * (device.XCoor - 1)), 488); // tw8.Location = new Point(stack8.Location.X + 7, stack8.Location.Y + 5); // break; // default: // stack8.Location = new Point((int)(421 + 20.7 * (device.XCoor - 1)), 488); // tw8.Location = new Point(stack8.Location.X + 7, stack8.Location.Y + 5); // break; // } // break; // case 11009: // stack9.Location = new Point((int)(421 + 20.2 * (device.XCoor - 1)), stack9.Location.Y); // tw9.Location = new Point(stack9.Location.X + 7, tw9.Location.Y); // break; // case 11010: // switch (device.ZCoor) // { // case 2: // stack10.Location = new Point((int)(421 + 20.7 * (device.XCoor - 1)), 653); // tw10.Location = new Point(stack10.Location.X + 7, stack10.Location.Y + 5); // break; // case 3: // stack10.Location = new Point(1269, 632); // tw10.Location = new Point(stack10.Location.X + 7, stack10.Location.Y + 5); // break; // case 1: // stack10.Location = new Point((int)(421 + 20.7 * (device.XCoor - 1)), 611); // tw10.Location = new Point(stack10.Location.X + 7, stack10.Location.Y + 5); // break; // default: // stack10.Location = new Point((int)(421 + 20.7 * (device.XCoor - 1)), 611); // tw10.Location = new Point(stack10.Location.X + 7, stack10.Location.Y + 5); // break; // } // break; // case 15011: // switch (device.XCoor) // { // case 1: // stack11.Location = new Point(stack11.Location.X, 384); // tw11.Location = new Point(stack11.Location.X + 5, 396); // tw12.Location = new Point(stack11.Location.X + 5, 389); // break; // case 2: // stack11.Location = new Point(stack11.Location.X, 384); // tw11.Location = new Point(stack11.Location.X + 5, 396); // tw12.Location = new Point(stack11.Location.X + 5, 389); // break; // case 3: // stack11.Location = new Point(stack11.Location.X, 362); // tw11.Location = new Point(stack11.Location.X + 5, 374); // tw12.Location = new Point(stack11.Location.X + 5, 367); // break; // case 4: // stack11.Location = new Point(stack11.Location.X, 325); // tw11.Location = new Point(stack11.Location.X + 5, 337); // tw12.Location = new Point(stack11.Location.X + 5, 330); // break; // default: // stack11.Location = new Point(stack11.Location.X, 277); // tw11.Location = new Point(stack11.Location.X + 5, 289); // tw12.Location = new Point(stack11.Location.X + 5, 282); // break; // } // break; // } // } // else if (device.DeviceKind == 4) // {//RGV // switch (device.DeviceIndex) // { // case 15012: // switch (device.XCoor) // { // case 13: // stack12.Location = new Point(stack12.Location.X, 439); // tw121.Location = new Point(stack12.Location.X + 5, 445); // break; // case 11: // case 12: // stack12.Location = new Point(stack12.Location.X, 454); // tw121.Location = new Point(stack12.Location.X + 5, 460); // break; // case 10: // stack12.Location = new Point(stack12.Location.X, 473); // tw121.Location = new Point(stack12.Location.X + 5, 479); // break; // case 9: // stack12.Location = new Point(stack12.Location.X, 499); // tw121.Location = new Point(stack12.Location.X + 5, 505); // break; // case 8: // stack12.Location = new Point(stack12.Location.X, 513); // tw121.Location = new Point(stack12.Location.X + 5, 519); // break; // case 7: // stack12.Location = new Point(stack12.Location.X, 539); // tw121.Location = new Point(stack12.Location.X + 5, 545); // break; // case 6: // stack12.Location = new Point(stack12.Location.X, 555); // tw121.Location = new Point(stack12.Location.X + 5, 561); // break; // case 5: // stack12.Location = new Point(stack12.Location.X, 581); // tw121.Location = new Point(stack12.Location.X + 5, 587); // break; // case 4: // stack12.Location = new Point(stack12.Location.X, 596); // tw121.Location = new Point(stack12.Location.X + 5, 602); // break; // case 3: // stack12.Location = new Point(stack12.Location.X, 622); // tw121.Location = new Point(stack12.Location.X + 5, 628); // break; // case 2: // stack12.Location = new Point(stack12.Location.X, 637); // tw121.Location = new Point(stack12.Location.X + 5, 643); // break; // case 1: // stack12.Location = new Point(stack12.Location.X, 663); // tw121.Location = new Point(stack12.Location.X + 5, 669); // break; // default: // stack12.Location = new Point(stack12.Location.X, 403); // tw121.Location = new Point(stack12.Location.X + 5, 409); // break; // } // break; // } // } #endregion #region 设备被禁用 //richar.liu20140806 if (dvJY.Count > 0) { if (dvJY.Find(device.DeviceIndex) >= 0) { ctrl.BackColor = Color.Maroon; } } #endregion } #endregion #region 类输送机 foreach (Button ctrl in pp.Controls.OfType