//读取1号位料箱信息数据 private RfidStationInfoList ParseRfidStationInfoList(byte[] bts) { RfidStationInfoList stationInfoList = new RfidStationInfoList(); object obj = StructTransform.BytesToStruct(bts, stationInfoList.GetType()); return((RfidStationInfoList)obj); }
public void OnEVENT_CUSTOM_UPDATE_P1_INFO(ApcmEventArgs evt) { RfidStationInfoList stationInfoList = Get <RfidStationInfoList>($"{ApcmKeyConf.DataCollection}:{ApcmDevcieConfig.PROPERTY_P1_INFO}:DATA"); RfidStationInfo rfidStationInfo = Get <RfidStationInfo>($"{ApcmKeyConf.DataCollection}:{ApcmDevcieConfig.PROPERTY_P2_WORKBININFO}:DATA"); int i = 0; foreach (RfidStationInfo info in stationInfoList.RfidStationInfos) { if (info.Equals(stationInfoList.RfidStationInfos[i])) { OrderRfidStationInfos(i, stationInfoList); } i++; } Write(ApcmDevcieConfig.PROPERTY_P1_INFO, StructTransform.StructToBytes(stationInfoList)); }
public void OnEvent_P1_InfoReadDone(ApcmEventArgs evt) { RfidStationInfoList list = ParseRfidStationInfoList((byte[])((Dictionary <string, object>)evt.Data)[ApcmDevcieConfig.PROPERTY_P1_INFO]); Set($"{ApcmKeyConf.DataCollection}:{ApcmDevcieConfig.PROPERTY_P1_INFO}:DATA", list); //更新上下料信息表 PushToMes(ApcmDevcieConfig.EVENT_MES_CHARGING_STATE, new Dictionary <string, object> { ["LINE"] = SysConf.Main.AssemblyLine.Id, ["IS_READ"] = 0, ["DISPATCH_STATE"] = 1, ["FLAG"] = 2, ["NO_FROM"] = "1", ["BTRAY_ID1"] = list.RfidStationInfos[0].UID, ["BTRAY_ID2"] = list.RfidStationInfos[1].UID, ["BTRAY_ID3"] = list.RfidStationInfos[2].UID }); }
//读取1号位料箱信息数据 private RfidStationInfoList ParseRfidStationInfoList(byte[] bts) { string btrayId1 = Encoding.Unicode.GetString(bts.Take(1).ToArray()); string btrayId2 = Encoding.Unicode.GetString(bts.Skip(1).Take(1).ToArray()); string btrayId3 = Encoding.Unicode.GetString(bts.Skip(2).Take(1).ToArray()); byte[] bts4 = bts.Skip(3).Take(bts.Length - 3).ToArray(); List <RfidStationInfo> rfidStationInfos = JsonExtension.JsonToModel <List <RfidStationInfo> >(Encoding.Unicode.GetString(bts4)); RfidStationInfoList infoList = new RfidStationInfoList() { BtrayId1 = btrayId1, BtrayId2 = btrayId2, BtrayId3 = btrayId3, RfidStationInfos = rfidStationInfos }; return(infoList); }
//1号位更新排序 private RfidStationInfoList OrderRfidStationInfos(int i, RfidStationInfoList stationInfoList) { if (i == 0) { stationInfoList.RfidStationInfos[0] = stationInfoList.RfidStationInfos[1]; stationInfoList.RfidStationInfos[1] = stationInfoList.RfidStationInfos[2]; stationInfoList.RfidStationInfos[2] = new RfidStationInfo(); } else if (i == 1) { stationInfoList.RfidStationInfos[1] = stationInfoList.RfidStationInfos[2]; stationInfoList.RfidStationInfos[2] = new RfidStationInfo(); } else if (i == 2) { stationInfoList.RfidStationInfos[i] = new RfidStationInfo(); } return(stationInfoList); }
//读取料箱信息,更新MES上下料信息表 public Result PLC01ReadInfoDoneEvent(ActionArgs actionArgs) { //获取到P1Info byte[] bts = Encoding.ASCII.GetBytes(actionArgs.StepResult.Data.ToString()); RfidStationInfoList list = ParseRfidStationInfoList(bts); curentRsInfoList = list; //更新上下料信息表 RChargingState chargingState = new RChargingState() { LINE = Constant.OrderLine, IS_READ = 0, DISPATCH_STATE = 1, FLAG = 2, NO_FROM = "1", BTRAY_ID1 = list.RfidStationInfos[0].UID, BTRAY_ID2 = list.RfidStationInfos[1].UID, BTRAY_ID3 = list.RfidStationInfos[2].UID }; actionArgs.RedisClientRemote.LPush("LD:A00:MDCI:CHARGING_STATE:Q", chargingState); Logger.Device.Info($" invoke UpCHARGING_STATEEvent 更新MES上下料信息表成功"); return(Result.Success()); }