internal override RemapTagsParameter CreateRemapParameter() { var parameter = new RemapTagsParameter { IoDeviceId = _id }; UpdateDigReadIds(parameter); UpdateNumReadIds(parameter); UpdateDigWriteData(parameter); UpdateNumWriteData(parameter); if (parameter.DigReadIds.Any() || parameter.NumReadIds.Any() || parameter.DigWriteIds.Any() || parameter.NumWriteIds.Any()) return parameter; return null; }
private void UpdateNumReadIds(RemapTagsParameter parameter) { _readNumericTags.Clear(); var unReadTags = new List<TagAbstract<double?>>(); foreach (var tag in _numericTags) { if (tag.IsRead) _readNumericTags.Add(tag); else unReadTags.Add(tag); } foreach (var tag in unReadTags) { tag.UpdateValue(null); } parameter.NumReadIds = _readNumericTags.Select(t => t.Id).ToArray(); }
private void UpdateNumWriteData(RemapTagsParameter parameter) { var ids = new List<int>(); var values = new List<double>(); foreach (var tag in _numericTags) { if (!tag.IsWritten) continue; var value = tag.GetWrittenValue(); if (!value.HasValue) continue; ids.Add(tag.Id); values.Add(value.Value); } parameter.NumWriteIds = ids.ToArray(); parameter.NumWriteValues = values.ToArray(); }
protected override void EstablishContext() { base.EstablishContext(); Parameter = new RemapTagsParameter(); IoDevice.Setup(d => d.CreateRemapParameter()).Returns(Parameter).Verifiable(); }
private void UpdateDigReadIds(RemapTagsParameter parameter) { _readDigitalTags.Clear(); var unReadTags = new List<TagAbstract<bool?>>(); foreach (var tag in _digitalTags) { if (tag.IsRead) _readDigitalTags.Add(tag); else unReadTags.Add(tag); } foreach (var tag in unReadTags) { tag.UpdateValue(null); } parameter.DigReadIds = _readDigitalTags.Select(t => t.Id).ToArray(); }
private static void Remap(IIoDeviceRunTarget ioDevice, RemapTagsParameter parameter, RemapTagsResult result) { var readOnly = !parameter.DigWriteIds.Any() && !parameter.NumWriteIds.Any(); if (readOnly) ioDevice.EnterReadLock(); else ioDevice.EnterWriteLock(); try { if (!readOnly) { WriteDigValues(ioDevice, parameter.DigWriteIds, parameter.DigWriteValues); WriteNumValues(ioDevice, parameter.NumWriteIds, parameter.NumWriteValues); } result.DigReadValues = ReadDigValues(ioDevice, parameter.DigReadIds); result.NumReadValues = ReadNumValues(ioDevice, parameter.NumReadIds); result.Notifications = GetNotifications(ioDevice.Reporter.Notifications); } finally { if (readOnly) ioDevice.ExitReadLock(); else ioDevice.ExitWriteLock(); } }
public RemapTagsResult[] RemapTags(RemapTagsParameter[] parameters) { if (NotValid()) return null; var results = new RemapTagsResult[parameters.Length]; for (var parameterIndex = 0; parameterIndex < parameters.Length; parameterIndex++) { var parameter = parameters[parameterIndex]; var result = new RemapTagsResult(); results[parameterIndex] = result; var ioDevice = _project.IoDeviceRunTargets[parameter.IoDeviceId]; Remap(ioDevice, parameter, result); } return results; }
protected override void EstablishContext() { base.EstablishContext(); RemapTagsParameter = new RemapTagsParameter { IoDeviceId = IoDeviceId, DigWriteIds = new [] {20}, DigWriteValues = new [] {true}, NumWriteIds = new [] {30}, NumWriteValues = new [] {33.3}, DigReadIds = new [] {DigReadId}, NumReadIds = new [] {NumReadId} }; IoDeviceRunTarget.Setup(t => t.GetDigitalValue(DigReadId)).Returns(DigReadValue).Verifiable(); IoDeviceRunTarget.Setup(t => t.GetNumericValue(NumReadId)).Returns(NumReadValue).Verifiable(); Notifications = new ReadOnlyObservableCollection<Notification>( new ObservableCollection<Notification>{new Notification(DateTime.Now, "Message", "ShortDesc", "LongDesc")}); Reporter = new Mock<INotificationReporter>(); Reporter.SetupGet(r => r.Notifications).Returns(Notifications); IoDeviceRunTarget.SetupGet(t => t.Reporter).Returns(Reporter.Object); RemapTagsResult = Service.RemapTags(new [] { RemapTagsParameter }); }
protected override void EstablishContext() { base.EstablishContext(); Parameter = new RemapTagsParameter(); CommonCategory.Setup(d => d.IsRead()).Returns(true).Verifiable(); }
protected override void EstablishContext() { base.EstablishContext(); Parameter = IoDevice.CreateRemapParameter(); }