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); }
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"); }