private void btnAppendlist_Click(object sender, EventArgs e) { if (txbManually.Text.Equals(string.Empty)) { return; } DataRow drTemp; string strDevice = string.Empty; SANWA.Utility.Encoder encoder; try { encoder = new SANWA.Utility.Encoder(lsbDeviceName.SelectedValue.ToString().Split(',')[0].ToString()); strDevice = lsbDeviceName.Text.ToUpper().Split(',')[0].ToString(); drTemp = dtCommandAssembly.NewRow(); drTemp["No"] = (dtCommandAssembly.Rows.Count + 1).ToString("D2");; drTemp["Device_Name"] = lsbDeviceName.Text.Split(',')[0].ToString(); drTemp["Vendor"] = lsbDeviceName.SelectedValue.ToString(); drTemp["CommandShow"] = txbManually.Text; drTemp["Controller_ID"] = lsbDeviceName.SelectedValue.ToString().Split(',')[2].ToString(); switch (lsbDeviceName.SelectedValue.ToString().Split(',')[0].ToString()) { case "SANWA": case "ATEL": drTemp["Command"] = txbManually.Text + "\r"; break; case "KAWASAKI": drTemp["Command"] = txbManually.Text + encoder.Robot.KawasakiCheckSum(txbManually.Text.Substring(1, txbManually.Text.IndexOf('>') + 1)); break; case "TDK": drTemp["Command"] = encoder.LoadPort.TDK_A(txbManually.Text); break; } dtCommandAssembly.Rows.Add(drTemp); } catch (Exception ex) { logger.Error(ex.ToString()); throw new Exception(ex.ToString()); } }
private void tsmtRunStep_Click(object sender, EventArgs e) { int ii = 0; TerminalJob job = null; ArrayList alList = null; ArrayList alDeviceList = null; SANWA.Utility.Encoder encoder; try { if (dgvCommandList.SelectedCells.Count > 0) { ii = dgvCommandList.SelectedCells[0].OwningRow.Index; if (ii >= 0) { dgvCommandList.ClearSelection(); encoder = new SANWA.Utility.Encoder(dtCommandAssembly.Rows[ii]["vendor"].ToString().Split(',')[0].ToString()); job = new TerminalJob(); alList = new ArrayList(); alDeviceList = new ArrayList(); job.Active = true; alDeviceList.Add(dtCommandAssembly.Rows[ii]["Controller_ID"].ToString()); job.Device = alDeviceList; job.IsError = new ArrayList(); job.Message = new ArrayList(); job.No = Jobs.Count + 1; alList.Add(dtCommandAssembly.Rows[ii]["Command"].ToString()); job.List = alList; Jobs.Add(job); JobLock = false; if (ii + 1 < dgvCommandList.Rows.Count) { dgvCommandList.Rows[ii + 1].Selected = true; } else { dgvCommandList.Rows[ii].Selected = true; } } } } catch (Exception ex) { logger.Error(ex.ToString()); throw new Exception(ex.ToString()); } }
public DeviceController(DeviceConfig Config, ICommandReport ReportTarget) { _ReportTarget = ReportTarget; _Config = Config; switch (Config.ConnectionType) { case "Socket": conn = new SocketClient(Config, this); break; case "ComPort": conn = new ComPortClient(Config, this); break; } _Decoder = new SANWA.Utility.Decoder(Config.Vendor); Encoder = new SANWA.Utility.Encoder(Config.Vendor); this.Name = _Config.DeviceName; this.Status = ""; this._IsConnected = false; }
public bool SendCommand(Transaction txn) { //var watch = System.Diagnostics.Stopwatch.StartNew(); bool result = false; try { if (Encoder == null) { Encoder = new SANWA.Utility.Encoder(Brand); } txn.AdrNo = AdrNo; txn.NodeType = Type; foreach (Route each in RouteTable) { if (txn.Position.Equals(each.NodeName)) { txn.Point = each.Point; break; } } switch (this.Type) { case "LoadPort": switch (txn.Method) { case Transaction.Command.LoadPortType.GetLED: txn.CommandEncodeStr = Encoder.LoadPort.LEDIndicatorStatus(); break; case Transaction.Command.LoadPortType.GetMapping: txn.CommandEncodeStr = Encoder.LoadPort.WaferSorting(EncoderLoadPort.MappingSortingType.Asc); break; case Transaction.Command.LoadPortType.GetStatus: txn.CommandEncodeStr = Encoder.LoadPort.Status(); break; case Transaction.Command.LoadPortType.InitialPos: txn.CommandEncodeStr = Encoder.LoadPort.InitialPosition(EncoderLoadPort.CommandType.Normal); break; case Transaction.Command.LoadPortType.Load: txn.CommandEncodeStr = Encoder.LoadPort.Load(EncoderLoadPort.CommandType.Normal); break; case Transaction.Command.LoadPortType.MappingLoad: txn.CommandEncodeStr = Encoder.LoadPort.MappingLoad(EncoderLoadPort.CommandType.Normal); break; case Transaction.Command.LoadPortType.MappingUnload: txn.CommandEncodeStr = Encoder.LoadPort.MapAndUnload(EncoderLoadPort.CommandType.Normal); break; case Transaction.Command.LoadPortType.Reset: txn.CommandEncodeStr = Encoder.LoadPort.Reset(EncoderLoadPort.CommandType.Normal); break; case Transaction.Command.LoadPortType.Unload: txn.CommandEncodeStr = Encoder.LoadPort.Unload(EncoderLoadPort.CommandType.Normal); break; case Transaction.Command.LoadPortType.Mapping: txn.CommandEncodeStr = Encoder.LoadPort.MappingInLoad(EncoderLoadPort.CommandType.Normal); break; case Transaction.Command.LoadPortType.GetCount: txn.CommandEncodeStr = Encoder.LoadPort.WaferQuantity(); break; } break; case "Robot": switch (txn.Method) { case Transaction.Command.RobotType.GetStatus: txn.CommandEncodeStr = Encoder.Robot.Status(AdrNo, ""); break; case Transaction.Command.RobotType.Get: txn.CommandEncodeStr = Encoder.Robot.GetWafer(AdrNo, "", txn.Arm, txn.Point, "0", txn.Slot); break; case Transaction.Command.RobotType.Put: txn.CommandEncodeStr = Encoder.Robot.PutWafer(AdrNo, "", txn.Arm, txn.Point, txn.Slot); break; case Transaction.Command.RobotType.DoubleGet: txn.CommandEncodeStr = Encoder.Robot.GetWafer(AdrNo, "", "3", txn.Point, "0", txn.Slot); break; case Transaction.Command.RobotType.DoublePut: txn.CommandEncodeStr = Encoder.Robot.PutWafer(AdrNo, "", "3", txn.Point, txn.Slot); break; case Transaction.Command.RobotType.WaitBeforeGet: txn.CommandEncodeStr = Encoder.Robot.GetWaferToStandBy(AdrNo, "", txn.Arm, txn.Point, "0", txn.Slot); break; case Transaction.Command.RobotType.GetAfterWait: txn.CommandEncodeStr = Encoder.Robot.GetWaferToContinue(AdrNo, "", txn.Arm, txn.Point, "0", txn.Slot); break; case Transaction.Command.RobotType.PutWithoutBack: txn.CommandEncodeStr = Encoder.Robot.PutWaferToDown(AdrNo, "", txn.Arm, txn.Point, txn.Slot); break; case Transaction.Command.RobotType.PutBack: txn.CommandEncodeStr = Encoder.Robot.PutWaferToContinue(AdrNo, "", txn.Arm, txn.Point, txn.Slot); break; case Transaction.Command.RobotType.GetWait: txn.CommandEncodeStr = Encoder.Robot.GetWaferToReady(AdrNo, "", txn.Arm, txn.Point, txn.Slot); break; case Transaction.Command.RobotType.PutWait: txn.CommandEncodeStr = Encoder.Robot.PutWaferToReady(AdrNo, "", txn.Arm, txn.Point, txn.Slot); break; case Transaction.Command.RobotType.RobotHome: txn.CommandEncodeStr = Encoder.Robot.Home(AdrNo, ""); break; case Transaction.Command.RobotType.WaferRelease: txn.CommandEncodeStr = Encoder.Aligner.WaferReleaseHold(AdrNo, "", txn.Arm); break; case Transaction.Command.RobotType.WaferHold: txn.CommandEncodeStr = Encoder.Aligner.WaferHold(AdrNo, ""); break; case Transaction.Command.RobotType.RobotServo: txn.CommandEncodeStr = Encoder.Robot.ServoOn(AdrNo, "", txn.Arm); break; case Transaction.Command.RobotType.RobotMode: txn.CommandEncodeStr = Encoder.Robot.Mode(AdrNo, "", txn.Arm); break; case Transaction.Command.RobotType.Reset: txn.CommandEncodeStr = Encoder.Robot.ErrorReset(AdrNo, ""); break; case Transaction.Command.RobotType.RobotSpeed: txn.CommandEncodeStr = Encoder.Robot.setSpeed(AdrNo, "", txn.Arm); break; } break; case "Aligner": switch (txn.Method) { case Transaction.Command.AlignerType.AlignerHome: txn.CommandEncodeStr = Encoder.Aligner.Home(AdrNo, ""); break; case Transaction.Command.AlignerType.Align: txn.CommandEncodeStr = Encoder.Aligner.Align(AdrNo, "", txn.Angle); break; case Transaction.Command.AlignerType.Retract: txn.CommandEncodeStr = Encoder.Aligner.Retract(AdrNo, ""); break; case Transaction.Command.AlignerType.WaferRelease: txn.CommandEncodeStr = Encoder.Aligner.WaferReleaseHold(AdrNo, "", txn.Arm); break; case Transaction.Command.AlignerType.WaferHold: txn.CommandEncodeStr = Encoder.Aligner.WaferHold(AdrNo, ""); break; case Transaction.Command.AlignerType.AlignerServo: txn.CommandEncodeStr = Encoder.Aligner.ServoOn(AdrNo, "", txn.Arm); break; case Transaction.Command.AlignerType.AlignerMode: txn.CommandEncodeStr = Encoder.Aligner.Mode(AdrNo, "", txn.Arm); break; case Transaction.Command.AlignerType.AlignerOrigin: txn.CommandEncodeStr = Encoder.Aligner.OrginSearch(AdrNo, ""); break; case Transaction.Command.AlignerType.Reset: txn.CommandEncodeStr = Encoder.Aligner.ErrorReset(AdrNo, ""); break; case Transaction.Command.AlignerType.AlignerSpeed: txn.CommandEncodeStr = Encoder.Aligner.setSpeed(AdrNo, "", txn.Arm); break; } break; } if (txn.CommandEncodeStr == null) { string tt = ""; } if (!txn.CommandEncodeStr.Equals("")) { if (txn.CommandEncodeStr.IndexOf("CMD:") != -1 || txn.CommandEncodeStr.IndexOf("MOV:") != -1) { txn.CommandType = "CMD"; } else if (txn.CommandEncodeStr.IndexOf("GET:") != -1) { txn.CommandType = "GET"; } else if (txn.CommandEncodeStr.IndexOf("SET:") != -1) { txn.CommandType = "SET"; } } if (ControllerManagement.Get(Controller).DoWork(txn)) { result = true; } else { logger.Debug("SendCommand fail."); result = false; } } catch (Exception e) { logger.Error("SendCommand " + e.Message + "\n" + e.StackTrace); } //watch.Stop(); //var elapsedMs = watch.ElapsedMilliseconds; //logger.Info("SendCommand ProcessTime:"+ elapsedMs.ToString()); return(result); }
private void btnSend_Click(object sender, EventArgs e) { if (txbManually.Text.Equals(string.Empty)) { return; } string strDevice = string.Empty; SANWA.Utility.Encoder encoder; TerminalJob job = null; ArrayList alList = null; ArrayList alDeviceList = null; try { encoder = new SANWA.Utility.Encoder(lsbDeviceName.SelectedValue.ToString().Split(',')[0].ToString()); job = new TerminalJob(); alList = new ArrayList(); alDeviceList = new ArrayList(); alDeviceList.Add(lsbDeviceName.SelectedValue.ToString().Split(',')[2].ToString()); switch (lsbDeviceName.SelectedValue.ToString().Split(',')[0].ToString()) { case "ATEL": case "SANWA": job.Active = true; job.Device = alDeviceList; job.IsError = new ArrayList(); job.Message = new ArrayList(); job.No = Jobs.Count + 1; alList.Add(txbManually.Text + "\r"); job.List = alList; Jobs.Add(job); JobLock = false; break; case "KAWASAKI": job.Active = true; job.Device = alDeviceList; job.IsError = new ArrayList(); job.Message = new ArrayList(); job.No = Jobs.Count + 1; alList.Add(txbManually.Text + encoder.Robot.KawasakiCheckSum(txbManually.Text.Substring(1, txbManually.Text.IndexOf('>') + 1)) + "\r\n"); job.List = alList; Jobs.Add(job); JobLock = false; break; case "TDK": job.Active = true; job.Device = alDeviceList; job.IsError = new ArrayList(); job.Message = new ArrayList(); job.No = Jobs.Count + 1; alList.Add(encoder.LoadPort.TDK_A(txbManually.Text)); job.List = alList; Jobs.Add(job); JobLock = false; break; default: job.Active = true; job.Device = alDeviceList; job.IsError = new ArrayList(); job.Message = new ArrayList(); job.No = Jobs.Count + 1; alList.Add(txbManually.Text + "\r"); job.List = alList; Jobs.Add(job); JobLock = false; break; } } catch (Exception ex) { logger.Error(ex.ToString()); throw new Exception(ex.ToString()); } finally { btnSend.Enabled = true; } }