Ejemplo n.º 1
0
        private string CommandAssembly(string CommandType, string Command, params string[] Parameter)
        {
            string        strCommand                = string.Empty;
            string        strCommandFormat          = string.Empty;
            string        strCommandFormatParameter = string.Empty;
            ContainerSet  container;
            StringBuilder sbTemp;

            try
            {
                container = new ContainerSet();
                sbTemp    = new StringBuilder();

                //var query = (from a in dtRobotCommand.AsEnumerable()
                //             where a.Field<string>("Equipment_Type") == "ORC"
                //                && a.Field<string>("Equipment_Supplier") == Supplier
                //                && a.Field<string>("Command_Type") == CommandType
                //                && a.Field<string>("Action_Function") == Command
                //             select a).ToList();

                //if (query.Count == 0)
                //{
                //    throw new RowNotInTableException();
                //}

                //dtTemp = query.CopyToDataTable();
                //dtTemp.DefaultView.Sort = "Parameter_Order ASC";
                //dvTemp = dtTemp.DefaultView;

                switch (Supplier)
                {
                case "COGNEX":

                    if (Command.Equals("Read"))
                    {
                        strCommandFormat = container.StringFormat("READ({0})", Parameter) + Environment.NewLine;
                    }
                    else
                    {
                        throw new NotSupportedException();
                    }

                    break;

                case "HST":

                    if (Command.Equals("Read"))
                    {
                        strCommandFormat = string.Format("{0}{1}{2}{3}{4}", "SM", ((char)34).ToString(), "READ", ((char)34).ToString(), "0");
                    }
                    else if (Command.Equals("OnlineStatus"))
                    {
                        strCommandFormat = string.Format("SO{0}", Parameter);
                    }
                    else if (Command.Equals("GetOnline"))
                    {
                        strCommandFormat = "GO";
                    }
                    else
                    {
                        throw new NotSupportedException();
                    }

                    break;

                default:
                    throw new NotImplementedException();
                }

                strCommand = strCommandFormat + strCommandFormatParameter;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.ToString());
            }

            return(strCommand);
        }
