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 ); }
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 ); }
public async Task ConnectAsync(CancellationToken token = default) { _connection = await _factory.ConnectAsync(token).ConfigureAwait(false); _writer = new ModbusFrameWriter(_connection.Transport.Output); _readingTask = ReadMessages(); }
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); }