Exemple #1
0
        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());
            }
        }
Exemple #2
0
        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());
            }
        }
Exemple #3
0
        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;
        }
Exemple #4
0
        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);
        }
Exemple #5
0
        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;
            }
        }