public static ReadData ReadDataEx(this XiDataList dataList, IAccessItemRegistration reg) { ReadValue readValue = dataList.ReadData(reg.ServerAlias); var rd = readValue.ToReadData(reg); return(rd); }
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); }
public void Init(IAccessItemRegistration registration) { if (_isInitialized) { throw new InvalidOperationException("device cannot initialize twice"); } Registration = registration; Registration.Subscribe(x => { Value = x.Value; }); _isInitialized = true; }
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); }
// 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); }
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())); }
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)); }
public void Init(IAccessChannel channel, IAccessItemRegistration registration) { throw new NotImplementedException(); }
public static IObservable <ReadData> DirectAsyncRead(this IAccessChannel channel, IAccessItemRegistration registration) { return(channel.DirectAsyncRead(registration.ToEnumerable()).Select(rds => rds.First())); }
public WriteData(IAccessItemRegistration registration, dynamic value) { Registration = registration; Value = value; }
public static void Read(this IAccessChannel channel, IAccessItemRegistration reg) { channel.Read(reg.ToEnumerable()); }
public static object Convert(this object value, IAccessItemRegistration reg) { return(GetConvertValue(reg.Config, value)); }
// 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); }
public ReadData DirectRead(IAccessItemRegistration reg) { return(_dataList.ReadDataEx(reg)); }
public static Task ReadAsync(this IAccessChannel channel, IAccessItemRegistration reg) { return(channel.ReadAsync(reg.ToEnumerable())); }
public WriteData(IAccessItemRegistration registration) { Registration = registration; }