Ejemplo n.º 1
0
        private void button6_Click(object sender, EventArgs e)
        {
            CassetteData datainfo = new CassetteData();

            datainfo.CSTID       = textBox1.Text;
            datainfo.Carrier_LOC = comboBox5.Text;
            datainfo.BOXID       = textBox2.Text;

            //BCApp.SCApplication.TransferService.PortWaitOut(datainfo);
        }
Ejemplo n.º 2
0
        private void button7_Click(object sender, EventArgs e)
        {
            CassetteData datainfo = new CassetteData();

            //datainfo.CSTID = textBox1.Text;
            datainfo.Carrier_LOC = comboBox5.Text;
            //datainfo.BOXID = textBox2.Text;

            BCApp.SCApplication.TransferService.PortCarrierRemoved(datainfo, false, "DemoUI");
        }
Ejemplo n.º 3
0
        private void button2_Click(object sender, EventArgs e)
        {
            //CassetteData.OHCV_STAGE stage = (CassetteData.OHCV_STAGE)(comboBox7.SelectedIndex);

            CassetteData datainfo = new CassetteData();

            //datainfo.CSTID = textBox1.Text;
            datainfo.Carrier_LOC = comboBox5.Text;
            datainfo.BOXID       = textBox2.Text;

            BCApp.SCApplication.TransferService.PortPositionWaitOut(datainfo, comboBox7.SelectedIndex, "testUI");
        }
 public void DeleteCassetteData(DBConnection_EF conn, CassetteData cassettedata)
 {
     try
     {
         conn.CassetteData.Remove(cassettedata);
         conn.SaveChanges();
     }
     catch (Exception ex)
     {
         logger.Warn(ex);
         throw;
     }
 }
Ejemplo n.º 5
0
 public CassetteData loadCassetteDataByDU_BoxID(CassetteData cstData)
 {
     try
     {
         using (DBConnection_EF con = DBConnection_EF.GetUContext())
         {
             //return con.CassetteData.Where(data => data.BOXID == boxid).FirstOrDefault();
             return(cassettedataDao.LoadCassetteDataByDU_BOXID(con, cstData));
         }
     }
     catch (Exception ex)
     {
         logger.Error(ex, "Exception");
         return(null);
     }
 }
