예제 #1
0
 public IIoDeviceRunTarget Create(ITimeService timeService, io_devices ioDevice)
 {
     return(new IoDeviceRunTarget(
                ioDevice,
                new IoDeviceWrapperFactory(string.Format("{0} domain", ioDevice.name)),
                new NotificationReporter(timeService)
     {
         LifeTime = TimeSpan.FromTicks(0)
     }));
 }
예제 #2
0
 protected override void EstablishContext()
 {
     base.EstablishContext();
     IoDeviceWrapper        = new Mock <IIoDeviceWrapper>();
     IoDeviceWrapperFactory = new Mock <IIoDeviceWrapperFactory>();
     IoDeviceWrapperFactory.Setup(f => f.Create()).Returns(IoDeviceWrapper.Object);
     IoDevice = new io_devices
     {
         name    = "IoDeviceRunTargetName",
         options = IoDeviceOptions,
         type    = string.Format("{0}{1}{2}", IoDeviceFolder, PHmiConstants.PHmiIoDeviceSeparator, IoDeviceFile)
     };
     DigitalTag = new dig_tags
     {
         id       = 1,
         device   = "M0",
         can_read = true
     };
     IoDevice.dig_tags.Add(DigitalTag);
     WriteOnlyDigitalTag = new dig_tags
     {
         id       = 2,
         device   = "M1",
         can_read = false
     };
     IoDevice.dig_tags.Add(WriteOnlyDigitalTag);
     NumericTag = new num_tags
     {
         id            = 1,
         device        = "D0",
         num_tag_types = new num_tag_types {
             name = "Int32"
         },
         can_read = true
     };
     IoDevice.num_tags.Add(NumericTag);
     WriteOnlyNumericTag = new num_tags
     {
         id            = 2,
         device        = "D1",
         num_tag_types = new num_tag_types {
             name = "Int16"
         },
         can_read = false
     };
     IoDevice.num_tags.Add(WriteOnlyNumericTag);
     Reporter          = new Mock <INotificationReporter>();
     IoDeviceRunTarget = new IoDeviceRunTarget(IoDevice, IoDeviceWrapperFactory.Object, Reporter.Object);
     DigitalTagValue   = true;
     NumericTagValue   = new Random().Next();
     IoDeviceWrapper
     .Setup(w => w.Read(It.IsAny <ReadParameter[]>()))
     .Returns(new object[] { DigitalTagValue, NumericTagValue });
 }
예제 #3
0
            protected override void EstablishContext()
            {
                base.EstablishContext();
                IoDevice = new io_devices
                {
                    name = "IoDevice",
                    id   = 1
                };
                IoDevices = new EnumerableQuery <io_devices>(new [] { IoDevice });
                Context.Setup(context => context.Get <io_devices>()).Returns(IoDevices);

                IoDeviceRunTarget = new Mock <IIoDeviceRunTarget>();
                IoDeviceRunTargetFactory.Setup(f => f.Create(TimeService.Object, IoDevice))
                .Returns(IoDeviceRunTarget.Object);
                CyclicRunner = new Mock <ICyclicRunner>();
                CyclicRunnerFactory.Setup(f => f.Create(IoDeviceRunTarget.Object)).Returns(CyclicRunner.Object);
            }
예제 #4
0
        public IoDeviceRunTarget(io_devices ioDevice, IIoDeviceWrapperFactory wrapperFactory, INotificationReporter reporter)
        {
            _reporter       = reporter;
            Name            = string.Format(Res.IoDeviceWithName, ioDevice.name);
            _filePath       = GetFilePath(ioDevice.type);
            _options        = ioDevice.options;
            _wrapperFactory = wrapperFactory;

            var digReadParameters   = new List <ReadParameter>();
            var digReadValueHolders = new List <ITagValueHolder>();

            foreach (var t in ioDevice.dig_tags)
            {
                var holder = new DigTagValueHolder(t);
                _digValueHolders.Add(t.id, holder);
                if (t.can_read)
                {
                    digReadValueHolders.Add(holder);
                    digReadParameters.Add(new ReadParameter(t.device, typeof(bool)));
                }
            }
            var numReadParameters   = new List <ReadParameter>();
            var numReadValueHolders = new List <ITagValueHolder>();

            foreach (var t in ioDevice.num_tags)
            {
                var holder = new NumTagValueHolder(t);
                _numValueHolders.Add(t.id, holder);
                if (t.can_read)
                {
                    numReadValueHolders.Add(holder);
                    numReadParameters.Add(new ReadParameter(t.device, t.TagType));
                }
            }
            _readParameters   = digReadParameters.Concat(numReadParameters).ToArray();
            _readValueHolders = digReadValueHolders.Concat(numReadValueHolders).ToArray();
        }