public void BuildMessageFrame()
 {
     byte[] expected = { 58, 48, 50, 48, 49, 48, 48, 48, 48, 48, 48, 48, 49, 70, 67, 13, 10 };
     ReadCoilsInputsRequest request = new ReadCoilsInputsRequest(Modbus.ReadCoils, 2, 0, 1);
     var actual = new ModbusAsciiTransport(MockRepository.GenerateStub<IStreamResource>()).BuildMessageFrame(request);
     Assert.AreEqual(expected, actual);
 }
        public void CreateResponseErroneousLrc()
        {
            ModbusAsciiTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub <IStreamResource>());

            transport.CheckFrame = true;
            Assert.Throws <IOException>(() => transport.CreateResponse <ReadCoilsInputsResponse>(new byte[] { 19, Modbus.ReadCoils, 0, 0, 0, 2, 115 }));
        }
 public void ChecksumsMatchSucceed()
 {
     ModbusAsciiTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub<IStreamResource>());
     ReadCoilsInputsRequest message = new ReadCoilsInputsRequest(Modbus.ReadCoils, 17, 19, 37);
     byte[] frame = { 17, Modbus.ReadCoils, 0, 19, 0, 37, 182 };
     Assert.IsTrue(transport.ChecksumsMatch(message, frame));
 }
예제 #4
0
 public void CreateResponse_SlaveException()
 {
     ModbusTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub<IStreamResource>());
     byte[] frame = { 2, 129, 2 };
     IModbusMessage message = transport.CreateResponse<ReadCoilsInputsResponse>(frame.Concat(SequenceUtility.ToSequence(ModbusUtility.CalculateLrc(frame))).ToArray());
     Assert.IsTrue(message is SlaveExceptionResponse);
 }
        public void CreateResponseErroneousLrcDoNotCheckFrame()
        {
            ModbusAsciiTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub <IStreamResource>());

            transport.CheckFrame = false;
            transport.CreateResponse <ReadCoilsInputsResponse>(new byte[] { 19, Modbus.ReadCoils, 0, 0, 0, 2, 115 });
        }
예제 #6
0
        public void BuildMessageFrame()
        {
            byte[] expected = { 58, 48, 50, 48, 49, 48, 48, 48, 48, 48, 48, 48, 49, 70, 67, 13, 10 };
            ReadCoilsInputsRequest request = new ReadCoilsInputsRequest(Modbus.ReadCoils, 2, 0, 1);
            var actual = new ModbusAsciiTransport(MockRepository.GenerateStub <IStreamResource>()).BuildMessageFrame(request);

            Assert.AreEqual(expected, actual);
        }
        public void ChecksumsMatchFail()
        {
            ModbusAsciiTransport   transport = new ModbusAsciiTransport(MockRepository.GenerateStub <IStreamResource>());
            ReadCoilsInputsRequest message   = new ReadCoilsInputsRequest(Modbus.ReadCoils, 17, 19, 37);

            byte[] frame = { 17, Modbus.ReadCoils, 0, 19, 0, 37, 181 };
            Assert.IsFalse(transport.ChecksumsMatch(message, frame));
        }
        public void BuildMessageFrame()
        {
            byte[] expected = { 58, 48, 50, 48, 49, 48, 48, 48, 48, 48, 48, 48, 49, 70, 67, 13, 10 };
            var    request  = new ReadCoilsInputsRequest(ModbusFunctionCodes.ReadCoils, 2, 0, 1);
            var    actual   = new ModbusAsciiTransport(StreamResource, NullModbusLogger.Instance)
                              .BuildMessageFrame(request);

            Assert.Equal(expected, actual);
        }
예제 #9
0
        public void ChecksumsMatchSucceed()
        {
            var transport = new ModbusAsciiTransport(StreamResource);
            var message   = new ReadCoilsInputsRequest(Modbus.ReadCoils, 17, 19, 37);

            byte[] frame = { 17, Modbus.ReadCoils, 0, 19, 0, 37, 182 };

            Assert.True(transport.ChecksumsMatch(message, frame));
        }
        public void ChecksumsMatchFail()
        {
            var transport = new ModbusAsciiTransport(StreamResource, NullModbusLogger.Instance);
            var message   = new ReadCoilsInputsRequest(ModbusFunctionCodes.ReadCoils, 17, 19, 37);

            byte[] frame = { 17, ModbusFunctionCodes.ReadCoils, 0, 19, 0, 37, 181 };

            Assert.False(transport.ChecksumsMatch(message, frame));
        }
