コード例 #1
0
        /// <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);
        }
コード例 #2
0
        /// <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);