Ejemplo n.º 6
0
        public bool DeleteCSTbyBoxId(string boxid)
        {
            bool isSuccsess = true;

            try
            {
                using (DBConnection_EF con = DBConnection_EF.GetUContext())
                {
                    CassetteData csidData = con.CassetteData.Where(data => data.BOXID.Trim() == boxid.Trim()).First();
                    cassettedataDao.DeleteCassetteData(con, csidData);
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception");
                isSuccsess = false;
            }

            return(isSuccsess);
        }
Ejemplo n.º 7
0
        public void TestCassette()
        {
            bool[] data = {
                       false,
                       false, false, false, false, false, false, false, false,
                       true, true
                     };
              List<bool> list = new List<bool>();
              list.AddRange(data);
              CassetteData cassette =
              new CassetteData(name, new ByteData(new BinaryData(list)));

              Assert.AreEqual(name, cassette.Filename, "Name equality.");

              Assert.AreEqual(1, cassette.Length, "Only one byte passed.");
              IEnumerator<byte> ie = cassette.GetEnumerator();
              ie.MoveNext();
              Assert.AreEqual(0, ie.Current, "Expected value gained.");
              Assert.IsFalse(ie.MoveNext(), "Only one value in enumerator.");
        }
Ejemplo n.º 8
0
        public bool UpdateCSTID(string loc, string boxid, string cstid, string lotID)
        {
            bool isSuccess = true;

            try
            {
                using (DBConnection_EF con = DBConnection_EF.GetUContext())
                {
                    CassetteData cstData = con.CassetteData.Where(data => data.Carrier_LOC == loc && data.BOXID == boxid).First();
                    cstData.CSTID = cstid.Trim();
                    cstData.LotID = lotID.Trim();
                    cassettedataDao.UpdateCassetteData(con);
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception");
                isSuccess = false;
            }
            return(isSuccess);
        }
Ejemplo n.º 9
0
        public bool insertCassetteData(CassetteData datainfo)
        {
            bool isSuccess = true;

            try
            {
                datainfo.CSTID       = datainfo.CSTID.Trim();
                datainfo.BOXID       = datainfo.BOXID.Trim();
                datainfo.Carrier_LOC = datainfo.Carrier_LOC.Trim();
                datainfo.CSTInDT     = DateTime.Now.ToString("yy/MM/dd HH:mm:ss");
                datainfo.TrnDT       = DateTime.Now.ToString("yy/MM/dd HH:mm:ss");

                using (DBConnection_EF con = DBConnection_EF.GetUContext())
                {
                    cassettedataDao.insertCassetteData(con, datainfo);
                }

                if (scApp.TransferService.isShelfPort(datainfo.Carrier_LOC)) //若目的為儲位,設定為有卡匣
                {
                    scApp.ShelfDefBLL.updateStatus(datainfo.Carrier_LOC, ShelfDef.E_ShelfState.Stored);
                }

                TransferServiceLogger.Info
                (
                    DateTime.Now.ToString("HH:mm:ss.fff ")
                    + "OHB >> DB|卡匣新增成功:" + scApp.TransferService.GetCstLog(datainfo)
                );

                if (scApp.TransferService.isUnitType(datainfo.Carrier_LOC, Service.UnitType.AGV))
                {
                    scApp.TransferService.Redis_AddCstBox(datainfo);
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception");
                isSuccess = false;
            }
            return(isSuccess);
        }
Ejemplo n.º 10
0
        private void GenerateShelfToNtb(AVEHICLE vh, List <CassetteData> cassetteDatas)//A0.01
        {
            //1.找出所有CVport
            var all_cv_port = scApp.PortDefBLL.cache.loadCVPortDefs();
            //2.嘗試找出在CVport 中目前是out mode 的所有port
            var all_cv_port_out_mode = all_cv_port.Where(port => IsGetReady_outMode(port)).ToList();

            foreach (var out_mode_port in all_cv_port_out_mode)
            {
                //3. 若開頭為OHBLOOP的是連接LOOP的CV 而非NTB 故排除
                var target_port_info = scApp.TransferService.GetPLC_PortData(out_mode_port.PLCPortID);
                if (out_mode_port.PLCPortID.StartsWith("B7_OHBLOOP"))
                {
                    continue;
                }
                else
                {
                    //找出在儲位中的Cassette
                    cassetteDatas = cassetteDatas.Where(cst => cst.Carrier_LOC.StartsWith("10") ||
                                                        cst.Carrier_LOC.StartsWith("11") ||
                                                        cst.Carrier_LOC.StartsWith("21") ||
                                                        cst.Carrier_LOC.StartsWith("20") ||
                                                        cst.Carrier_LOC.StartsWith("2POHT100OHB")).
                                    ToList();
                    //取第一筆CST
                    CassetteData chosenCst = cassetteDatas[0];
                    scApp.MapBLL.getAddressID(chosenCst.Carrier_LOC, out string from_adr);
                    bool isSuccess = true;

                    //從該選取的CST shelf 位置搬到要放置的NTB
                    isSuccess &= scApp.CMDBLL.doCreatTransferCommand(vh.VEHICLE_ID, "", chosenCst.CSTID.Trim(),
                                                                     E_CMD_TYPE.LoadUnload,
                                                                     chosenCst.Carrier_LOC,
                                                                     out_mode_port.PLCPortID, 0, 0,
                                                                     chosenCst.BOXID.Trim(), chosenCst.LotID,
                                                                     from_adr, out_mode_port.ADR_ID);
                }
            }
        }
Ejemplo n.º 11
0
 public CassetteData LoadCassetteDataByDU_BOXID(DBConnection_EF conn, CassetteData cstData)
 {
     try
     {
         if (cstData == null)
         {
             return(null);
         }
         else
         {
             var result = conn.CassetteData.Where
                              (x => x.BOXID.Trim() == cstData.BOXID.Trim() &&
                              x.Carrier_LOC.Trim() != cstData.Carrier_LOC.Trim()
                              ).FirstOrDefault();
             return(result);
         }
     }
     catch (Exception ex)
     {
         logger.Warn(ex);
         throw;
     }
 }
Ejemplo n.º 12
0
        public string GetCassetteLocByBoxID(string boxid)
        {
            string cstLoc = "";

            try
            {
                using (DBConnection_EF con = DBConnection_EF.GetUContext())
                {
                    CassetteData cstData = con.CassetteData.Where(data => data.BOXID == boxid).FirstOrDefault();
                    if (cstData != null)
                    {
                        cstLoc = cstData.Carrier_LOC;
                    }

                    return(cstLoc);
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception");
                return(cstLoc);
            }
        }
Ejemplo n.º 13
0
 public abstract bool S6F11SendCarrierInstallCompleted(CassetteData cst_id, List <AMCSREPORTQUEUE> reportQueues = null);
Ejemplo n.º 14
0
 public override bool S6F11SendCarrierWaitOut(CassetteData cst, string portType, List <AMCSREPORTQUEUE> reportQueues = null)
 {
     return(true);
 }
Ejemplo n.º 15
0
 public override bool S6F11SendCarrierStoredAlt(ACMD_MCS cmd, CassetteData cassette, List <AMCSREPORTQUEUE> reportQueues = null)
 {
     return(true);
 }
Ejemplo n.º 16
0
 public override bool S6F11SendCarrierStored(CassetteData cst, List <AMCSREPORTQUEUE> reportQueues = null)
 {
     return(true);
 }
Ejemplo n.º 17
0
 public abstract bool S6F11SendCarrierWaitOut(CassetteData cst, string portType, List <AMCSREPORTQUEUE> reportQueues                 = null);
Ejemplo n.º 18
0
 public abstract bool S6F11SendCarrierStoredAlt(ACMD_MCS cmd, CassetteData cassette, List <AMCSREPORTQUEUE> reportQueues = null);
Ejemplo n.º 19
0
 public override bool S6F11SendTransferCompleted(ACMD_MCS cmd, CassetteData cassette, string result_code, List <AMCSREPORTQUEUE> reportQueues = null)
 {
     return(true);
 }
Ejemplo n.º 20
0
 public override bool S6F11SendCarrierTransferring(ACMD_MCS cmd, CassetteData cassette, string ohtName, List <AMCSREPORTQUEUE> reportQueues = null)
 {
     return(true);
 }
Ejemplo n.º 21
0
        public bool UpdateCSTLoc(string boxid, string loc, int stage)
        {
            bool isSuccess = true;

            try
            {
                CassetteData portCSTData = loadCassetteDataByLoc(loc);  //檢查同個位置是否有帳

                if (portCSTData != null)
                {
                    if (portCSTData.BOXID.Trim() == boxid.Trim())
                    {
                        TransferServiceLogger.Info
                        (
                            DateTime.Now.ToString("HH:mm:ss.fff ")
                            + "OHB >> DB|UpdateCSTLoc   發現更新位置有帳,BOXID相同不做更新:" + scApp.TransferService.GetCstLog(portCSTData)
                        );

                        return(true);
                    }

                    if (portCSTData.Stage == stage)
                    {
                        TransferServiceLogger.Info
                        (
                            DateTime.Now.ToString("HH:mm:ss.fff ")
                            + "OHB >> DB|UpdateCSTLoc   發現更新位置有帳,刪除:" + scApp.TransferService.GetCstLog(portCSTData)
                        );

                        scApp.ReportBLL.ReportCarrierRemovedCompleted(portCSTData.CSTID, portCSTData.BOXID);
                    }
                }

                using (DBConnection_EF con = DBConnection_EF.GetUContext())
                {
                    CassetteData cstData = cassettedataDao.LoadCassetteDataByBoxID(con, boxid);
                    string       time    = DateTime.Now.ToString("yy/MM/dd HH:mm:ss");

                    if (scApp.TransferService.isUnitType(cstData.Carrier_LOC, Service.UnitType.SHELF))
                    {
                        scApp.ShelfDefBLL.updateStatus(cstData.Carrier_LOC, ShelfDef.E_ShelfState.EmptyShelf);
                    }

                    if (scApp.TransferService.isUnitType(loc, Service.UnitType.SHELF))
                    {
                        scApp.ShelfDefBLL.updateStatus(loc, ShelfDef.E_ShelfState.Stored);
                        cstData.StoreDT = time;
                    }
                    else if (scApp.TransferService.isCVPort(loc))
                    {
                        if (stage == 1)
                        {
                            cstData.WaitOutOPDT = time;
                        }

                        int portStage = scApp.TransferService.portINIData[loc].Stage;

                        if (stage == portStage)
                        {
                            cstData.WaitOutLPDT = time;
                        }
                    }

                    cstData.Carrier_LOC = loc;  //目前卡匣在哪
                    cstData.Stage       = stage;
                    cstData.TrnDT       = DateTime.Now.ToString("yy/MM/dd HH:mm:ss");

                    cassettedataDao.UpdateCassetteData(con);

                    TransferServiceLogger.Info
                    (
                        DateTime.Now.ToString("HH:mm:ss.fff ")
                        + "OHB >> DB|UpdateCSTLoc   " + scApp.TransferService.GetCstLog(cstData)
                    );
                }
            }
            catch (Exception ex)
            {
                TransferServiceLogger.Error(ex, "UpdateCSTLoc");
                logger.Error(ex, "Exception");
                isSuccess = false;
            }
            return(isSuccess);
        }
Ejemplo n.º 22
0
        public void WriteCassetteData(CassetteData data, string location)
        {
            Stream stream = GetStream(location);

              BinaryWriter writer = new BinaryWriter(stream);
              int size = 0;

              // The "RIFF" chunk descriptor.
              writer.Write("RIFF".ToCharArray());
              writer.Write((Int32) (36 + size));
              writer.Write("WAVE".ToCharArray());

              // The "fmt" sub-chunk.
              writer.Write("fmt ".ToCharArray());
              writer.Write((Int32) 16);
              writer.Write((Int16) 1);
              writer.Write((Int16) 1);
              writer.Write((Int32) SAMPLE_RATE);
              writer.Write((Int32) SAMPLE_RATE * BLOCK_ALIGN);
              writer.Write((Int16) BLOCK_ALIGN);
              writer.Write((Int16) BITS_PER_SAMPLE);

              // The "data" sub-chunk.
              writer.Write("data".ToCharArray());
              writer.Write((Int32) size);

              for (int i = 0; i < 4800000; ++i) {
            writer.Write(0);
              }

              for (int i = 0; i < 3600; ++i) {
            Write(writer, true);
              }

              Write(writer, 26);
              char[] name = data.Filename.ToCharArray();

              if (name.Length > 16) {
            throw new Exception("Filename of unexpected length.");
              }

              foreach (char c in name) {
            Write(writer, (byte) c);
              }

              for (int i = name.Length; i < 16; ++i) {
            Write(writer, (byte) ' ');
              }

              // TODO Program length, start address, parity.

              Write(writer, false);
              Write(writer, false);

              for (int i = 0; i < 480000; ++i) {
            writer.Write(0);
              }

              for (int i = 0; i < 3600; ++i) {
            Write(writer, true);
              }

              Write(writer, 27);

              foreach (byte b in data) {
            Write(writer, b);
              }

              // TODO Parity.

              Write(writer, false);
              Write(writer, false);

              writer.Close();
              stream.Close();
              stream.Dispose();
        }
Ejemplo n.º 23
0
        private void RegisterCassetteEvent()
        {
            Post["CassetteData/{Action}/{UserID}"] = (p) =>
            {
                var    scApp      = SCApplication.getInstance();
                bool   isSuccess  = true;
                bool   allSuccess = true;
                string result     = string.Empty;
                string action     = p.Action.Value;
                string userid     = p.UserID.Value;
                string resultJson = string.Empty;
                using (Stream stream = Request.Body)
                {
                    using (StreamReader reader = new StreamReader(stream, Encoding.GetEncoding("UTF-8")))
                    {
                        resultJson = reader.ReadToEnd();
                    }
                }
                dynamic          d                = JsonConvert.DeserializeObject(resultJson);
                string           box_id           = d.box_id?.Value;
                string           cst_id           = d.cst_id?.Value;
                string           cst_loc          = d.cst_loc?.Value;
                UserOperationLog userOperationLog = new UserOperationLog()
                {
                    Action       = action,
                    UserID       = userid,
                    OldCarrierID = cst_id ?? string.Empty,
                    CarrierLoc   = cst_loc ?? string.Empty,
                    BOXID        = box_id ?? string.Empty,
                    ActionTime   = DateTime.Now,
                };
                try
                {
                    switch (action)
                    {
                    case "StateUpdate":
                        int state = (int)d.state?.Value;
                        isSuccess = scApp.CassetteDataBLL.UpdateCSTState(box_id, state);
                        result    = isSuccess ? "OK" : "Update Cassette State failed.";
                        break;

                    case "LocationUpdate":
                        string s  = scApp.TransferService.Manual_DeleteCst(cst_id, box_id);
                        string ss = scApp.TransferService.Manual_InsertCassette(cst_id, box_id, cst_loc);
                        if (s != "OK" || ss != "OK")
                        {
                            isSuccess = false;
                        }
                        result = isSuccess ? "OK" : "Update Cassette Location failed.";

                        break;

                    case "InstallCST_BOX":
                        CassetteData cassette = scApp.CassetteDataBLL.loadCassetteDataByCSTID(cst_id);
                        result = scApp.TransferService.Manual_InsertCassette(cst_id, box_id, cst_loc);
                        break;

                    case "RemoveCST_BOX":
                        string sss = scApp.TransferService.Manual_DeleteCst(cst_id, box_id);
                        isSuccess = sss == "OK" ? true : false;
                        result    = isSuccess ? "OK" : "Remove Cassette failed.";
                        break;

                    case "ScanCST_BOX":
                        string ssss = scApp.TransferService.SetScanCmd(cst_id, box_id, cst_loc);
                        isSuccess = ssss == "OK" ? true : false;
                        result    = isSuccess ? "OK" : "Remove Cassette failed.";
                        break;
                    }
                    ;
                }
                catch (Exception ex)
                {
                    isSuccess = false;
                    result    = "Execption happend!";
                    logger.Error(ex, "Execption:");
                }

                SCUtility.UserOperationLog(userOperationLog);
                var response = (Response)result;
                response.ContentType = restfulContentType;
                return(response);
            };
        }
Ejemplo n.º 24
0
 public abstract bool S6F11SendCarrierRemovedFromPort(CassetteData cst, string Handoff_Type, List <AMCSREPORTQUEUE> reportQueues = null);
Ejemplo n.º 25
0
 public abstract bool S6F11SendTransferCompleted(ACMD_MCS cmd, CassetteData cassette, string result_code, List <AMCSREPORTQUEUE> reportQueues = null);
Ejemplo n.º 26
0
 public override bool S6F11SendCarrierIDRead(CassetteData cst, string IDreadStatus, List <AMCSREPORTQUEUE> reportQueues = null)
 {
     return(true);
 }
Ejemplo n.º 27
0
 public override bool S6F11SendCarrierRemovedFromPort(CassetteData cst, string Handoff_Type, List <AMCSREPORTQUEUE> reportQueues = null)
 {
     return(true);
 }
Ejemplo n.º 28
0
 public abstract bool S6F11SendCarrierWaitIn(CassetteData cst, List <AMCSREPORTQUEUE> reportQueues = null);
Ejemplo n.º 29
0
 public abstract bool S6F11SendCarrierTransferring(ACMD_MCS cmd, CassetteData cassette, string ohtName, List <AMCSREPORTQUEUE> reportQueues = null);
Ejemplo n.º 30
0
 public abstract bool S6F11SendCarrierIDRead(CassetteData cst, string IDreadStatus, List <AMCSREPORTQUEUE> reportQueues    = null);
        private void ShelfTest()
        {
            List <AVEHICLE> vhs = scApp.VehicleBLL.cache.loadVhs();

            foreach (AVEHICLE vh in vhs)
            {
                if (vh.isTcpIpConnect &&
                    vh.MODE_STATUS == ProtocolFormat.OHTMessage.VHModeStatus.AutoRemote &&
                    vh.ACT_STATUS == ProtocolFormat.OHTMessage.VHActionStatus.NoCommand &&
                    !SCUtility.isEmpty(vh.CUR_ADR_ID) &&
                    !scApp.CMDBLL.isCMD_OHTCExcuteByVh(vh.VEHICLE_ID))
                {
                    List <CassetteData> cassetteDatas = scApp.CassetteDataBLL.loadCassetteData();
                    if (cassetteDatas == null || cassetteDatas.Count() == 0)
                    {
                        return;
                    }
                    //找一份目前儲位的列表
                    if (shelfDefs == null || shelfDefs.Count == 0)
                    {
                        shelfDefs = scApp.ShelfDefBLL.LoadEnableShelf();
                    }
                    //如果取完還是空的 就跳出去
                    if (shelfDefs == null || shelfDefs.Count == 0)
                    {
                        return;
                    }
                    //取得目前當前在線內的Carrier
                    //找出在儲位中的Cassette
                    cassetteDatas = cassetteDatas.Where(cst => cst.Carrier_LOC.StartsWith("10") ||
                                                        cst.Carrier_LOC.StartsWith("11") ||
                                                        cst.Carrier_LOC.StartsWith("21") ||
                                                        cst.Carrier_LOC.StartsWith("20")).
                                    ToList();
                    List <string> current_cst_at_shelf_id = cassetteDatas.
                                                            Select(cst => SCUtility.Trim(cst.Carrier_LOC, true)).
                                                            ToList();
                    //刪除目前cst所在的儲位,讓他排除在Cycle Run的列表中
                    foreach (var shelf in shelfDefs.ToList())
                    {
                        if (current_cst_at_shelf_id.Contains(SCUtility.Trim(shelf.ShelfID)))
                        {
                            shelfDefs.Remove(shelf);
                        }
                    }

                    //隨機找出一個要放置的shelf
                    CassetteData process_cst      = cassetteDatas[0];
                    int          task_RandomIndex = rnd_Index.Next(shelfDefs.Count - 1);
                    ShelfDef     target_shelf_def = shelfDefs[task_RandomIndex];
                    scApp.MapBLL.getAddressID(process_cst.Carrier_LOC, out string from_adr);
                    bool isSuccess = true;
                    isSuccess &= scApp.CMDBLL.doCreatTransferCommand(vh.VEHICLE_ID, "", process_cst.CSTID.Trim(),
                                                                     E_CMD_TYPE.LoadUnload,
                                                                     process_cst.Carrier_LOC,
                                                                     target_shelf_def.ShelfID, 0, 0,
                                                                     process_cst.BOXID.Trim(), process_cst.LotID,
                                                                     from_adr, target_shelf_def.ADR_ID);
                    shelfDefs.Remove(target_shelf_def);
                }
            }
        }