Пример #1
0
        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();
                }
            }
        }
Пример #2
0
 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();
         }
     }
 }
Пример #3
0
 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();
     }
 }