/// <summary> /// Polulate the mapping list with DataName and PlcAddress relationship, extract Word/Bit address info and store in PlcWordAddress model /// </summary> /// <param name="plcDataAddressRecords">DataName and PlcAddress records list, raw from DB</param> /// <param name="plcDataAddressMappings">Empty mapping list</param> /// <returns>Filled mapping list, with Word/Bit address info</returns> public static List <PlcDataAddressMappingModel> PopulatePlcDataAddressMappings(List <PlcDataAddressRecordModel> plcDataAddressRecords, List <PlcDataAddressMappingModel> plcDataAddressMappings) { foreach (var Record in plcDataAddressRecords) { //get the memory area code string string MemArea = Record.PlcAddress.Substring(0, 1); //get the word address as int int WordAddress; int.TryParse(Record.PlcAddress.Split('.')[0].Replace(MemArea, ""), out WordAddress); //get the bit address as int int?BitAddress = null; if (Record.PlcAddress.Contains(".")) { int bitAddress; //int.TryParse(Record.PlcAddress.Split('.')[1], out bitAddress); if (int.TryParse(Record.PlcAddress.Split('.')[1], out bitAddress)) { BitAddress = (int?)bitAddress; } //BitAddress = int.TryParse(Record.PlcAddress.Split('.')[1], out bitAddress) ? BitAddress:bitAddress; } else { BitAddress = null; } PlcDataAddressMappingModel temp = new PlcDataAddressMappingModel(); temp.PlcDataAddressRecord = Record; temp.PlcWordAddress.MemoryArea = MemArea; temp.PlcWordAddress.WordAddress = WordAddress; temp.PlcWordAddress.BitAddress = BitAddress; plcDataAddressMappings.Add(temp); } return(plcDataAddressMappings); }
public static List <PlcDataAddressMappingModel> AppendFullUintAddressMappings (List <TypeUintModel> AllTypeUint, List <PlcDataAddressMappingModel> plcDataAddressMappings) { List <PlcDataAddressMappingModel> tempList = new List <PlcDataAddressMappingModel>(); //PlcDataAddressMappingModel temp = new PlcDataAddressMappingModel(); int i = 1; int maxId = plcDataAddressMappings.Max(x => x.PlcDataAddressRecord.id); foreach (var item in AllTypeUint) { PlcDataAddressMappingModel temp = plcDataAddressMappings.Find(x => x.PlcDataAddressRecord.DataName == item.Name).DeepCopy(); temp.PlcDataAddressRecord.id = maxId + i; temp.PlcWordAddress.WordAddress++; temp.PlcDataAddressRecord.PlcAddress = temp.PlcWordAddress.MemoryArea + temp.PlcWordAddress.WordAddress.ToString(); tempList.Add(temp); i++; } plcDataAddressMappings.AddRange(tempList); return(plcDataAddressMappings); }