示例#1
0
 public MappingEntry(PlcObject plcObject)
 {
     PlcObject   = plcObject ?? ExceptionThrowHelper.ThrowArgumentNullException <PlcObject>(nameof(plcObject));
     BaseBinding = new PlcObjectBinding(new PlcRawData(plcObject.ByteSize), plcObject, 0, 0, true);
     Variables   = new Dictionary <string, Tuple <int, PlcObject> >();
     Bindings    = new Dictionary <string, PlcObjectBinding>();
 }
示例#2
0
        public void TestLDateTIme()
        {
            var value = DateTime.Now;

            var type    = new PlcLDateTime("TEST");
            var data    = new byte[type.Size.Bytes];
            var binding = new PlcObjectBinding(new PlcRawData(512), type, 0, 0);

            type.ConvertToRaw(value, binding, data);
            var result1 = (DateTime)type.ConvertFromRaw(binding, data);

            Assert.Equal(value, result1);
        }
示例#3
0
        public void TestLTIme()
        {
            var value = TimeSpan.FromHours(2);

            var type    = new PlcLTime("TEST");
            var data    = new byte[type.Size.Bytes];
            var binding = new PlcObjectBinding(new PlcRawData(512), type, 0, 0);

            type.ConvertToRaw(value, binding, data);
            var result1 = (TimeSpan)type.ConvertFromRaw(binding, data);

            Assert.Equal(value, result1);
        }
示例#4
0
        public void TestLWord()
        {
            ulong value = 44;

            var type    = new PlcLWord("TEST");
            var data    = new byte[type.Size.Bytes];
            var binding = new PlcObjectBinding(new PlcRawData(512), type, 0, 0);

            type.ConvertToRaw(value, binding, data);
            var result1 = (ulong)type.ConvertFromRaw(binding, data);

            Assert.Equal(value, result1);
        }
示例#5
0
        public void TestWStringNormal()
        {
            string value = "Test123";

            var type    = new PlcWString("TEST");
            var data    = new byte[type.Size.Bytes];
            var binding = new PlcObjectBinding(new PlcRawData(1024), type, 0, 0);

            type.ConvertToRaw(value, binding, data);
            var result1 = (string)type.ConvertFromRaw(binding, data);

            Assert.Equal(value, result1);
        }
示例#6
0
        public void TestSInt()
        {
            sbyte value   = 44;
            var   type    = new PlcSInt("TEST");
            var   data    = new byte[type.Size.Bytes];
            var   binding = new PlcObjectBinding(new PlcRawData(512), type, 0, 0);

            type.ConvertToRaw(value, binding, data);
            var result1 = (sbyte)type.ConvertFromRaw(binding, data);

            Assert.Equal(value, result1);

            value = -44;
            type.ConvertToRaw(value, binding, data);
            var result2 = (sbyte)type.ConvertFromRaw(binding, data);

            Assert.Equal(value, result2);
        }
示例#7
0
 public override object ConvertFromRaw(PlcObjectBinding plcObjectBinding, Span <byte> data)
 {
     if (data.IsEmpty)
     {
         return(default);
示例#8
0
 public override void ConvertToRaw(object value, PlcObjectBinding plcObjectBinding, Span <byte> data)
 => data[plcObjectBinding.Offset] = (byte)unchecked ((sbyte)value);
示例#9
0
 public override object ConvertFromRaw(PlcObjectBinding plcObjectBinding, Span <byte> data)
 => data.IsEmpty ? default : unchecked ((sbyte)data[plcObjectBinding.Offset]);
示例#10
0
        public override void ConvertToRaw(object value, PlcObjectBinding plcObjectBinding, Span <byte> data)
        {
            var s = value as string;

            data[plcObjectBinding.Offset] = s != null?Convert.ToByte(s.FirstOrDefault()): Convert.ToByte(value);
        }
示例#11
0
 public override object ConvertFromRaw(PlcObjectBinding plcObjectBinding, Span <byte> data)
 => data.IsEmpty ? default : Convert.ToChar(data[plcObjectBinding.Offset]);
示例#12
0
 public abstract void ConvertToRaw(object value, PlcObjectBinding plcObjectBinding, Span <byte> data);
示例#13
0
 public abstract object ConvertFromRaw(PlcObjectBinding plcObjectBinding, Span <byte> data);