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(); } } }
private void UpdateAlarmDigitalValues(IEnumerable <Tuple <int, Tuple <int, int>[]> > ioDeviceGroups) { foreach (var g in ioDeviceGroups) { IIoDeviceRunTarget ioDev = _project.IoDeviceRunTargets[g.Item1]; ioDev.EnterReadLock(); try { foreach (var t in g.Item2) { _alarmDigitalValues[t.Item2].Value = ioDev.GetDigitalValue(t.Item1); } } finally { ioDev.ExitReadLock(); } } }
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(); } }