Пример #1
0
        internal static WriteSingleRegisterRequestResponse WriteSingleRegister(
            WriteSingleRegisterRequestResponse request, DataStore dataStore, ModbusDataCollection <ushort> dataSource)
        {
            DataStore.WriteData(dataStore, request.Data, dataSource, request.StartAddress, dataStore.SyncRoot);

            return(request);
        }
Пример #2
0
        /// <summary>
        ///     Write a single holding register.
        /// </summary>
        /// <param name="slaveAddress">Address of the device to write to.</param>
        /// <param name="registerAddress">Address to write.</param>
        /// <param name="value">Value to write.</param>
        public void WriteSingleRegister(byte slaveAddress, ushort registerAddress, ushort value)
        {
            WriteSingleRegisterRequestResponse request = new WriteSingleRegisterRequestResponse(slaveAddress,
                                                                                                registerAddress, value);

            Transport.UnicastMessage <WriteSingleRegisterRequestResponse>(request);
        }
 public void NewWriteSingleRegisterRequestResponse()
 {
     WriteSingleRegisterRequestResponse message = new WriteSingleRegisterRequestResponse(12, 5, 1200);
     Assert.AreEqual(12, message.SlaveAddress);
     Assert.AreEqual(5, message.StartAddress);
     Assert.AreEqual(1, message.Data.Count);
     Assert.AreEqual(1200, message.Data[0]);
 }
        public void CreateModbusMessageWriteSingleRegisterRequestResponseWithInvalidFrameSize()
        {
            WriteSingleRegisterRequestResponse request =
                ModbusMessageFactory.CreateModbusMessage <WriteSingleRegisterRequestResponse>(new byte[]
                                                                                              { 11, Modbus.WriteSingleRegister, 0, 1, 0 });

            Assert.Fail();
        }
Пример #5
0
 public void NewWriteSingleRegisterRequestResponse()
 {
     WriteSingleRegisterRequestResponse message = new WriteSingleRegisterRequestResponse(12, 5, 1200);
     Assert.Equal(12, message.SlaveAddress);
     Assert.Equal(5, message.StartAddress);
     Assert.Equal(1, message.Data.Count);
     Assert.Equal(1200, message.Data[0]);
 }
Пример #6
0
 public byte[] BuildWriteSingleRegisterCommand(byte slaveAddress, ushort registerAddress, ushort value, out IModbusMessage request)
 {
     request = new WriteSingleRegisterRequestResponse(
         slaveAddress,
         registerAddress,
         value);
     return(Transport.BuildMessageFrame(request));
 }
Пример #7
0
        /// <summary>
        ///    Asynchronously writes a single holding register.
        /// </summary>
        /// <param name="slaveAddress">Address of the device to write to.</param>
        /// <param name="registerAddress">Address to write.</param>
        /// <param name="value">Value to write.</param>
        /// <returns>A task that represents the asynchronous write operation.</returns>
        public Task WriteSingleRegisterAsync(byte slaveAddress, ushort registerAddress, ushort value)
        {
            var request = new WriteSingleRegisterRequestResponse(
                slaveAddress,
                registerAddress,
                value);

            return(PerformWriteRequestAsync <WriteSingleRegisterRequestResponse>(request));
        }
Пример #8
0
        public byte[] BuildWriteMessage(byte slaveAddress, ushort registerAddress, ushort value)
        {
            var request = new WriteSingleRegisterRequestResponse(
                slaveAddress,
                registerAddress,
                value);

            return(Transport.BuildMessageFrame(request));
        }
        public void CreateModbusMessageWriteSingleRegisterRequestResponse()
        {
            WriteSingleRegisterRequestResponse request         = ModbusMessageFactory.CreateModbusMessage <WriteSingleRegisterRequestResponse>(new byte[] { 17, Modbus.WriteSingleRegister, 0, 1, 0, 3 });
            WriteSingleRegisterRequestResponse expectedRequest = new WriteSingleRegisterRequestResponse(17, 1, 3);

            AssertModbusMessagePropertiesAreEqual(expectedRequest, request);
            Assert.AreEqual(expectedRequest.StartAddress, request.StartAddress);
            Assert.AreEqual(expectedRequest.Data.NetworkBytes, request.Data.NetworkBytes);
        }
