public static ReadData ReadDataEx(this XiDataList dataList,
                                          IAccessItemRegistration reg)
        {
            ReadValue readValue = dataList.ReadData(reg.ServerAlias);
            var       rd        = readValue.ToReadData(reg);

            return(rd);
        }
Example #2
0
        public IObservable <ReadData> DirectAsyncRead(IAccessItemRegistration reg)
        {
            var readData = new ReadData
            {
                ClientAlias = reg.ClientAlias,
                Value       = Server.Tags[reg.ClientAlias].Value.Convert(reg.Config)
            };

            return(Observable.Return(readData));
        }
        public static void ReadData(this XiDataList dataList,
                                    IAccessItemRegistration registration,
                                    OnReadDataComplete onComplete,
                                    object asyncState)
        {
            var list = new List <uint> {
                registration.ServerAlias
            };

            dataList.ReadData(list, onComplete, asyncState);
        }
Example #4
0
        public void Init(IAccessItemRegistration registration)
        {
            if (_isInitialized)
            {
                throw new InvalidOperationException("device cannot initialize twice");
            }

            Registration = registration;
            Registration.Subscribe(x => { Value = x.Value; });
            _isInitialized = true;
        }
Example #5
0
        public ReadData DirectRead(IAccessItemRegistration reg)
        {
            var clientAlias  = reg.ClientAlias;
            var readDirectly = new ReadData
            {
                Value       = Server.Tags[clientAlias].Value.Convert(reg.Config),
                ClientAlias = clientAlias
            };

            return(readDirectly);
        }
Example #6
0
//        private static dynamic ConvertReadData(AccessItemRegistration registerInfo, dynamic data)
//        {
//            return data;
//        }

/*        public static ReadData ToReadData(this ReadValue readData)
 *      {
 *          dynamic data = readData.DataValue.Value;
 *
 *          var readData1 = new ReadData
 *                              {
 *                                  Value = data,
 *                                  ClientAlias = readData.ClientAlias,
 *                              };
 *          return readData1;
 *      }*/

        public static ReadData ToReadData(this ReadValue readData, IAccessItemRegistration reg)
        {
            dynamic data = readData.DataValue.Value;

            var readData1 = new ReadData
            {
                Value       = DeviceConfigExtensions.Convert(data, reg),
                ClientAlias = readData.ClientAlias
            };

            return(readData1);
        }
Example #7
0
        public IObservable <Unit> AsyncRead(IAccessItemRegistration registration)
        {
            var reg = _registrations[registration.ClientAlias];

            var readData = new ReadData
            {
                ClientAlias = registration.ClientAlias,
                Value       = Server.Tags[registration.ClientAlias].Value.Convert(reg.Config),
            };

            reg.OnNext(readData);
            return(Observable.Return(new Unit()));
        }
Example #8
0
        private static dynamic ConvertValueToServerType(IAccessItemRegistration reg, dynamic data)
        {
            var convertedValue = DeviceConfigExtensions.Convert(data, reg);
            var type1          = reg.Config.DataType.ToAccessDataType().ToString();
            var type2          = reg.ServerDataType;

            if (type2 == null)
            {
                throw new Exception("registerInfo.ServerDataType==null");
            }

            if (type2 == "System.Void")
            {
                throw new InvalidOperationException(string.Format("Device:{0}, registerInfo.ServerDataType is void",
                                                                  type2));
            }

            if (type1 == type2)
            {
                return(convertedValue);
            }

            string converterTypeName = type1 + type2;

            if (!TypeInstances.ContainsKey(type1 + type2))
            {
                var converterGenericType = typeof(IDataConverter <,>);
                var t1            = Type.GetType(type1);
                var t2            = Type.GetType(type2);
                var converterType = converterGenericType.MakeGenericType(t1, t2);
                TypeInstances.Add(converterTypeName, converterType);
            }

            var     converterType2    = TypeInstances[converterTypeName];
            dynamic converterInstance = ServiceLocator.GetInstance(converterType2);

            return(converterInstance.Convert(convertedValue));
        }
 private static ReadValue ReadData(this XiDataList dataList,
                                   IAccessItemRegistration registration)
 {
     return(dataList.ReadData(registration.ServerAlias));
 }
Example #10
0
 public void Init(IAccessChannel channel, IAccessItemRegistration registration)
 {
     throw new NotImplementedException();
 }
Example #11
0
 public static IObservable <ReadData> DirectAsyncRead(this IAccessChannel channel,
                                                      IAccessItemRegistration registration)
 {
     return(channel.DirectAsyncRead(registration.ToEnumerable()).Select(rds => rds.First()));
 }
Example #12
0
 public WriteData(IAccessItemRegistration registration, dynamic value)
 {
     Registration = registration;
     Value        = value;
 }
Example #13
0
 public static void Read(this IAccessChannel channel, IAccessItemRegistration reg)
 {
     channel.Read(reg.ToEnumerable());
 }
Example #14
0
 public static object Convert(this object value, IAccessItemRegistration reg)
 {
     return(GetConvertValue(reg.Config, value));
 }
Example #15
0
//        public void RegisterAccessItems(
//            IEnumerable<Tuple<AccessItemConfig, Action<uint>>> accessItemConfigWithCallbacks)
//        {
//            foreach (var config in accessItemConfigWithCallbacks)
//            {
//                var registerInfo = new AccessItemRegistration(config.Item1, this);
//                _registrations.Add(registerInfo.ClientAlias, registerInfo);
//                var tag = SimTagFactory.Build(config.Item1.DataType);
//                tag.Server = Server;
//                tag.TagName = config.Item1.Tag;
//                tag.DataType = config.Item1.DataType;
//                Server.Tags.Add(registerInfo.ClientAlias, tag);
//                config.Item2(registerInfo.ClientAlias);
//            }
//        }

        public void Read(IAccessItemRegistration registration)
        {
            var value = Server.Tags[registration.ClientAlias].Value;

            registration.OnNext(value);
        }
Example #16
0
 public ReadData DirectRead(IAccessItemRegistration reg)
 {
     return(_dataList.ReadDataEx(reg));
 }
Example #17
0
 public static Task ReadAsync(this IAccessChannel channel, IAccessItemRegistration reg)
 {
     return(channel.ReadAsync(reg.ToEnumerable()));
 }
Example #18
0
 public WriteData(IAccessItemRegistration registration)
 {
     Registration = registration;
 }