public void SortPlcAddressForUTTes04() { var eventInfoes = new List <DataAddress> { new DataAddress() { Value = "DM001" }, new DataAddress() { Value = "DM003" }, new DataAddress() { Value = "DM005" }, new DataAddress() { Value = "DM006" } }; var result = PlcAddressSortHelper.Sort <short>(eventInfoes); Assert.AreEqual(1, result.AddressSegments.Count()); Assert.IsTrue(result.AddressSegments.Any(e => e.StartAddress.Value == "DM005")); Assert.AreEqual(2, result.AddressNotSegment.Count()); Assert.IsTrue(result.AddressNotSegment.Addresses.Any(e => e.Value == "DM001")); Assert.IsTrue(result.AddressNotSegment.Addresses.Any(e => e.Value == "DM003")); }
private List <Tuple <DataAddress, TValue> > ScanAddress(IPlc plc, List <EventInfo <TValue> > eventInfoes) { var result = new List <Tuple <DataAddress, TValue> >(); SortResult sortResult = InMemoryCache.GetOrAdd <SortResult>(eventInfoes.GetHashCode().ToString(), key => { var r = new SortResult(); var distinctPlcAddresses = eventInfoes.Select(e => (e.Event as EventBase).PlcAddress).Distinct(); r.AddressNotSegment.Addresses = distinctPlcAddresses.ToList(); if (!PlcMonitorImp.IsPlcManualSimulator) { r = PlcAddressSortHelper.Sort <TValue>(distinctPlcAddresses); } return(r); }); sortResult.AddressSegments.ForEach(addressSegment => { var startAddress = addressSegment.StartAddress; List <TValue> values; startAddress.Offset = addressSegment.AllAddressesByDes.Count - 1; values = plc.Read <TValue>(startAddress).ToList(); for (var index = 0; index < values.Count(); index++) { result.Add(new Tuple <DataAddress, TValue>(addressSegment.AllAddressesByDes[index], values[index])); } }); sortResult.AddressNotSegment.Addresses.ForEach(address => { var value = plc.ReadSingle <TValue>(address); result.Add(new Tuple <DataAddress, TValue>(address, value)); }); return(result); }
public void SortPlcAddressForUTTest01() { var eventInfoes = new List <DataAddress> { new DataAddress() { Value = "DM004" }, new DataAddress() { Value = "DM000" }, new DataAddress() { Value = "DM002" }, new DataAddress() { Value = "DM008" }, new DataAddress() { Value = "DM010" }, new DataAddress() { Value = "DM018" } }; var result = PlcAddressSortHelper.Sort <int>(eventInfoes); Assert.AreEqual(2, result.AddressSegments.Count()); Assert.IsTrue(result.AddressSegments.Any(e => e.StartAddress.Value == "DM000")); Assert.IsTrue(result.AddressSegments.Any(e => e.StartAddress.Value == "DM008")); Assert.AreEqual(1, result.AddressNotSegment.Count()); Assert.IsTrue(result.AddressNotSegment.Addresses.Any(e => e.Value == "DM018")); }
public int GetPollingCount() { var value = PlcAddressSortHelper.Sort <TValue>(eventInfoes.Select(e => (e.Event as EventBase).PlcAddress).Distinct()); return(value.AddressSegments.Count() + value.AddressNotSegment.Count()); }