Пример #10
0
        public void ApplyRequest_VerifyModbusRequestReceivedEventIsFired()
        {
            bool eventFired = false;
            ModbusSlave slave = ModbusSerialSlave.CreateAscii(1, new SerialPort());
            WriteSingleRegisterRequestResponse request = new WriteSingleRegisterRequestResponse(1, 1, 1);
            slave.ModbusSlaveRequestReceived += (obj, args) => { eventFired = true; Assert.AreEqual(request, args.Message); };

            slave.ApplyRequest(request);
            Assert.IsTrue(eventFired);
        }
Пример #11
0
        public void ApplyRequest_VerifyModbusRequestReceivedEventIsFired()
        {
            bool        eventFired = false;
            ModbusSlave slave      = ModbusSerialSlave.CreateAscii(1, new SerialPort());
            WriteSingleRegisterRequestResponse request = new WriteSingleRegisterRequestResponse(1, 1, 1);

            slave.ModbusSlaveRequestReceived += (obj, args) => { eventFired = true; Assert.AreEqual(request, args.Message); };

            slave.ApplyRequest(request);
            Assert.IsTrue(eventFired);
        }
Пример #12
0
        public void WriteSingleRegister()
        {
            ushort startAddress = 35;
            ushort value        = 45;

            Assert.AreNotEqual(value, _testDataStore.HoldingRegisters[startAddress - 1]);
            WriteSingleRegisterRequestResponse expectedResponse = new WriteSingleRegisterRequestResponse(1, startAddress, value);
            WriteSingleRegisterRequestResponse response         = ModbusSlave.WriteSingleRegister(new WriteSingleRegisterRequestResponse(1, startAddress, value), _testDataStore, _testDataStore.HoldingRegisters);

            AssertModbusMessagePropertiesAreEqual(expectedResponse, response);
        }
Пример #13
0
 public void WriteSingleRegister()
 {
     ushort startAddress = 35;
     ushort value = 45;
     Assert.AreNotEqual(value, _testDataStore.HoldingRegisters[startAddress - 1]);
     WriteSingleRegisterRequestResponse expectedResponse = new WriteSingleRegisterRequestResponse(1, startAddress, value);
     WriteSingleRegisterRequestResponse response = ModbusSlave.WriteSingleRegister(new WriteSingleRegisterRequestResponse(1, startAddress, value), _testDataStore, _testDataStore.HoldingRegisters);
     AssertModbusMessagePropertiesAreEqual(expectedResponse, response);
 }
 public void CreateModbusMessageWriteSingleRegisterRequestResponse()
 {
     WriteSingleRegisterRequestResponse request =
         ModbusMessageFactory.CreateModbusMessage<WriteSingleRegisterRequestResponse>(new byte[]
         {17, Modbus.WriteSingleRegister, 0, 1, 0, 3});
     WriteSingleRegisterRequestResponse expectedRequest = new WriteSingleRegisterRequestResponse(17, 1, 3);
     AssertModbusMessagePropertiesAreEqual(expectedRequest, request);
     Assert.AreEqual(expectedRequest.StartAddress, request.StartAddress);
     Assert.AreEqual(expectedRequest.Data.NetworkBytes, request.Data.NetworkBytes);
 }
Пример #15
0
        public void ValidateWriteSingleRegisterResponse(byte[] readBytes, IModbusMessage request)
        {
            WriteSingleRegisterRequestResponse response = (WriteSingleRegisterRequestResponse)Transport.CreateResponse <WriteSingleRegisterRequestResponse>(readBytes);

            Transport.ValidateResponse(request, response);
        }
Пример #16
0
 public void ToStringOverride()
 {
     WriteSingleRegisterRequestResponse message = new WriteSingleRegisterRequestResponse(12, 5, 1200);
     Assert.Equal("Write single holding register 1200 at address 5.", message.ToString());
 }
 public void ToStringOverride()
 {
     WriteSingleRegisterRequestResponse message = new WriteSingleRegisterRequestResponse(12, 5, 1200);
     Assert.AreEqual("Write single holding register 1200 at address 5.", message.ToString());
 }
Пример #18
0
        internal static WriteSingleRegisterRequestResponse WriteSingleRegister(WriteSingleRegisterRequestResponse request, ModbusDataCollection<ushort> dataSource)
        {
            DataStore.WriteData(request.Data, dataSource, request.StartAddress);

            return request;
        }