예제 #11
0
        public void CreateResponseErroneousLrcDoNotCheckFrame()
        {
            var transport = new ModbusAsciiTransport(StreamResource, new ModbusFactory(), NullModbusLogger.Instance)
            {
                CheckFrame = false
            };

            transport.CreateResponse <ReadCoilsInputsResponse>(new byte[] { 19, ModbusFunctionCodes.ReadCoils, 0, 0, 0, 2, 115 });
        }
예제 #12
0
        public void ChecksumsMatchFail()
        {
            var transport = new ModbusAsciiTransport(StreamResource);
            var message   = new ReadCoilsInputsRequest(Modbus.ReadCoils, 17, 19, 37);

            byte[] frame = { 17, Modbus.ReadCoils, 0, 19, 0, 37, 181 };

            Assert.False((bool)transport.ChecksumsMatch(message, frame));
        }
예제 #13
0
        public void CreateResponse_SlaveException()
        {
            ModbusTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub <IStreamResource>());

            byte[]         frame   = { 2, 129, 2 };
            IModbusMessage message = transport.CreateResponse <ReadCoilsInputsResponse>(frame.Concat(SequenceUtility.ToSequence(ModbusUtility.CalculateLrc(frame))).ToArray());

            Assert.IsTrue(message is SlaveExceptionResponse);
        }
 public void CreateResponse()
 {
     ModbusAsciiTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub<IStreamResource>());
     ReadCoilsInputsResponse expectedResponse = new ReadCoilsInputsResponse(Modbus.ReadCoils, 2, 1, new DiscreteCollection(true, false, false, false, false, false, false, true));
     byte lrc = ModbusUtility.CalculateLrc(expectedResponse.MessageFrame);
     ReadCoilsInputsResponse response = transport.CreateResponse<ReadCoilsInputsResponse>(new byte[] { 2, Modbus.ReadCoils, 1, 129, lrc }) as ReadCoilsInputsResponse;
     Assert.IsNotNull(response);
     AssertModbusMessagePropertiesAreEqual(expectedResponse, response);
 }
        public void CreateResponseErroneousLrcDoNotCheckFrame()
        {
            var transport = new ModbusAsciiTransport(StreamResource)
            {
                CheckFrame = false
            };

            transport.CreateResponse <ReadCoilsInputsResponse>(new byte[] { 19, Modbus.ReadCoils, 0, 0, 0, 2, 115 });
        }
    public void BuildMessageFrame()
    {
        byte[] expected = { 58, 48, 50, 48, 49, 48, 48, 48, 48, 48, 48, 48, 49, 70, 67, 13, 10 };
        ReadCoilsInputsRequest?request = new(Modbus.ReadCoils, 2, 0, 1);

        byte[]? actual = new ModbusAsciiTransport(StreamResource)
                         .BuildMessageFrame(request);

        Assert.Equal(expected, actual);
    }
예제 #17
0
        public void CreateResponse()
        {
            var            transport        = new ModbusAsciiTransport(StreamResource, new ModbusFactory(), NullModbusLogger.Instance);
            var            expectedResponse = new ReadCoilsInputsResponse(ModbusFunctionCodes.ReadCoils, 2, 1, new DiscreteCollection(true, false, false, false, false, false, false, true));
            byte           lrc      = ModbusUtility.CalculateLrc(expectedResponse.MessageFrame);
            IModbusMessage response = transport.CreateResponse <ReadCoilsInputsResponse>(new byte[] { 2, ModbusFunctionCodes.ReadCoils, 1, 129, lrc });

            Assert.IsType <ReadCoilsInputsResponse>(response);
            ModbusMessageFixture.AssertModbusMessagePropertiesAreEqual(expectedResponse, response);
        }
        public void CreateResponse()
        {
            ModbusAsciiTransport    transport        = new ModbusAsciiTransport(MockRepository.GenerateStub <IStreamResource>());
            ReadCoilsInputsResponse expectedResponse = new ReadCoilsInputsResponse(Modbus.ReadCoils, 2, 1, new DiscreteCollection(true, false, false, false, false, false, false, true));
            byte lrc = ModbusUtility.CalculateLrc(expectedResponse.MessageFrame);
            ReadCoilsInputsResponse response = transport.CreateResponse <ReadCoilsInputsResponse>(new byte[] { 2, Modbus.ReadCoils, 1, 129, lrc }) as ReadCoilsInputsResponse;

            Assert.IsNotNull(response);
            AssertModbusMessagePropertiesAreEqual(expectedResponse, response);
        }
