using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using DBFactory;
using System.Net.Sockets;
using System.Threading;
using ICommLayer;
using CommLayerFactory;
using Microsoft.VisualBasic;
namespace ControlSystem
{
    /// <summary>
    /// Creator:Richard.liu
    /// µ÷¶È³ÌÐòÖ÷´°¿Ú
    /// </summary>
    public partial class FrmControlMonitor : Form
    {
        
        private Object thisLock = new Object();
        Model.MDevice device = null;//20110331
        StringBuilder sql = new StringBuilder();
        char[] dd = new char[1] { '.' };//20101124
        string[] DS;//20101124
        FrmDeviceStatus _deviceStatus = new FrmDeviceStatus();
        FrmWorkstationStatus _worstation = new FrmWorkstationStatus();
        #region ·½·¨
        public void FlashPanit(string obj, bool visible)
        {
            this.Controls[obj].Visible = visible;
        }
        public void FlashPanit(string obj, Image backgroundImage)
        {
            this.Controls[obj].BackgroundImage = backgroundImage;
        }
        public void FlashPanit(string obj, ImageLayout backgroundImageLayout)
        {
            this.Controls[obj].BackgroundImageLayout = backgroundImageLayout;
        }

        public void FlashPanit(string obj, int top, int left)
        {
            this.Controls[obj].Top = top;
            this.Controls[obj].Left = left;
        }

