/// <summary> /// Converts a data type to a plc known format. /// </summary> /// <param name="type"></param> /// <param name="data"></param> /// <returns></returns> public byte[] Serialize(Type type, object data) { var binding = _mappingEntryProvider.GetMappingEntryForType(type).BaseBinding; var buffer = new byte[binding.RawData.MemoryAllocationSize]; // TODO handle a reusable buffer binding.ConvertToRaw(data, buffer); return(buffer); }
/// <summary> /// Get a value from the structs binary data /// </summary> /// <typeparam name="TValue"></typeparam> /// <param name="type"></param> /// <param name="variable"></param> /// <param name="data"></param> /// <returns></returns> public TValue GetValue <TValue>(Type type, string variable, Span <byte> data) { var mappingEntry = _mappingEntryProvider.GetMappingEntryForType(type); _mappingEntryProvider.UpdateVariables(mappingEntry, variable); return(mappingEntry.Bindings.TryGetValue(variable, out var binding) ? (TValue)binding.ConvertFromRaw(data) : default);