예제 #19
0
        public void CreateResponseErroneousLrc()
        {
            var transport = new ModbusAsciiTransport(StreamResource, NullModbusLogger.Instance)
            {
                CheckFrame = true
            };
            var frame = new byte[] { 19, ModbusFunctionCodes.ReadCoils, 0, 0, 0, 2, 115 };

            Assert.Throws <IOException>(
                () => transport.CreateResponse <ReadCoilsInputsResponse>(frame));
        }
        public void ReadRequestResponse()
        {
            var mocks     = new MockRepository();
            var stream    = mocks.StrictMock <IStreamResource>();
            var transport = new ModbusAsciiTransport(stream);

            ExpectReadLine(stream, Encoding.ASCII.GetBytes(":110100130025B6\r\n"));

            mocks.ReplayAll();

            Assert.AreEqual(new byte[] { 17, 1, 0, 19, 0, 37, 182 }, transport.ReadRequestResponse());

            mocks.VerifyAll();
        }
        public void ReadRequestResponse()
        {
            var mocks = new MockRepository();
            var stream = mocks.StrictMock<IStreamResource>();
            var transport = new ModbusAsciiTransport(stream);

            ExpectReadLine(stream, Encoding.ASCII.GetBytes(":110100130025B6\r\n"));

            mocks.ReplayAll();

            Assert.AreEqual(new byte[] { 17, 1, 0, 19, 0, 37, 182 }, transport.ReadRequestResponse());

            mocks.VerifyAll();
        }
        public void ReadRequestResponseNotEnoughBytes()
        {
            var             mock      = new Mock <IStreamResource>(MockBehavior.Strict);
            IStreamResource stream    = mock.Object;
            var             transport = new ModbusAsciiTransport(stream, NullModbusLogger.Instance);
            int             calls     = 0;

            byte[] bytes = Encoding.ASCII.GetBytes(":10\r\n");

            mock.Setup(s => s.Read(It.Is <byte[]>(x => x.Length == 1), 0, 1))
            .Returns((byte[] buffer, int offset, int count) =>
            {
                buffer[offset] = bytes[calls++];
                return(1);
            });

            Assert.Throws <IOException>(() => transport.ReadRequestResponse());
            mock.VerifyAll();
        }
        public void ReadRequestResponse()
        {
            var             mock      = new Mock <IStreamResource>(MockBehavior.Strict);
            IStreamResource stream    = mock.Object;
            var             transport = new ModbusAsciiTransport(stream, NullModbusLogger.Instance);
            int             calls     = 0;

            byte[] bytes = Encoding.ASCII.GetBytes(":110100130025B6\r\n");

            mock.Setup(s => s.Read(It.Is <byte[]>(x => x.Length == 1), 0, 1))
            .Returns((byte[] buffer, int offset, int count) =>
            {
                buffer[offset] = bytes[calls++];
                return(1);
            });

            Assert.Equal(new byte[] { 17, 1, 0, 19, 0, 37, 182 }, transport.ReadRequestResponse());
            mock.VerifyAll();
        }
 public void CreateResponseErroneousLrc()
 {
     ModbusAsciiTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub<IStreamResource>());
     transport.CheckFrame = true;
     Assert.Throws<IOException>(() => transport.CreateResponse<ReadCoilsInputsResponse>(new byte[] {19, Modbus.ReadCoils, 0, 0, 0, 2, 115}));
 }
 public void CreateResponseErroneousLrcDoNotCheckFrame()
 {
     ModbusAsciiTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub<IStreamResource>());
     transport.CheckFrame = false;
     transport.CreateResponse<ReadCoilsInputsResponse>(new byte[] { 19, Modbus.ReadCoils, 0, 0, 0, 2, 115 });
 }