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); }
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"); }
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; } }
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); } }
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); }
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."); }
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); }
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); }
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); } } }
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; } }
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); } }
public abstract bool S6F11SendCarrierInstallCompleted(CassetteData cst_id, List <AMCSREPORTQUEUE> reportQueues = null);
public override bool S6F11SendCarrierWaitOut(CassetteData cst, string portType, List <AMCSREPORTQUEUE> reportQueues = null) { return(true); }
public override bool S6F11SendCarrierStoredAlt(ACMD_MCS cmd, CassetteData cassette, List <AMCSREPORTQUEUE> reportQueues = null) { return(true); }
public override bool S6F11SendCarrierStored(CassetteData cst, List <AMCSREPORTQUEUE> reportQueues = null) { return(true); }
public abstract bool S6F11SendCarrierWaitOut(CassetteData cst, string portType, List <AMCSREPORTQUEUE> reportQueues = null);
public abstract bool S6F11SendCarrierStoredAlt(ACMD_MCS cmd, CassetteData cassette, List <AMCSREPORTQUEUE> reportQueues = null);
public override bool S6F11SendTransferCompleted(ACMD_MCS cmd, CassetteData cassette, string result_code, List <AMCSREPORTQUEUE> reportQueues = null) { return(true); }
public override bool S6F11SendCarrierTransferring(ACMD_MCS cmd, CassetteData cassette, string ohtName, List <AMCSREPORTQUEUE> reportQueues = null) { return(true); }
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); }
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(); }
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); }; }
public abstract bool S6F11SendCarrierRemovedFromPort(CassetteData cst, string Handoff_Type, List <AMCSREPORTQUEUE> reportQueues = null);
public abstract bool S6F11SendTransferCompleted(ACMD_MCS cmd, CassetteData cassette, string result_code, List <AMCSREPORTQUEUE> reportQueues = null);
public override bool S6F11SendCarrierIDRead(CassetteData cst, string IDreadStatus, List <AMCSREPORTQUEUE> reportQueues = null) { return(true); }
public override bool S6F11SendCarrierRemovedFromPort(CassetteData cst, string Handoff_Type, List <AMCSREPORTQUEUE> reportQueues = null) { return(true); }
public abstract bool S6F11SendCarrierWaitIn(CassetteData cst, List <AMCSREPORTQUEUE> reportQueues = null);
public abstract bool S6F11SendCarrierTransferring(ACMD_MCS cmd, CassetteData cassette, string ohtName, List <AMCSREPORTQUEUE> reportQueues = null);
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); } } }