public void NModbusAsciiMaster_ReadTimeout() { SerialPort port = ModbusMasterFixture.CreateAndOpenSerialPort(ModbusMasterFixture.DefaultMasterSerialPortName); using IModbusSerialMaster master = ModbusSerialMaster.CreateAscii(port); master.Transport.ReadTimeout = master.Transport.WriteTimeout = 1000; Assert.Throws <TimeoutException>(() => master.ReadCoils(100, 1, 1)); }
public void NModbusRtuMaster_ReadTimeout() { SerialPort port = ModbusMasterFixture.CreateAndOpenSerialPort(ModbusMasterFixture.DefaultMasterSerialPortName); using ModbusSerialMaster? master = ModbusSerialMaster.CreateRtu(port); master.Transport.ReadTimeout = master.Transport.WriteTimeout = 1000; master.ReadCoils(100, 1, 1); }
public void NModbusSerialRtuSlave_BonusCharacter_VerifyTimeout() { SerialPort masterPort = ModbusMasterFixture.CreateAndOpenSerialPort(ModbusMasterFixture.DefaultMasterSerialPortName); SerialPort slavePort = ModbusMasterFixture.CreateAndOpenSerialPort(ModbusMasterFixture.DefaultSlaveSerialPortName); using ModbusSerialMaster? master = ModbusSerialMaster.CreateRtu(masterPort); using ModbusSerialSlave? slave = ModbusSerialSlave.CreateRtu(1, slavePort); master.Transport.ReadTimeout = master.Transport.WriteTimeout = 1000; slave.DataStore = DataStoreFactory.CreateTestDataStore(); Thread slaveThread = new(async() => await slave.ListenAsync()); slaveThread.IsBackground = true; slaveThread.Start(); // assert successful communication Assert.Equal(new bool[] { false, true }, master.ReadCoils(1, 1, 2)); // write "bonus" character masterPort.Write("*"); // assert successful communication Assert.Equal(new bool[] { false, true }, master.ReadCoils(1, 1, 2)); }