Example #1
0
        public void TestWriteRawDataToStruct()
        {
            var mapping = "DB_Safety2";
            var header  = new UDT_SafeMotionHeader
            {
                Generated           = Normalize(DateTime.Now),
                NumberOfActiveSlots = 2,
                Commands            = new UDT_SafeMotionHeader_Commands
                {
                    AllSlotsLocked = true,
                    UpdateAllowed  = true
                },
                States = new UDT_SafeMotionHeader_States
                {
                    ChecksumInvalid = true,
                    UpdateRequested = true
                }
            };

            var accessDict = new Dictionary <string, object> {
                { "SafeMotion.Header", header },
            };

            var s = new PlcDataMapperSerializer();

            accessDict["SafeMotion.Header"] = s.Serialize(header);

            var writeResults = _papper.WriteAsync(PlcWriteReference.FromRoot(mapping, accessDict.ToArray()).ToArray()).GetAwaiter().GetResult();
        }
Example #2
0
        public void TestStructuralAccess()
        {
            var mapping = "DB_Safety2";
            var header  = new UDT_SafeMotionHeader
            {
                Generated           = Normalize(DateTime.Now),
                NumberOfActiveSlots = 2,
                Commands            = new UDT_SafeMotionHeader_Commands
                {
                    AllSlotsLocked = true,
                    UpdateAllowed  = true
                },
                States = new UDT_SafeMotionHeader_States
                {
                    ChecksumInvalid = true,
                    UpdateRequested = true
                }
            };

            var accessDict = new Dictionary <string, object> {
                { "SafeMotion.Header", header },
            };

            var result = _papper.ReadAsync(accessDict.Keys.Select(variable => PlcReadReference.FromAddress($"{mapping}.{variable}")).ToArray()).GetAwaiter().GetResult();

            Assert.Equal(accessDict.Count, result.Length);
            var writeResults = _papper.WriteAsync(PlcWriteReference.FromRoot(mapping, accessDict.ToArray()).ToArray()).GetAwaiter().GetResult();

            foreach (var item in writeResults)
            {
                Assert.Equal(ExecutionResult.Ok, item.ActionResult);
            }
            var result2 = _papper.ReadAsync(accessDict.Keys.Select(variable => PlcReadReference.FromAddress($"{mapping}.{variable}")).ToArray()).GetAwaiter().GetResult();

            Assert.Equal(accessDict.Count, result2.Length);
            Assert.False(AreDataEqual(result, result2));


            // Assert.True(AreDataEqual(ToExpando(header), result2.Values.FirstOrDefault()));
        }