Ejemplo n.º 2
0
        private string CommandAssembly(string Supplier, string Address, string Sequence, string CommandType, string Command, params string[] Parameter)
        {
            string        strCommand                = string.Empty;
            string        strCommandFormat          = string.Empty;
            string        strCommandFormatParameter = string.Empty;
            DataTable     dtTemp;
            DataView      dvTemp;
            ContainerSet  container;
            StringBuilder sbTemp;

            string[] strsParameter;

            try
            {
                container = new ContainerSet();
                sbTemp    = new StringBuilder();

                var query = (from a in dtRobotCommand.AsEnumerable()
                             where a.Field <string>("Equipment_Type") == "Aligner" &&
                             a.Field <string>("Equipment_Supplier") == Supplier &&
                             a.Field <string>("Command_Type") == CommandType &&
                             a.Field <string>("Action_Function") == Command
                             select a).ToList();

                if (query.Count == 0)
                {
                    throw new RowNotInTableException();
                }

                dtTemp = query.CopyToDataTable();
                dtTemp.DefaultView.Sort = "Parameter_Order ASC";
                dvTemp = dtTemp.DefaultView;

                switch (Supplier)
                {
                case "SANWA":

                    if (Parameter != null && Parameter.Length != 0)
                    {
                        if ((dvTemp.Table.Rows[0]["Parameter_ID"].ToString().Equals("Null")) && (Parameter.Length != dtTemp.Rows.Count))
                        {
                            sbTemp.Append("Equipment Type : Robot");
                            sbTemp.AppendFormat("Equipment Supplier : {0}", Supplier);
                            sbTemp.AppendFormat("Command Type : {0}", CommandType);
                            sbTemp.AppendFormat("Command : {0}", Command);
                            sbTemp.Append("Parameter list and setting list are not the same.");
                            throw new Exception(sbTemp.ToString());
                        }
                    }

                    strsParameter = Parameter;

                    for (int i = 0; i < dvTemp.Table.Rows.Count; i++)
                    {
                        Int32 itTemp = 0;

                        if (!dvTemp.Table.Rows[i]["Parameter_ID"].ToString().Equals("Null"))
                        {
                            if (int.Parse(dvTemp.Table.Rows[i]["Min_Value"].ToString()) > int.Parse(Parameter[i].ToString()))
                            {
                                throw new Exception("Exceed the minimum.");
                            }

                            if (int.Parse(dvTemp.Table.Rows[i]["Max_Value"].ToString()) < int.Parse(Parameter[i].ToString()))
                            {
                                throw new Exception("Exceed the maximum.");
                            }

                            if (dvTemp.Table.Rows[i]["Data_Value"].ToString().Equals(string.Empty))
                            {
                                if (dvTemp.Table.Rows[i]["Is_Fill"].ToString().Equals("Y"))
                                {
                                    itTemp = int.Parse(Parameter[i].ToString());

                                    if (Command.Equals("Angle"))
                                    {
                                        strsParameter[i] = itTemp.ToString().PadRight(6, '0');
                                    }
                                    else
                                    {
                                        strsParameter[i] = itTemp.ToString("D" + dvTemp.Table.Rows[i]["Values_length"].ToString());
                                    }
                                }
                            }
                            else
                            {
                                if (dvTemp.Table.Rows[i]["Data_Value"].ToString().IndexOf(Parameter[i].ToString()) < 0)
                                {
                                    throw new Exception(dvTemp.Table.Rows[i]["Parameter_ID"].ToString() + ": Setting value error.");
                                }
                            }
                        }
                    }

                    strCommandFormat = container.StringFormat(dtTemp.Rows[0]["Command_Format"].ToString(), new string[] { Address, Sequence });

                    if (strsParameter != null && strsParameter.Length != 0)
                    {
                        strCommandFormatParameter = container.StringFormat(dtTemp.Select(), strsParameter);
                    }

                    break;

                case "KAWASAKI":

                    if (Parameter != null && Parameter.Length != 0)
                    {
                        if ((dvTemp.Table.Rows[0]["Parameter_ID"].ToString().Equals("Null") || dvTemp.Table.Rows[0]["Parameter_ID"].ToString().Equals("Data") || dvTemp.Table.Rows[0]["Parameter_ID"].ToString().Equals("DateTime")
                             ) && (Parameter.Length != dtTemp.Rows.Count))
                        {
                            sbTemp.Append("Equipment Type : Robot");
                            sbTemp.AppendFormat("Equipment Supplier : {0}", Supplier);
                            sbTemp.AppendFormat("Command Type : {0}", CommandType);
                            sbTemp.AppendFormat("Command : {0}", Command);
                            sbTemp.Append("Parameter list and setting list are not the same.");
                            throw new Exception(sbTemp.ToString());
                        }
                    }

                    strsParameter = Parameter;

                    for (int i = 0; i < dvTemp.Table.Rows.Count; i++)
                    {
                        Int32 itTemp = 0;

                        if (!dvTemp.Table.Rows[i]["Parameter_ID"].ToString().Equals("Null") || !dvTemp.Table.Rows[i]["Parameter_ID"].ToString().Equals("Data"))
                        {
                            // * Value mode
                            if (dvTemp.Table.Rows[i]["Data_Value"].ToString().Equals(string.Empty))
                            {
                                if (int.Parse(dvTemp.Table.Rows[i]["Min_Value"].ToString()) > int.Parse(Parameter[i].ToString()))
                                {
                                    throw new Exception("Exceed the minimum.");
                                }

                                if (int.Parse(dvTemp.Table.Rows[i]["Max_Value"].ToString()) < int.Parse(Parameter[i].ToString()))
                                {
                                    throw new Exception("Exceed the maximum.");
                                }

                                if (dvTemp.Table.Rows[i]["Data_Value"].ToString().Equals(string.Empty))
                                {
                                    if (dvTemp.Table.Rows[i]["Is_Fill"].ToString().Equals("Y"))
                                    {
                                        itTemp           = int.Parse(Parameter[i].ToString());
                                        strsParameter[i] = itTemp.ToString("D" + dvTemp.Table.Rows[i]["Values_length"].ToString());
                                    }
                                }
                                else
                                {
                                    if (dvTemp.Table.Rows[i]["Data_Value"].ToString().IndexOf(Parameter[i].ToString()) < 0)
                                    {
                                        throw new Exception(dvTemp.Table.Rows[i]["Parameter_ID"].ToString() + ": Setting value error.");
                                    }
                                }
                            }
                            // * string mode
                            else
                            {
                                if (dvTemp.Table.Rows[i]["Data_Value"].ToString().IndexOf(strsParameter[i].ToString()) < 0)
                                {
                                    throw new Exception(dvTemp.Table.Rows[i]["Data_Value"].ToString() + ": Out of setting range.");
                                }
                            }

                            if (dvTemp.Table.Rows[i]["Parameter_ID"].ToString().Equals("DateTime"))
                            {
                                strsParameter[i] = Convert.ToDateTime(strsParameter[i]).ToString("yy/MM/dd HH:mm:ss");
                            }
                        }
                    }

                    sbTemp = new StringBuilder();
                    for (int i = 0; i < strsParameter.Length; i++)
                    {
                        sbTemp.Append(strsParameter[i].ToString());
                        sbTemp.Append(",");
                    }

                    strCommandFormat = container.StringFormat(dtTemp.Rows[0]["Command_Format"].ToString(), new string[] { sbTemp.ToString().TrimEnd(','), strCommandFormatParameter });


                    break;

                default:
                    throw new NotImplementedException();
                }

                strCommand = strCommandFormat + strCommandFormatParameter;
            }
            catch (Exception ex)
            {
                throw new Exception(ex.ToString());
            }

            return(strCommand + "\r");
        }