Beispiel #1
0
        public static void UpdateControllerStatus(string Device_ID, string Status)
        {
            try
            {
                Form         form = Application.OpenForms["FormMain"];
                DataGridView Conn_gv;
                if (form == null)
                {
                    return;
                }

                Conn_gv = form.Controls.Find("Conn_gv", true).FirstOrDefault() as DataGridView;
                if (Conn_gv == null)
                {
                    return;
                }

                if (Conn_gv.InvokeRequired)
                {
                    UpdateController ph = new UpdateController(UpdateControllerStatus);
                    Conn_gv.BeginInvoke(ph, Device_ID, Status);
                }
                else
                {
                    if (Conn_gv.DataSource == null)
                    {
                        //Conn_gv.DataSource = new List<ConnectState>();
                        Conn_gv.DataSource = new BindingList <ConnectState>();
                    }
                    //List<ConnectState> connList = (List<ConnectState>)Conn_gv.DataSource;
                    BindingList <ConnectState> connList = (BindingList <ConnectState>)Conn_gv.DataSource;

                    var find = from Ctrl in connList
                               where Ctrl.Device_ID.Equals(Device_ID)
                               select Ctrl;

                    if (find.Count() == 0)
                    {
                        ConnectState con = new ConnectState();
                        con.Device_ID         = Device_ID;
                        con.Connection_Status = Status;
                        connList.Add(con);
                    }
                    else
                    {
                        find.First().Connection_Status = Status;
                    }
                    //connList.Sort((x, y) => { return x.Device_ID.CompareTo(y.Device_ID); });
                    connList           = new BindingList <ConnectState>(connList.OrderBy(x => x.Device_ID).ToList());// fix System.IndexOutOfRangeException
                    Conn_gv.DataSource = null;
                    Conn_gv.DataSource = connList;
                    //Conn_gv.Refresh();
                    // Conn_gv.ClearSelection();
                }
            }
            catch
            {
                logger.Error("UpdateControllerStatus: Update fail.");
            }
        }
Beispiel #2
0
        private void LoadConnCfg()
        {
            ConfigReader <ControllerInfo> ControllerCfg = new ConfigReader <ControllerInfo>();

            foreach (ControllerInfo each in ControllerCfg.ReadFile("config/controllers.json"))
            {
                if (!ControllerStatus.ContainsKey(each.ControllerName))
                {
                    each.Status = "Disconnected";
                    ControllerStatus.Add(each.ControllerName, each);
                    if (!DeviceNo_cb.Items.Contains(each.DeviceNo))
                    {
                        DeviceNo_cb.Items.Add(each.DeviceNo);
                    }
                    Controller_cb.Items.Add(each.ControllerName);
                }
                if (!ControllerList.ContainsKey(each.ControllerName))
                {
                    switch (each.ControllerType)
                    {
                    case "SanwaAligner":
                        ControllerList.Add(each.ControllerName, new AlignerController(each.IPAdress, each.Port, each.CommandTimeout, each.ControllerName, this));
                        break;

                    case "SanwaRobot":
                        ControllerList.Add(each.ControllerName, new RobotController(each.IPAdress, each.Port, each.CommandTimeout, each.ControllerName, this));
                        break;

                    case "KawasakiRobot":

                        break;
                    }
                }
            }

            Conn_gv.AutoGenerateColumns = true;
            Conn_gv.DataSource          = ControllerStatus.Values.ToList();
            Conn_gv.ClearSelection();


            ConfigReader <Alarm> AlarmCfg = new ConfigReader <Alarm>();

            foreach (Alarm each in AlarmCfg.ReadFile("config/Alarm/RobotErrorCode.json"))
            {
                if (!AlarmList.ContainsKey(each.Error_Code))
                {
                    AlarmList.Add(each.Error_Code, each);
                }
            }

            foreach (string each in Directory.GetDirectories("config/Command/"))
            {
                ControllerType_cb.Items.Add(each.Substring(each.LastIndexOf("/") + 1));
            }
        }
        public static void UpdateControllerStatus(string Device_ID, string State)
        {
            try
            {
                Form         form = Application.OpenForms["Form1"];
                DataGridView Conn_gv;
                if (form == null)
                {
                    return;
                }

                Conn_gv = form.Controls.Find("Conn_gv", true).FirstOrDefault() as DataGridView;
                if (Conn_gv == null)
                {
                    return;
                }

                if (Conn_gv.InvokeRequired)
                {
                    UpdateController ph = new UpdateController(UpdateControllerStatus);
                    Conn_gv.BeginInvoke(ph, Device_ID, State);
                }
                else
                {
                    foreach (ConnectState each in ConnList)
                    {
                        if (each.Device_Id.Equals(Device_ID))
                        {
                            each.State = State;
                        }
                    }


                    Conn_gv.DataSource = null;
                    Conn_gv.DataSource = ConnList;
                    //Conn_gv.Refresh();
                    Conn_gv.ClearSelection();
                }
            }
            catch
            {
                logger.Error("UpdateControllerStatus: Update fail.");
            }
        }
Beispiel #4
0
 private void UpdateControllerStatus(string Device_ID, string Status)
 {
     if (Conn_gv.InvokeRequired)
     {
         //當InvokeRequired為true時,表示在不同的執行緒上,所以進行委派的動作!!
         UpdateController ph = new UpdateController(UpdateControllerStatus);
         Conn_gv.Invoke(ph, Device_ID, Status);
     }
     else
     {
         ControllerInfo target;
         if (ControllerStatus.TryGetValue(Device_ID, out target))
         {
             target.Status      = Status;
             Conn_gv.DataSource = ControllerStatus.Values.ToList();
             //Conn_gv.Refresh();
             Conn_gv.ClearSelection();
         }
     }
 }