public void CreateResponse_SlaveException() { ModbusTransport transport = new ModbusAsciiTransport(MockRepository.GenerateStub <IStreamResource>()); byte[] frame = { 2, 129, 2 }; IModbusMessage message = transport.CreateResponse <ReadCoilsInputsResponse>( Enumerable.Concat(frame, SequenceUtility.ToSequence(ModbusUtility.CalculateLrc(frame))).ToArray()); Assert.IsTrue(message is SlaveExceptionResponse); }
public void CreateModbusMessageReturnQueryDataRequestResponse() { byte slaveAddress = 5; RegisterCollection data = new RegisterCollection(50); byte[] frame = SequenceUtility.ToSequence <byte>(slaveAddress, 8, 0, 0).Concat(data.NetworkBytes).ToArray(); DiagnosticsRequestResponse message = ModbusMessageFactory.CreateModbusMessage <DiagnosticsRequestResponse>(frame); DiagnosticsRequestResponse expectedMessage = new DiagnosticsRequestResponse(Modbus.DiagnosticsReturnQueryData, slaveAddress, data); Assert.AreEqual(expectedMessage.SubFunctionCode, message.SubFunctionCode); AssertModbusMessagePropertiesAreEqual(expectedMessage, message); }
public void ReadResponseSlaveException() { MockRepository mocks = new MockRepository(); ModbusRtuTransport transport = mocks.PartialMock <ModbusRtuTransport>(MockRepository.GenerateStub <IStreamResource>()); byte[] messageFrame = { 0x01, 0x81, 0x02 }; byte[] crc = ModbusUtility.CalculateCrc(messageFrame); Expect.Call(transport.Read(ModbusRtuTransport.ResponseFrameStartLength)) .Return(messageFrame.Concat(SequenceUtility.ToSequence(crc[0])).ToArray()); Expect.Call(transport.Read(1)) .Return(new byte[] { crc[1] }); mocks.ReplayAll(); Assert.IsTrue(transport.ReadResponse <ReadCoilsInputsResponse>() is SlaveExceptionResponse); mocks.VerifyAll(); }