示例#1
0
        public void ModbusFrameWriter_WriteFrame_CorrectlyWritesAReadInputRegistersRequest()
        {
            // Given
            var request = new RequestAdu
            {
                Header = new Header(transactionID: 1, unitID: 4),
                Pdu    = new RequestReadInputRegisters
                {
                    Address  = 0x0040,
                    Quantity = 0x000A,
                },
            };
            var arraybuffer = new ArrayBufferWriter <byte>();

            // When
            var writer   = new ModbusFrameWriter(arraybuffer);
            var position = writer.WriteFrame(request);

            arraybuffer.Advance(position);

            // Then
            var data = arraybuffer.WrittenSpan.ToArray();

            Assert.Equal(
                new byte[] { 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x04, 0x04, 0x00, 0x40, 0x00, 0x0A },
                data
                );
        }
示例#2
0
        public void ModbusFrameWriter_WriteFrame_CorrectlyWritesAWriteSingleCoilRequest()
        {
            // Given
            var request = new RequestAdu
            {
                Header = new Header(transactionID: 1, unitID: 4),
                Pdu    = new RequestWriteSingleCoil
                {
                    Address   = 0x0041,
                    CoilState = true,
                },
            };
            var arraybuffer = new ArrayBufferWriter <byte>();

            // When
            var writer   = new ModbusFrameWriter(arraybuffer);
            var position = writer.WriteFrame(request);

            arraybuffer.Advance(position);

            // Then
            var data = arraybuffer.WrittenSpan.ToArray();

            Assert.Equal(
                new byte[] { 0x00, 0x01, 0x00, 0x00, 0x00, 0x06, 0x04, 0x05, 0x00, 0x41, 0xFF, 0x00 },
                data
                );
        }
示例#3
0
        public async Task ConnectAsync(CancellationToken token = default)
        {
            _connection = await _factory.ConnectAsync(token).ConfigureAwait(false);

            _writer = new ModbusFrameWriter(_connection.Transport.Output);

            _readingTask = ReadMessages();
        }
示例#4
0
        public void ModbusFrameWriter_WriteFrame_CorrectlyWritesAWriteMultipleCoilsRequest(object request, byte[] expected)
        {
            // Given
            var arraybuffer = new ArrayBufferWriter <byte>();

            // When
            var writer   = new ModbusFrameWriter(arraybuffer);
            var position = writer.WriteFrame((RequestAdu)request);

            arraybuffer.Advance(position);

            // Then
            var data = arraybuffer.WrittenSpan.ToArray();

            Assert.Equal(expected, data);
        }