public void CreateWriteMultipleRegistersResponseMaxSize() { WriteMultipleRegistersResponse response = new WriteMultipleRegistersResponse(1, 2, Modbus.MaximumRegisterRequestResponseSize); Assert.Equal(Modbus.MaximumRegisterRequestResponseSize, response.NumberOfPoints); }
internal static WriteMultipleRegistersResponse WriteMultipleRegisters(WriteMultipleRegistersRequest request, DataStore dataStore, ModbusDataCollection <ushort> dataSource) { DataStore.WriteData(dataStore, request.Data, dataSource, request.StartAddress, dataStore.SyncRoot); WriteMultipleRegistersResponse response = new WriteMultipleRegistersResponse(request.SlaveAddress, request.StartAddress, request.NumberOfPoints); return(response); }
public void CreateWriteMultipleRegistersResponse() { WriteMultipleRegistersResponse response = new WriteMultipleRegistersResponse(12, 39, 2); Assert.AreEqual(Modbus.WriteMultipleRegisters, response.FunctionCode); Assert.AreEqual(12, response.SlaveAddress); Assert.AreEqual(39, response.StartAddress); Assert.AreEqual(2, response.NumberOfPoints); }
public void CreateModbusMessageWriteMultipleRegistersResponse() { WriteMultipleRegistersResponse response = ModbusMessageFactory.CreateModbusMessage <WriteMultipleRegistersResponse>(new byte[] { 17, Modbus.WriteMultipleRegisters, 0, 1, 0, 2 }); WriteMultipleRegistersResponse expectedResponse = new WriteMultipleRegistersResponse(17, 1, 2); AssertModbusMessagePropertiesAreEqual(expectedResponse, response); Assert.AreEqual(expectedResponse.StartAddress, response.StartAddress); Assert.AreEqual(expectedResponse.NumberOfPoints, response.NumberOfPoints); }
public void WriteMultipleRegistersResponseToString() { // Arrange var response = new WriteMultipleRegistersResponse(); response.Initialize(new byte[] { 17, ModbusFunctionCodes.WriteMultipleRegisters, 0, 1, 0, 2 }); // Act/Assert Assert.Equal("Wrote 2 holding registers starting at address 1 into slave 17", response.ToString()); }
public void WriteMultipleRegisters() { ushort startAddress = 35; ushort[] valuesToWrite = new ushort[] { 1, 2, 3, 4, 5 }; Assert.AreNotEqual(valuesToWrite, _testDataStore.HoldingRegisters.Slice(startAddress - 1, valuesToWrite.Length).ToArray()); WriteMultipleRegistersResponse expectedResponse = new WriteMultipleRegistersResponse(1, startAddress, (ushort)valuesToWrite.Length); WriteMultipleRegistersResponse response = ModbusSlave.WriteMultipleRegisters(new WriteMultipleRegistersRequest(1, startAddress, new RegisterCollection(valuesToWrite)), _testDataStore, _testDataStore.HoldingRegisters); AssertModbusMessagePropertiesAreEqual(expectedResponse, response); }
public void CreatesWriteMultipleRegistersResponse() { // Arrange/Act WriteMultipleRegistersResponse response = (WriteMultipleRegistersResponse)ModbusResponseFactory .CreateResponse <WriteMultipleRegistersResponse>( new byte[] { 17, ModbusFunctionCodes.WriteMultipleRegisters, 0, 1, 0, 2 }); // Assert Assert.Equal(ModbusFunctionCodes.WriteMultipleRegisters, response.FunctionCode); Assert.Equal(17, response.SlaveAddress); Assert.Equal(1, response.StartAddress); Assert.Equal(2, response.NumberOfPoints); }
public void WriteMultipleRegistersResponseTcpTest() { string expected = "00-23-00-00-00-06-1C-10-00-64-00-02"; string hex = expected.Replace("-", ""); byte[] message = Enumerable.Range(0, hex.Length) .Where(x => x % 2 == 0) .Select(x => Convert.ToByte(hex.Substring(x, 2), 16)) .ToArray(); WriteMultipleRegistersResponse inputs = WriteMultipleRegistersResponse.Decode(message); byte[] msg = inputs.Encode(); string actual = System.BitConverter.ToString(msg); Assert.AreEqual(expected, actual); }
public void WriteMultipleRegistersResponseSerializeRtuTest() { string expected = "1C-10-00-64-00-02-03-9A"; string hex = expected.Replace("-", ""); byte[] message = Enumerable.Range(0, hex.Length) .Where(x => x % 2 == 0) .Select(x => Convert.ToByte(hex.Substring(x, 2), 16)) .ToArray(); WriteMultipleRegistersResponse inputs = WriteMultipleRegistersResponse.Decode(message); string jsonString = inputs.Serialize(); WriteMultipleRegistersResponse inputs2 = JsonConvert.DeserializeObject <WriteMultipleRegistersResponse>(jsonString); byte[] msg = inputs2.Encode(); string actual = System.BitConverter.ToString(msg); Assert.AreEqual(expected, actual); }
public void ToString_Test() { var response = new WriteMultipleRegistersResponse(1, 2, 3); Assert.AreEqual("Wrote 3 holding registers starting at address 2.", response.ToString()); }
public override ModbusFunction WriteMultipleRegisters(WriteMultipleRegistersRequest request) { var response = new WriteMultipleRegistersResponse(request.StartingAddress, request.Quantity); return(response); }
internal static WriteMultipleRegistersResponse WriteMultipleRegisters(WriteMultipleRegistersRequest request, DataStore dataStore, ModbusDataCollection<ushort> dataSource) { DataStore.WriteData(dataStore, request.Data, dataSource, request.StartAddress, dataStore.SyncRoot); var response = new WriteMultipleRegistersResponse(request.SlaveAddress, request.StartAddress, request.NumberOfPoints); return response; }
public void ValidateWriteMultipleRegistersResponse(byte[] readBytes, IModbusMessage request) { WriteMultipleRegistersResponse response = (WriteMultipleRegistersResponse)Transport.CreateResponse <WriteMultipleRegistersResponse>(readBytes); Transport.ValidateResponse(request, response); }
static void TestMessage() { ModbusMessage fc01Req = new ReadCoilsRequest(0x13, 0x13); ModbusMessage fc01Res = new ReadCoilsResponse(true, false, true, true, false, false, true, true, true, true, false, true, false, true, true, false, true, false, true, false); ModbusMessage fc02Req = new ReadDiscreteInputsRequest(0xc4, 0x16); ModbusMessage fc02Res = new ReadDiscreteInputsResponse(false, false, true, true, false, true, false, true, true, true, false, true, true, false, true, true, true, false, true, false, true, true); ModbusMessage fc03Req = new ReadHoldingRegistersRequest(0x6b, 0x03); ModbusMessage fc03Res = new ReadHoldingRegistersResponse(0x022b, 0x0000, 0x0064); ModbusMessage fc04Req = new ReadInputRegistersRequest(0x08, 0x01); ModbusMessage fc04Res = new ReadInputRegistersResponse(0x000a); ModbusMessage fc05Req = new WriteSingleCoilRequest(0xac, true); ModbusMessage fc05Res = new WriteSingleCoilResponse(0xac, true); ModbusMessage fc06Req = new WriteSingleRegisterRequest(0x01, 0x0003); ModbusMessage fc06Res = new WriteSingleRegisterResponse(0x01, 0x0003); ModbusMessage fc0fReq = new WriteMultipleCoilsRequest(0x13, true, false, true, true, false, false, true, true, true, false); ModbusMessage fc0fRes = new WriteMultipleCoilsResponse(0x13, 0x0a); ModbusMessage fc10Req = new WriteMultipleRegistersRequest(0x01, 0x000a, 0x0102); ModbusMessage fc10Res = new WriteMultipleRegistersResponse(0x01, 0x02); PrintMessagePDU(fc01Req); PrintMessagePDU(fc01Res); PrintMessagePDU(fc02Req); PrintMessagePDU(fc02Res); PrintMessagePDU(fc03Req); PrintMessagePDU(fc03Res); PrintMessagePDU(fc04Req); PrintMessagePDU(fc04Res); PrintMessagePDU(fc05Req); PrintMessagePDU(fc05Res); PrintMessagePDU(fc06Req); PrintMessagePDU(fc06Res); PrintMessagePDU(fc0fReq); PrintMessagePDU(fc0fRes); PrintMessagePDU(fc10Req); PrintMessagePDU(fc10Res); Assert(MessagePDU(fc01Req) == "Req.: 01 00 13 00 13", $"{nameof(fc01Req)} Fail"); Assert(MessagePDU(fc01Res) == "Res.: 01 03 cd 6b 05", $"{nameof(fc01Res)} Fail"); Assert(MessagePDU(fc02Req) == "Req.: 02 00 c4 00 16", $"{nameof(fc02Req)} Fail"); Assert(MessagePDU(fc02Res) == "Res.: 02 03 ac db 35", $"{nameof(fc02Res)} Fail"); Assert(MessagePDU(fc03Req) == "Req.: 03 00 6b 00 03", $"{nameof(fc03Req)} Fail"); Assert(MessagePDU(fc03Res) == "Res.: 03 06 02 2b 00 00 00 64", $"{nameof(fc03Res)} Fail"); Assert(MessagePDU(fc04Req) == "Req.: 04 00 08 00 01", $"{nameof(fc04Req)} Fail"); Assert(MessagePDU(fc04Res) == "Res.: 04 02 00 0a", $"{nameof(fc04Res)} Fail"); Assert(MessagePDU(fc05Req) == "Req.: 05 00 ac ff 00", $"{nameof(fc05Req)} Fail"); Assert(MessagePDU(fc05Res) == "Res.: 05 00 ac ff 00", $"{nameof(fc05Res)} Fail"); Assert(MessagePDU(fc06Req) == "Req.: 06 00 01 00 03", $"{nameof(fc06Req)} Fail"); Assert(MessagePDU(fc06Res) == "Res.: 06 00 01 00 03", $"{nameof(fc06Res)} Fail"); Assert(MessagePDU(fc0fReq) == "Req.: 0f 00 13 00 0a 02 cd 01", $"{nameof(fc0fReq)} Fail"); Assert(MessagePDU(fc0fRes) == "Res.: 0f 00 13 00 0a", $"{nameof(fc0fRes)} Fail"); Assert(MessagePDU(fc10Req) == "Req.: 10 00 01 00 02 04 00 0a 01 02", $"{nameof(fc10Req)} Fail"); Assert(MessagePDU(fc10Res) == "Res.: 10 00 01 00 02", $"{nameof(fc10Res)} Fail"); Assert(fc01Req.FunctionCode == (FunctionCode)0x01); Assert(fc01Res.FunctionCode == (FunctionCode)0x01); Assert(fc02Req.FunctionCode == (FunctionCode)0x02); Assert(fc02Res.FunctionCode == (FunctionCode)0x02); Assert(fc03Req.FunctionCode == (FunctionCode)0x03); Assert(fc03Res.FunctionCode == (FunctionCode)0x03); Assert(fc04Req.FunctionCode == (FunctionCode)0x04); Assert(fc04Res.FunctionCode == (FunctionCode)0x04); Assert(fc05Req.FunctionCode == (FunctionCode)0x05); Assert(fc05Res.FunctionCode == (FunctionCode)0x05); Assert(fc06Req.FunctionCode == (FunctionCode)0x06); Assert(fc06Res.FunctionCode == (FunctionCode)0x06); Assert(fc0fReq.FunctionCode == (FunctionCode)0x0f); Assert(fc0fRes.FunctionCode == (FunctionCode)0x0f); Assert(fc10Req.FunctionCode == (FunctionCode)0x10); Assert(fc10Res.FunctionCode == (FunctionCode)0x10); }