        public void FlashPanit(string obj, string text, bool append)
        {
            if (append == true)
            {
                this.Controls[obj].Text += text;
            }
            else
            {
                this.Controls[obj].Text = text;
            }
        }
        public string GetObjectText(string obj)
        {
            return this.Controls[obj].Text;
        }
        public void MonitorRefresh(object dataSource)
        {



            if (dataSource!=this.dgvMonitor.DataSource)
            {
                this.dgvMonitor.DataSource = dataSource;
            }
            
            //20100108
            dataSource = null;
        }
        public void MonitorRefresh()
        {//20110222
            if (CStaticClass.RealRefresh == true)
                {
                    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(object dataSource)
        {
            if (this.dgvManager.DataSource != dataSource)
            {
                this.dgvManager.DataSource = dataSource;
            }
            //20100108
            dataSource = null;
        }
        public void ManagerRefresh()
        {//20110222
            
                if (CStaticClass.RealRefresh == true)
                {
                    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;
                }
            
        }
        #endregion
        private static FrmControlMonitor _formInstance;
        public static FrmControlMonitor FormInstance
        {
            get
            {
                if (_formInstance == null)
                {
                    _formInstance = new FrmControlMonitor();

                }
                return _formInstance;
            }
            set { _formInstance = value; }
        }
        //IGetDeviceState gds;
        CGetState gs = new CGetState();
        CControl cc = new CControl();
        CListenPLCAsk cplc = new CListenPLCAsk();
        CCommonFunction ccf = new CCommonFunction();
        DBOperator dbo = CStaticClass.dbo;
        DBOperator dbo1 = CStaticClass.dbo1;
        DBOperator dboM =CStaticClass.dboM;
        
        public FrmControlMonitor()
        {
            InitializeComponent();
            _formInstance = this;
            //201100608
            CListenAGVState.DataChange+=new CDataSourceChangeEventHandler(CListenAGVState_DataChange);
            CListenAGVState.UpdateDB+=new CUpdateDBEventHandler(CListenAGVState_UpdateDB);
            DataView dv;
            System.IO.Ports.SerialPort sp;
            try
            {
                //20100609
                #region ´®¿Ú³õʼ»¯
                sql.Remove(0, sql.Length);
                sql.Append("SELECT  F_DeviceIndex, F_CommSettings,  F_SerialPort   FROM T_Base_Device where F_SerialPort>0");
                dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
                for (int i = 0; i < dv.Count; i++)
                {
                    sp=new System.IO.Ports.SerialPort("COM"+dv[i]["F_SerialPort"].ToString());
                    sp.BaudRate = 9600;
                    sp.Parity = System.IO.Ports.Parity.None;
                    sp.DataBits = 8;
                    sp.StopBits = System.IO.Ports.StopBits.One;
                    CStaticClass.serialports.Add(Convert.ToInt32( dv[i]["F_DeviceIndex"]),sp);
                }
                #endregion
            }
            catch (Exception ex)
            {
                tsStatus.Text = "´®¿Ú³õʼ»¯Ê±£º" + ex.Message;
            }
            finally
            {
                dv=null;
                sp=null;

            }
        }
        /// <summary>
        /// 20110405ÏàÓ¦CListenAGVÏ̵߳ÄÊý¾Ý·´À¡Ê¼þ
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void CListenAGVState_DataChange(object sender, CDataChangeEventArgs e)
        {

            try
            {
                if (e.ManDataSource == null)
                {
                    dgvManager.Invoke(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;
                    }));
                    
                }
                else
                {
                    dgvManager.Invoke(new MethodInvoker(delegate() { dgvManager.DataSource = e.ManDataSource; }));
                }
                if (e.MonDataSource == null)
                {
                    dgvMonitor.Invoke(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;
                }));
                }
                else
                {
                    dgvMonitor.Invoke(new MethodInvoker(delegate() { dgvMonitor.DataSource = e.MonDataSource; }));
                }
            }
            catch (Exception ex)
            {
                if (tsStatus.Text.IndexOf("´¦Àí¸½¼ÓÏ̷߳´À¡Êý¾Ý¸üÐÂʱ£º" + ex.Message) < 0)
                {
                    tsStatus.Text += "´¦Àí¸½¼ÓÏ̷߳´À¡Êý¾Ý¸üÐÂʱ£º" + ex.Message;
                }
            }
        }
        /// <summary>
        /// 20110608ÏàÓ¦CListenAGVÏ̵߳ÄÊý¾Ý¿â¸üÐÂʼþ
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        void CListenAGVState_UpdateDB(object sender, CUpdateDBChangeEventArgs e)
        {
            try
            {
                this.Invoke(new MethodInvoker(delegate()
                {
                    if (e.Taskindex > 0)
                    {
                        gs.ActionComplete(e.Deviceindex, e.Taskindex, e.Taskstate);
                    }
                    else
                    {
                        dbo1 = e.Dbo;
                        dbo1.ExecuteSql(e.ExeSQL.ToString());
                    }
                }));
            }
            catch (Exception ex)
            {
                if (tsStatus.Text.IndexOf("´¦Àí¸½¼ÓÏ̸߳üÐÂÊý¾Ý¿âʱ£º" + ex.Message) < 0)
                {
                    tsStatus.Text += "´¦Àí¸½¼ÓÏ̸߳üÐÂÊý¾Ý¿âʱ£º" + ex.Message;
                }
            }
        }
        private void FrmControlMonitor_Load(object sender, EventArgs e)
        {
            if (this.rbmanAll.Checked == true)
            {
                CStaticClass.Manstatus = " F_Status<>-1 ";
            }
            if (this.rbmanRun.Checked == true)
            {
                CStaticClass.Manstatus = " F_Status=1 ";
            }
            if (this.rbmanWait.Checked == true)
            {
                CStaticClass.Manstatus = " F_Status=0 ";
            }
            
            //ÏÔʾÉ豸ָÁî
            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;
            //ÏÔʾµ÷¶ÈÈÎÎñ
            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.tabPage1.AutoScrollMinSize = new Size(1072, 312);

            #region Ìí¼ÓÊäËÍ»ú¡¢´©Ë󳵺ͶѶâ»úµÄµ¥»÷ʼþ
            
            foreach (Control ctrl in this.plAccessorial1.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))
                {
                    ctrl.Click += new EventHandler(ctrl_ClickPic);
                }
            }
            foreach (Control ctrl in this.plAccessorial2.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))
                {
                    ctrl.Click += new EventHandler(ctrl_ClickPic);
                }
                if (ctrl.GetType().ToString() == "System.Windows.Forms.GroupBox")
                {
                    foreach (Control ct in ctrl.Controls)
                    {

                        if (ct.GetType().ToString() == "System.Windows.Forms.TextBox")
                        {
                            ct.Click += new EventHandler(ctrl_ClickTxt);
                        }
                    }
                }
            }
            
            #endregion


        }

        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 timer1_Tick(object sender, EventArgs e)
        {


            if (CStaticClass.Order == true)
            {
                
                
                gs.GetDeviceState();
                if (tsStatus.Text.Length > 300)
                    tsStatus.Text = "";
            }

        }

        private void TSMrefresh_Click(object sender, EventArgs e)
        {
            sql.Remove(0, sql.Length);
            sql.Append("select * from V_Manage_Task where " ).Append( CStaticClass.Manstatus);
            CStaticClass.RealRefresh = true;
            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 ");
            CStaticClass.RealRefresh = true;
            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 rbmonAll_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rb = (RadioButton)sender;
            if (rb.Checked == true)
            {
                CStaticClass.Monstatus = " F_Status<>-1 ";
            }
            TSMMonitorRefresh_Click(sender, e);
        }

        private void rbmonRun_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rb = (RadioButton)sender;
            if (rb.Checked == true)
            {
                CStaticClass.Monstatus = " (F_Status>=1) ";
            }
            TSMMonitorRefresh_Click(sender, e);
        }

        private void rbmonWait_CheckedChanged(object sender, EventArgs e)
        {
            RadioButton rb = (RadioButton)sender;
            if (rb.Checked == true)
            {
                CStaticClass.Monstatus = " F_Status=0 ";
            }
            TSMMonitorRefresh_Click(sender, e);
        }



        private void button2_Click(object sender, EventArgs e)
        {
            CStaticClass.Monstatus = " F_Status<>-1 ";

            TSMMonitorRefresh_Click(sender, e);
        }

        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 dgvMonitor_DataSourceChanged(object sender, EventArgs e)
        {
            dgvMonitor.Columns["F_Status"].Visible = false;
        }

        private void dgvManager_DataSourceChanged(object sender, EventArgs e)
        {
            dgvManager.Columns["F_Status"].Visible = false;
        }

       

        private void timer2_Tick(object sender, EventArgs e)
        {
            //DataTable dt;  string ss1;
           
            try
            {
                
                if ((CStaticClass.RealRefresh == true) && (CStaticClass.Order == true))
                {
                    
                    //if ((CStaticClass.gcCount % 10) == 0)
                    //{
                    //    #region ¹ÊÕÏÐÅÏ¢ÏÔʾ

                    //    ss1 = DateTime.Now.Second.ToString() + "-" + DateTime.Now.Millisecond.ToString();
                    //    string sql = "SELECT µ÷¶ÈÈÎÎñË÷Òý,É豸Ë÷Òý, É豸Ãû³Æ, ¹ÊÕÏÃû³Æ, ·¢Éúʱ¼ä FROM V_Device_Error_log where ·¢Éúʱ¼ä like '" + DateTime.Today.ToString("yyyy-MM-dd") + "%' order by ·¢Éúʱ¼ä asc";
                    //    //20091128
                    //    dt = dbo1.ExceSQL(sql).Tables[0];
                    //    if (dt.Rows.Count > 0)
                    //    {
                    //        this.listView1.Items.Clear();
                    //        for (int i = 0; i < dt.Rows.Count; i++)
                    //        {
                    //            ListViewItem lvi = new ListViewItem();
                    //            lvi.Text = dt.Rows[i]["µ÷¶ÈÈÎÎñË÷Òý"].ToString();
                    //            lvi.SubItems.Add(dt.Rows[i]["É豸Ë÷Òý"].ToString());
                    //            lvi.SubItems.Add(dt.Rows[i]["É豸Ãû³Æ"].ToString());
                    //            lvi.SubItems.Add(dt.Rows[i]["¹ÊÕÏÃû³Æ"].ToString());
                    //            lvi.SubItems.Add(dt.Rows[i]["·¢Éúʱ¼ä"].ToString());
                    //            listView1.Items.Add(lvi);
                    //            //20091128
                    //            lvi = null;
                    //        }
                    //    }

                    //    #endregion
                    //}

                    //ÏÔʾÉ豸ָÁî20110222
                    //sql.Remove(0, sql.Length);
                    //sql.Append("select * from V_Monitor_Task where " ).Append( CStaticClass.Monstatus ).Append( " order by É豸ָÁîË÷Òý asc ");
                    //FrmControlMonitor.FormInstance.MonitorRefresh(dbo1.ExceSQL(sql.ToString()).Tables[0].DefaultView);
                    ////ÏÔʾµ÷¶ÈÈÎÎñ
                    //sql.Remove(0, sql.Length);
                    //sql.Append("select * from V_Manage_Task where " ).Append( CStaticClass.Manstatus);
                    //FrmControlMonitor.FormInstance.ManagerRefresh(
                    //    dbo1.ExceSQL(sql.ToString()).Tables[0].DefaultView);
                    
                }

                //»ñÈ¡µ÷¶ÈÈÎÎñ
                if (CStaticClass.ObtainManageTask == true)
                {
                    
                    if (CObtainTask.GetManagerTask() == 0)
                    {
                        this.tsStatus.ForeColor = Color.Red;
                        if (this.tsStatus.Text.IndexOf(CObtainTask.CObtainTaskError) < 0)
                        {
                            this.tsStatus.Text += CObtainTask.CObtainTaskError;
                        }
                    }
                    if (CObtainTask.CObtainTaskError.Length > 0)
                    {
                        if (this.tsStatus.Text.IndexOf(CObtainTask.CObtainTaskError) < 0)
                        {
                            this.tsStatus.ForeColor = Color.Red;
                            this.tsStatus.Text += CObtainTask.CObtainTaskError;
                        }
                    }
                    CObtainTask.CObtainTaskError = "";
                   
                }
                
            }
            catch (Exception ex)
            {
                if (tsStatus.Text.IndexOf("»ñÈ¡µ÷¶ÈÈÎÎñʱ£º" + ex.Message) < 0)
                {
                    tsStatus.Text += "»ñÈ¡µ÷¶ÈÈÎÎñʱ£º" + ex.Message;
                }
            }
            finally
            {
                //dt = null;
            }

        }

        private void timer3_Tick(object sender, EventArgs e)
        {
            if (CStaticClass.Order == true)
            {
                
                
                //Æô¶¯²ð·Ö½ø³ÌMyTaskIntoSteps();
                CDisassembleTask.MyTaskIntoSteps();
                if (CDisassembleTask .DisassembleTaskError!= "")
                {
                    if (tsStatus.Text.IndexOf(CDisassembleTask.DisassembleTaskError) < 0)
                    {
                        tsStatus.ForeColor = Color.Red;
                        tsStatus.Text += CDisassembleTask.DisassembleTaskError;
                    }
                    CDisassembleTask.DisassembleTaskError = "";
                }
                cplc.DealwithPLCAsk();
                if (cplc.ListenPLCAskError != "")
                {
                    if (tsStatus.Text.IndexOf(cplc.ListenPLCAskError) < 0)
                    {
                        tsStatus.ForeColor = Color.Red;
                        tsStatus.Text += cplc.ListenPLCAskError;
                    }
                }
                cplc.ListenPLCAskError = "";
                if (CListenAGVState.TcpServerError != "")
                {
                    if (tsStatus.Text.IndexOf(CListenAGVState.TcpServerError) < 0)
                    {
                        tsStatus.ForeColor = Color.Red;
                        tsStatus.Text += CListenAGVState.TcpServerError;
                    }
                }
                CListenAGVState.TcpServerError = "";
            }

        }

        private void timer4_Tick(object sender, EventArgs e)
        {
            if (CStaticClass.Order == true)
            {
                #region ¶ÁÈ¡ËùÓÐPLCÊý¾Ý
                //string ss1 = DateTime.Now.Second.ToString() + "-" + DateTime.Now.Millisecond.ToString();
                CStaticClass.GetAllReturns();
                //string ss11 = DateTime.Now.Second.ToString() + "-" + DateTime.Now.Millisecond.ToString();
                
                #endregion
            }
        }

        private void timer5_Tick(object sender, EventArgs e)
        {
            if (CStaticClass.Order == true)
            {
                //string ss1 = DateTime.Now.Second.ToString() + "-" + DateTime.Now.Millisecond.ToString();
                cc.StartOrder();
                if (cc.CControlError != "")
                {
                    if (tsStatus.Text.IndexOf(cc.CControlError) < 0)
                    {
                        tsStatus.ForeColor = Color.Red;
                        tsStatus.Text += cc.CControlError;
                    }
                }
                cc.CControlError = "";
                
            }

        }

        private void timerFlash_Tick(object sender, EventArgs e)
        {
            //20100108
            DataView dvh;
            //Model.MDevice device = null;
            try
            {
                if (CStaticClass.Order == true)
                {
                    Panel pp = plAccessorial1;
                    PictureBox stack1 = bt11001;
                    PictureBox stack2 = bt11002;
                    TextBox tw11 = t11001;
                    TextBox tw21 = t11002;
                    PictureBox stack3 = bt11003;
                    PictureBox stack4 = bt11004;
                    TextBox tw31 = t11003;
                    TextBox tw41 = t11004;
                    switch(tabControl1.SelectedIndex )
                    {
                        
                        case 0:
                            pp = plAccessorial1;
                            tw11 = t11001;
                            tw21 = t11002;
                            stack1 = bt11001;
                            stack2 = bt11002;
                            tw31 = t11003;
                            tw41 = t11004;
                            stack3 = bt11003;
                            stack4 = bt11004;
                            
                            break;
                        case 1:
                            pp = plAccessorial2;
                            
                            
                            break;

                       
                        
                    }


                    #region ÿ²ãÂ¥¼àÊÓ»­Ãæ
                    
                    foreach (Control ctrl in pp.Controls)
                    {
                        if (((ctrl.GetType().ToString() == "System.Windows.Forms.Button") ||
                            (ctrl.GetType().ToString() == "System.Windows.Forms.PictureBox")) &&
                            (ctrl.Enabled == true))
                        {

                            device = Model.CGetInfo.GetDeviceInfo(Convert.ToInt32(ctrl.Tag));
                            if (device == null)
                            {//20100108
                                if (tsStatus.Text.IndexOf("É豸Ë÷Òý£º" + ctrl.Tag + "ÔÚÊý¾Ý¿âûÓмǼ!") < 0)
                                {
                                    tsStatus.ForeColor = Color.Red;
                                    this.tsStatus.Text += "É豸Ë÷Òý£º" + ctrl.Tag + "ÔÚÊý¾Ý¿âûÓмǼ!";
                                }


                                continue;

                            }
                            #region ÉèÖÃÉ豸״̬
                            switch (device.RunState)
                            {
                                //¿ÕÏÐ
                                case 0:
                                    if (device.DeviceKind == 1 || device.DeviceKind == 4)
                                    {
                                        ctrl.BackColor = Color.MediumOrchid;
                                    }
                                    else
                                    {
                                        if (device.DeviceKind != 18)
                                        {
                                            ctrl.BackColor = SystemColors.InactiveCaptionText;
                                        }
                                    }
                                    break;
                                //ÔËÐÐ
                                case 1:
                                    ctrl.BackColor = Color.Lime;
                                    break;
                                //¹ÊÕÏ
                                case 2:
                                    ctrl.BackColor = Color.Red;
                                    break;
                                //ÀëÏß
                                case 3:
                                    ctrl.BackColor = Color.LightYellow;
                                    break;
                                //Í£ÓÃ
                                case 4:
                                    ctrl.BackColor = Color.Maroon;
                                    break;
                                //20090920¶¯×÷Íê³É
                                case 5:
                                    if (device.DeviceKind == 1 || device.DeviceKind == 4)
                                    {
                                        ctrl.BackColor = Color.MediumSlateBlue;//MediumOrchid;
                                    }
                                    else
                                    {
                                        if (device.DeviceKind != 18)
                                        {
                                            ctrl.BackColor = Color.Gray;
                                        }
                                    }
                                    break;
                            }
                            #endregion

                            #region ÒÆ¶¯Éè±¸×ø±ê¸üÐÂ
                            //¶Ñ¶â»ú
                            if (device.DeviceKind == 1)
                            {
                                switch (device.DeviceIndex)
                                {

                                    case 11001:
                                        stack1.Location = new Point((int)(233+18.02 * (device.XCoor - 1)), stack1.Location.Y);
                                        tw11.Location = new Point(stack1.Location.X + 6, tw11.Location.Y);
                                        
                                        break;
                                    case 11002:
                                        stack2.Location = new Point((int)(233+18.02 * (device.XCoor - 1)), stack2.Location.Y);
                                        tw21.Location = new Point(stack2.Location.X + 6, tw21.Location.Y);
                                        
                                        break;
                                    case 11003:
                                        stack3.Location = new Point((int)(233 + 18.02 * (device.XCoor - 1)), stack3.Location.Y);
                                        tw31.Location = new Point(stack3.Location.X + 6, tw31.Location.Y);

                                        break;
                                    case 11004:
                                        stack4.Location = new Point((int)(233 + 18.02 * (device.XCoor - 1)), stack4.Location.Y);
                                        tw41.Location = new Point(stack4.Location.X + 6, tw41.Location.Y);

                                        break;
                                }
                            }

                            #endregion
                        }
                        else if ((ctrl.GetType().ToString() == "System.Windows.Forms.TextBox") || ((ctrl.GetType().ToString() == "System.Windows.Forms.PictureBox") && (ctrl.Name.Substring(0, 1) == "t")))
                        {
                            #region »õÎï̽²â20101118
                            DS = ctrl.Tag.ToString().Split(dd);
                            int devicebyte = 0; int devbit = 0;
                            int.TryParse(DS[0], out devicebyte);
                            int.TryParse(DS[1], out devbit);
                            
                            ctrl.Visible = CStaticClass.GetDevicePhotoelectric(devicebyte,devbit) == 1 ? true : false;
                            #endregion
                        }
                        #region Âß¼­ÓÐÎïÏÔʾ


                        else if (ctrl.GetType().ToString() == "System.Windows.Forms.RadioButton")
                        {
                            //20100108DataView dvh;
                            dvh = dbo.ExceSQL("SELECT F_DeviceIndex FROM T_Base_Device WHERE (F_DeviceIndex = " + ctrl.Tag + ") AND (F_HaveGoods = 1)").Tables[0].DefaultView;
                            if (dvh.Count > 0)
                            {
                                ctrl.Visible = true;
                                ctrl.BackColor = Color.Blue;
                            }
                            else
                            {
                                ctrl.Visible = false;
                            }

                        }



                        #endregion

                    }
                    

                    #endregion

                }
            }
            catch (Exception ex)
            {//20100108
                if (tsStatus.Text.IndexOf("ˢнçÃæ¶¯»­Ê±£º" + ex.Message) < 0)
                {
                    tsStatus.ForeColor = Color.Red;
                    this.tsStatus.Text += "ˢнçÃæ¶¯»­Ê±£º" + ex.Message;
                }
            }
            finally
            {//20100108
                dvh = null;
                device = null;
            }
        }

        private void tabPage1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            g.TranslateTransform(this.tabPage1.AutoScrollPosition.X, this.tabPage1.AutoScrollPosition.Y);
            //20100108
            g.Dispose();
        }

        private void dgvMonitor_DataBindingComplete(object sender, DataGridViewBindingCompleteEventArgs e)
        {
            foreach (DataGridViewRow DGVRow in this.dgvMonitor.Rows)
            {
                if (DGVRow != null)
                {
                    if (Convert.ToInt32(DGVRow.Cells["f_status"].Value) >= 30)
                    {
                        DGVRow.DefaultCellStyle.BackColor = Color.Red;
                    }

                }
            }
        }

       

        

        

        private void timerCamera_Tick(object sender, EventArgs e)
        {

            //20100108¿ØÖÆÉãÏñÍ·½â³ýµ±Ç°ÇøÓò±¨¾¯
            //ÉãÏñÍ·É豸ÀàÐÍ29£»Ã¿¸öÉ豸µÄF_LocalPort´ú±íÉãÏñÍ·É豸Ë÷Òý£»F_RemotePort´ú±íÉãÏñÍ·»®·ÖµÄÇøÓòÖµ£¨1--12£©
            //¼ì²éF_LocalPort´ú±íÉãÏñÍ·É豸Ë÷ÒýµÄÇøÓòF_RemotePortÄÚµÄËùÓÐÉ豸¶¼Ã»Óб¨¾¯¾ÍÖÃF_LockedState=0
            if (CStaticClass.Order == false) return;
            DataView dv;
            DataView dv1;
            DataView dvs;
            try
            {

                dv = dbo.ExceSQL("select F_DeviceIndex,F_LockedState from T_Base_Device where F_DeviceKindIndex=29 and F_LockedState>0").Tables[0].DefaultView;
                for (int i = 0; i < dv.Count; i++)
                {
                    if (dv[i]["F_LockedState"] != DBNull.Value)
                    {//ÓÐÉ豸Ë÷ÒýËø×¡ÉãÏñÍ·
                        dv1 = dbo.ExceSQL("SELECT F_RemotePort FROM T_Base_Device WHERE F_DeviceIndex=" + dv[i]["F_LockedState"] + "").Tables[0].DefaultView;
                        if (dv1.Count > 0)
                        {
                            //¼ì²éF_LocalPortÉãÏñÍ·É豸Ë÷ÒýµÄF_RemotePortÇøÓòÄÚµÄËùÓÐÉ豸¶¼Ã»Óб¨¾¯¾ÍÖÃF_LockedState=0
                            dvs = dbo.ExceSQL("SELECT SUM(F_ErrorCode) AS errs FROM T_Base_Device WHERE (F_LocalPort = " + dv[i]["F_DeviceIndex"] + " and F_RemotePort=" + dv1[0]["F_RemotePort"] + ") ").Tables[0].DefaultView;

                            if (dvs[0]["errs"] != DBNull.Value)
                            {
                                if (Convert.ToInt32(dvs[0]["errs"]) <= 0)
                                {
                                    #region ¿ØÖÆÉãÏñÍ·½â³ýµ±Ç°ÇøÓò±¨¾¯

                                    dbo.ExceSQL("update T_Base_Device set F_LockedState=0 where F_DeviceIndex=" + dv[i]["F_DeviceIndex"] + " and F_LockedState>0");
                                    #endregion
                                }
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                if (tsStatus.Text.IndexOf(ex.Message) < 0)
                {
                    tsStatus.Text += ex.Message;
                }
            }
            finally
            {
                dv = null;
                dvs = null;
                dv1 = null;
            }
        }

        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)
            {
                throw ex;
            }
        }

        

        

        

        private void timerListenSerialPort_Tick(object sender, EventArgs e)
        {//20100609¼àÌý״̬ÊÇ´óÓÚ0µÄ´®¿ÚÉ豸
            DataView dv,dvlane;
            int devindex = 0, byteRead = 0;
            byte[] GetBytes;
            int TaskIdx = 0;
            int mti =0;
            int mtikind=0;
            try
            {
                sql.Remove(0, sql.Length);
                sql.Append("SELECT T_Base_Device.F_DeviceIndex,T_Monitor_Task.F_MonitorIndex FROM T_Base_Device,T_Monitor_Task where (T_Base_Device.F_DeviceIndex = T_Monitor_Task.F_DeviceIndex) and (T_Monitor_Task.F_Status > 0) AND (T_Base_Device.F_SerialPort > 0)");
                dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;

                for (int i = 0; i < dv.Count; i++)
                {

                    devindex = Convert.ToInt32(dv[i]["F_DeviceIndex"]);
                    if (CStaticClass.serialports[devindex].IsOpen == false)
                    {
                        CStaticClass.serialports[devindex].Open();
                    }
                    byteRead = CStaticClass.serialports[devindex].BytesToRead;
                    if (byteRead >= 8)
                    {
                        GetBytes = new byte[byteRead];
                        CStaticClass.serialports[devindex].Read(GetBytes, 0, byteRead);
                        if ((byteRead == 8) && (GetBytes[1] == 240) && (GetBytes[6] == 170))//PLCÖ´ÐÐPCÃüÁîµÄÓ¦´ðÖ¡£¬PCÈÏΪÈÎÎñ¿ªÊ¼ÔËÐÐ
                        {
                            TaskIdx =Convert.ToInt32( (GetBytes[3] * Math.Pow(2, 8) + GetBytes[4]));
                            mti = ccf.GetManageTaskIndexfromMonitor(TaskIdx);
                            mtikind = ccf.GetManageTaskKindIndexFromMonitor(TaskIdx);
                            #region Ð޸ĵ÷¶ÈÈÎÎñ״̬
                            sql.Remove(0, sql.Length);
                            sql.Append("update T_Monitor_Task set F_Status=2 where F_Status=1 and F_MonitorIndex=" + TaskIdx);
                            dbo.ExceSQL(sql.ToString());
                            #endregion

                            #region ¸ù¾ÝÈÎÎñºÅºÍ̽ÎïÇé¿öÅжÏÈÎÎñÖ´ÐеÄλÖûØÐ´±¾µØ¹ÜÀí±í

                            sql.Remove(0, sql.Length);
                            sql.Append("update T_Manage_Task set FCurrentLocation=" ).Append(
                                devindex ).Append( " where F_ManageTaskKindIndex=" ).Append( mtikind ).Append( " and FID=" ).Append( mti ).Append( "");
                            dbo.ExceSQL(sql.ToString());
                            //µ÷¶ÈÈÎÎñ±íÒ²¼Ç¼µ±Ç°Î»Öã¬Ö÷ÒªÊǸøÊäËÍ»úÁ´ÓÃ
                            sql.Remove(0, sql.Length);
                            sql.Append("update T_Monitor_Task set F_CurrentLocation=" ).Append(
                                devindex ).Append( " where F_MonitorIndex=" ).Append( TaskIdx);
                            dbo.ExceSQL(sql.ToString());
                            //É豸Âß¼­ÓÐÎï

                            //20090918¸ø¶Ñ¶â»úËÍ»õµÄÊäËÍ»úÂß¼­ÓÐÎï½âËøF_HaveGoods=0
                            //20100108
                            sql.Remove(0, sql.Length);
                            sql.Append("SELECT F_LaneGateDeviceIndex  FROM T_Base_Lane_Gate where F_LaneGateDeviceIndex=" ).Append( devindex);
                             dvlane = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
                            if (dvlane.Count > 0)
                            {
                                sql.Remove(0, sql.Length);
                                sql.Append("update T_Base_Device set F_HaveGoods=0 where F_DeviceIndex=" ).Append( devindex);
                                dbo.ExceSQL(sql.ToString());
                            }

                            #endregion
                           
                        }
                        else if ((byteRead == 16)&& (GetBytes[1] != 240) && (GetBytes[6] != 170))//PLCÖ÷¶¯Éϱ¨ÐÅÏ¢Ö¡£ºÍê³É¡¢¹ÊÕÏ£»PCÐèÒª·¢ËÍÓ¦´ðÖ¡
                        {
                            TaskIdx = Convert.ToInt32((GetBytes[2] * Math.Pow(2, 8) + GetBytes[3]));
                            mti = ccf.GetManageTaskIndexfromMonitor(TaskIdx);
                            mtikind = ccf.GetManageTaskKindIndexFromMonitor(TaskIdx);
                            if (GetBytes[4] == 1)//Íê³É
                            {
                                gs.ActionComplete(devindex, TaskIdx, 0);
                            }
                            else if (GetBytes[4]>=30)//¹ÊÕÏ
                            {
                                gs.ActionError(devindex, TaskIdx, GetBytes[4]);
                            }
                            byte [] _Senddata=new byte[8];
                            _Senddata[0] = 8;
                            _Senddata[1] = 240;
                            _Senddata[2] = GetBytes[1];
                            _Senddata[3] = Convert.ToByte(TaskIdx >> 8);
                            _Senddata[4] = Convert.ToByte(TaskIdx & 255);
                            _Senddata[5] = 0;//Convert.ToByte(devindex);
                            _Senddata[6] = 170;
                            byte SXor = _Senddata[0];
                            for (int k = 1; k <= 6; k++)
                            {
                                SXor = Convert.ToByte(Convert.ToInt16(SXor) ^ Convert.ToInt16(_Senddata[k]));
                            }
                            _Senddata[7] = SXor;
                            CStaticClass.serialports[devindex].Write(_Senddata, 0, 8);
                        }
                        

                    }
                }
            }
            catch (Exception ex)
            {
                if (tsStatus.Text.IndexOf("¼àÌý´®¿ÚÉ豸" + devindex.ToString() + "ʱ£º" + ex.Message) < 0)
                {
                    tsStatus.Text += "¼àÌý´®¿ÚÉ豸" + devindex.ToString() + "ʱ£º" + ex.Message;
                }
            }
            finally
            {
                dv = null;
                GetBytes = null;
            }
        }

        private void tsStatus_TextChanged(object sender, EventArgs e)
        {
            if (OPCClient.CCommonOPCClient.OpcError != null)//20101011
            {
                if (OPCClient.CCommonOPCClient.OpcError.IndexOf("ͬ²½Êý¾Ýʱ£ºOPC ServerûÁ¬½Óµ½PLC£¬²¢ÇÒ³¬¹ýÖØ¸´Á¬½Ó´ÎÊý!ÇëÏȹرÕÃüÁ¹Ø£¬¼ì²éͨѶÏß·£¬È·ÈϺóÖØÐ´ò¿ªÃüÁ¹Ø£¡") >= 0)
                {
                    if (tsStatus.Text.IndexOf("ͬ²½Êý¾Ýʱ£ºOPC ServerûÁ¬½Óµ½PLC£¬²¢ÇÒ³¬¹ýÖØ¸´Á¬½Ó´ÎÊý!ÇëÏȹرÕÃüÁ¹Ø£¬¼ì²éͨѶÏß·£¬È·ÈϺóÖØÐ´ò¿ªÃüÁ¹Ø£¡") >= 0)
                    {

                        FrmMain.FormInstance.Voice.Speak("ͬ²½Êý¾Ýʱ£ºOPC ServerûÁ¬½Óµ½PLC£¬²¢ÇÒ³¬¹ýÖØ¸´Á¬½Ó´ÎÊý!ÇëÏȹرÕÃüÁ¹Ø£¬¼ì²éͨѶÏß·£¬È·ÈϺóÖØÐ´ò¿ªÃüÁ¹Ø£¡", DotNetSAPI.SpeechVoiceSpeakFlags.SVSFlagsAsync);
                        //tsStatus.Text = "";
                    }
                }
            }
            if (SocketsTCPIP.CClientTCPIP.TcpError != null)//20101011
            {
                if (SocketsTCPIP.CClientTCPIP.TcpError.IndexOf("SocketsTCPIP:Á¬½ÓÔ¶³ÌÖ÷»úʱ£¬·¢ÉúÈý´ÎÁ¬½Óʧ°Ü´íÎó£¡Çë¼ì²éÔ¶³ÌÖ÷»úÊÇ·ñÕý³£ÔËÐÐ!ÖØÐ´ò¿ªÃüÁ¹Ø¡£") >= 0)
                {
                    if (tsStatus.Text.IndexOf("SocketsTCPIP:Á¬½ÓÔ¶³ÌÖ÷»úʱ£¬·¢ÉúÈý´ÎÁ¬½Óʧ°Ü´íÎó£¡Çë¼ì²éÔ¶³ÌÖ÷»úÊÇ·ñÕý³£ÔËÐÐ!ÖØÐ´ò¿ªÃüÁ¹Ø¡£") >= 0)
                    {

                        FrmMain.FormInstance.Voice.Speak("SocketsTCPIP:Á¬½ÓÔ¶³ÌÖ÷»úʱ£¬·¢ÉúÈý´ÎÁ¬½Óʧ°Ü´íÎó£¡Çë¼ì²éÔ¶³ÌÖ÷»úÊÇ·ñÕý³£ÔËÐÐ!ÖØÐ´ò¿ªÃüÁ¹Ø¡£", DotNetSAPI.SpeechVoiceSpeakFlags.SVSFlagsAsync);
                        //tsStatus.Text = "";
                    }
                }
            }
            if (CParsePLCData.CParsePLCError != null)//20101011
            {
                if (CParsePLCData.CParsePLCError.IndexOf("·¢Éú¹ÊÕÏ£ºÓлõÎÞµ÷¶ÈÈÎÎñ£¬ÇëÄú¼ì²éÈ·ÈÏ£¡") >= 0)
                {
                    if (tsStatus.Text.IndexOf("·¢Éú¹ÊÕÏ£ºÓлõÎÞµ÷¶ÈÈÎÎñ£¬ÇëÄú¼ì²éÈ·ÈÏ£¡") >= 0)
                    {

                        FrmMain.FormInstance.Voice.Speak("×éÏäÇøÈë¿âÊäËÍ»ú·¢Éú¹ÊÕÏ£ºÓлõÎÞµ÷¶ÈÈÎÎñ£¬ÇëÄú¼ì²éÈ·ÈÏ£¡", DotNetSAPI.SpeechVoiceSpeakFlags.SVSFlagsAsync);
                        //tsStatus.Text = "";
                    }
                }
            }
        }

        private void FrmControlMonitor_Resize(object sender, EventArgs e)
        {
            if (this.WindowState == FormWindowState.Maximized)
            {
                this.FormBorderStyle = FormBorderStyle.None;
            }
            else
            {
                this.FormBorderStyle = FormBorderStyle.Sizable;
            }
        }

        private void ReApplyTask_Click(object sender, EventArgs e)
        {//20110331
            try
            {
                LinkLabel bt = (LinkLabel)sender;
                int devBind = Convert.ToInt32(bt.Tag);
                device = Model.CGetInfo.GetDeviceInfo(devBind);//20110331
                if (CStaticClass.GetDevicePhotoelectric(device.SendOutDetect) != 1) return;//20110331
                DataView dv = dbo.ExceSQL(string.Format("SELECT F_DeviceIndex, F_BarCode FROM T_Base_PLC_Ask WHERE (F_BarCode<>'-') and (F_BindingDevice = {0})", devBind)).Tables[0].DefaultView;
                if (dv.Count > 0)
                {
                    cplc.clientApp.ManageStockCreateApplyAsync(dv[0]["F_BarCode"].ToString(), dv[0]["F_DeviceIndex"].ToString());
                }
            }
            catch (Exception ex)
            {
                tsStatus.Text = "ÖØÐÂÉêÇëÈÎÎñʱ£º" + ex.Message;
            }
        }

        private void HandleCompelte_Click(object sender, EventArgs e)
        {//20110412
            try
            {
                LinkLabel bt = (LinkLabel)sender;
                int deviceindex = Convert.ToInt32(bt.Tag);
                string barcode = string.Empty;
                if (CStaticClass.GetDevicePhotoelectric(deviceindex.ToString() + ".0") != 1) return;//20110331µþÅÌ»úÎÞÎï
                sql.Remove(0, sql.Length);
                sql.Append("SELECT T_Base_PLC_Ask.F_DeviceIndex,T_Base_PLC_Ask.F_BindingDevice, F_Askkind,F_TaskIndex,F_BarCode,F_Remark").Append(
                   ",F_FirstProject,F_BoxBarcode,F_TempFirstProject  FROM T_Base_Device,T_Base_PLC_Ask").Append(
                   " where  T_Base_Device.F_DeviceIndex=T_Base_PLC_Ask.F_DeviceIndex and F_BarCode<>'-' and T_Base_PLC_Ask.F_DeviceIndex=").Append(deviceindex).Append(
                   " order by T_Base_Device.F_DeviceIndex desc");
                DataView dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
                if (dv.Count > 0)
                {
                    barcode = dv[0]["F_BarCode"].ToString();
                    sql.Remove(0, sql.Length);
                    sql.Append("SELECT T_Base_PLC_Ask.F_DeviceIndex,T_Base_PLC_Ask.F_BindingDevice, F_Askkind,F_TaskIndex,F_BarCode,F_Remark").Append(
                       ",F_FirstProject,F_BoxBarcode,F_TempFirstProject  FROM T_Base_Device,T_Base_PLC_Ask").Append(
                       " where  T_Base_Device.F_DeviceIndex=T_Base_PLC_Ask.F_DeviceIndex and T_Base_PLC_Ask.F_Remark=").Append(deviceindex).Append(
                       " order by T_Base_Device.F_DeviceIndex desc");
                    dv = dbo.ExceSQL(sql.ToString()).Tables[0].DefaultView;
                    if (dv.Count > 0)
                    {
                        int i = 0;
                        //20110505һ¥µþÅÌ»úÏ´ïÃüÁîµ½µþÅÌ»ú14001
                        int dcode = Convert.ToInt32(dv[i]["F_BindingDevice"]);
                        int dpjcode = 0;
                        if (deviceindex == 14001)
                        {
                            dpjcode = 14001;
                        }
                        else
                        {
                            dpjcode = Convert.ToInt32(dv[i]["F_BoxBarcode"]);
                        }
                        StringBuilder dtime = new StringBuilder(DateTime.Now.ToString("u"));
                        dtime.Remove(dtime.Length - 1, 1);
                        int hidx = ccf.GetTempManageIdx();
                        int hmindx = ccf.GetMonitorIndex(hidx, 2);
                        string ah = string.Format("D-{0}.0;D{1}.0;I{0};I{1}", dv[i]["F_Remark"].ToString(), dv[i]["F_BoxBarcode"].ToString());
                        sql.Remove(0, sql.Length);
                        sql.Append("insert into T_Monitor_Task(F_MonitorTaskLevel,F_RouteID,F_ManageTaskIndex,F_ManageTaskKindIndex,F_MonitorIndex,").
                                Append("F_DeviceIndex,F_DeviceCommandIndex,F_UseAwayFork,F_AheadDetect,F_RunningLock,F_TxtParam) ").
                                Append("values(2,").Append(GetRouteIDsub(Convert.ToInt32(dv[i]["F_BoxBarcode"]))).Append(",").Append(hidx).Append(",2,").Append(hmindx).Append(",").Append(dpjcode).
                                 Append(",8,'-','").Append(ah).Append("','").Append(dcode.ToString()).Append("','").Append(barcode).Append("')");
                        dbo.ExecuteSql(sql.ToString());
                        sql.Remove(0, sql.Length);
                        sql.Append("update T_Base_device set F_LockedState=").Append(hmindx).Append(
                            " where F_DeviceIndex=").Append(dcode);
                        dbo.ExecuteSql(sql.ToString());
                        sql.Remove(0, sql.Length);
                        sql.Append("insert into T_Manage_Task(FID,FPALLETBARCODE,FCONTROLTASKTYPE,F_ManageTaskKindIndex,FSTARTWAREHOUSE,FSTARTDEVICE,FSTARTCELL,").
                        Append("FENDWAREHOUSE,FENDDEVICE,FENDCELL,FLANEWAY,FSTACK,FUseAwayFork,FBEGTIME,FIntoStepOK) ").
                        Append("values(").Append(hidx).Append(",'").Append(barcode).Append("',1,2,'").Append(ccf.GetWarehouseIndex()).Append("','").Append(Convert.ToInt32(dv[i]["F_BoxBarcode"])).Append("','-','").Append(ccf.GetWarehouseIndex()).Append("','"
                        ).Append(dv[i]["F_TempFirstProject"]).Append("','-',0,0,'-','").Append(dtime).Append("','1')");
                        dbo.ExecuteSql(sql.ToString());
                        cplc.client.ManageStockCreateCompleteAsync(dv[i]["F_BoxBarcode"].ToString(),barcode);
                    }
                    dbo.ExecuteSql(string.Format("UPDATE T_Base_PLC_Ask SET F_BarCode = '-' WHERE (F_DeviceIndex = {0})", deviceindex));
                    CommonClassLib.CCarryConvert.WriteDarkCasket("OPCClient", "È˹¤Ç¿ÖƵþÅÌÍê³É", deviceindex.ToString(), barcode);
                    FrmControlMonitor.FormInstance.MonitorRefresh();//20110222
                    FrmControlMonitor.FormInstance.ManagerRefresh();//20110222
                }
            }
            catch(Exception ex)
            {
                tsStatus.Text = "Ç¿ÖÆµþÅÌÍê³Éʱ£º" + ex.Message;
            }
        }
        int GetRouteIDsub(int device)
        {//20110412
            DataView dv = dbo.ExceSQL("SELECT F_RouteIDSub, F_DeviceIndex, F_RouteID FROM T_Base_Route_Device where F_DeviceIndex=" + device + "").Tables[0].DefaultView;
            if (dv.Count > 0)
            {
                return Convert.ToInt32(dv[0]["F_RouteIDSub"]);
            }
            else
            {
                return -1;
            }
        }

        private void linkLabel3_Click(object sender, EventArgs e)
        {
            if (CStaticClass.GetDevicePhotoelectric(12030, 0) == 1)
            {
                if (MessageBox.Show("ÄúÈ·ÈÏ12030ûɨµ½ÌõÂ룬ÐèÒªÈ˹¤¼ì²éÂð£¿", "²Ù×÷Ìáʾ£º", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) != DialogResult.OK)
                {
                    return;
                }
                string dtime = DateTime.Now.ToString("u");//20101028
                dtime = dtime.Substring(0, dtime.Length - 1);//20101028
                int AutoManageIdx = ccf.GetTempManageIdx();
                string Sql = "insert into T_Manage_Task(FID,FPALLETBARCODE,FCONTROLTASKTYPE,F_ManageTaskKindIndex,FSTARTWAREHOUSE,FSTARTDEVICE,FSTARTCELL," +
                    "FENDWAREHOUSE,FENDDEVICE,FENDCELL,FLANEWAY,FSTACK,FUseAwayFork,FBEGTIME) " +
                    "values(" + AutoManageIdx + ",'0000000000','3',2,'" + ccf.GetWarehouseIndex() + "','12030','-','" + ccf.GetWarehouseIndex() + "','12032','-',0,0,'-','" + dtime + "')";//20101028
                dbo.ExceSQL(Sql);
                FrmControlMonitor.FormInstance.ManagerRefresh();//20110222
            }
        }

       

        
        
        








































    }
}