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 }); }
public void Run(IService service) { var ioDevices = new List <IoDeviceAbstract>(); var parameters = new List <RemapTagsParameter>(); foreach (IoDeviceAbstract ioDevice in _ioDevices) { RemapTagsParameter parameter = ioDevice.CreateRemapParameter(); if (parameter == null) { continue; } parameters.Add(parameter); ioDevices.Add(ioDevice); } if (parameters.Any()) { var result = service.RemapTags(parameters.ToArray()); for (var i = 0; i < ioDevices.Count; i++) { ApplyResult(ioDevices[i], result[i]); } } }
private static void Remap(IIoDeviceRunTarget ioDevice, RemapTagsParameter parameter, RemapTagsResult result) { bool 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++) { RemapTagsParameter parameter = parameters[parameterIndex]; var result = new RemapTagsResult(); results[parameterIndex] = result; IIoDeviceRunTarget ioDevice = _project.IoDeviceRunTargets[parameter.IoDeviceId]; Remap(ioDevice, parameter, result); } return(results); }
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 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 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(); CommonCategory.Setup(d => d.IsRead()).Returns(true).Verifiable(); }
protected override void EstablishContext() { base.EstablishContext(); Parameter = new RemapTagsParameter(); IoDevice.Setup(d => d.CreateRemapParameter()).Returns(Parameter).Verifiable(); }
protected override void EstablishContext() { base.EstablishContext(); Parameter = IoDevice.CreateRemapParameter(); }