Exemple #1
0
        public void TcpOverSocketTest()
        {
            var model   = new ModbusModel();
            var scanner = new ModbusTCPScanner();

            using (var server = new TcpServerModel(model, scanner))
                using (var master = ModbusMaster.TCP(IPAddress.Loopback.ToString(), server.Port))
                {
                    //race condition avoided by access order
                    H.SharedSlaveTest(model, master);
                }
        }
Exemple #2
0
        public void TcpExceptionOverSocketTest()
        {
            var model   = new ModbusModel();
            var scanner = new ModbusTCPScanner();

            using (var server = new TcpServerModel(model, scanner))
                using (var master = ModbusMaster.TCP(IPAddress.Loopback.ToString(), server.Port))
                {
                    var ex = Assert.Throws <ModbusException>(() => H.SharedExceptionTest(master));
                    Assert.AreEqual("Modbus exception 2", ex.Message);
                    Assert.AreEqual(2, ex.Code);
                }
        }
Exemple #3
0
        public void RtuOverSocketTest()
        {
            var model   = new ModbusModel();
            var scanner = new ModbusRTUScanner();

            using (var server = new TcpServerModel(model, scanner))
                using (var client = new TcpClient())
                {
                    client.Connect(IPAddress.Loopback, server.Port);
                    var stream = new ModbusSocketStream(client, 400);
                    var master = new ModbusMaster(stream, new ModbusRTUProtocol());
                    //race condition avoided by access order
                    H.SharedSlaveTest(model, master);
                }
        }
Exemple #4
0
        public void RtuExceptionOverSocketTest()
        {
            var model   = new ModbusModel();
            var scanner = new ModbusRTUScanner();

            using (var server = new TcpServerModel(model, scanner))
                using (var client = new TcpClient())
                {
                    client.Connect(IPAddress.Loopback, server.Port);
                    var stream = new ModbusSocketStream(client, 400);
                    var master = new ModbusMaster(stream, new ModbusRTUProtocol());
                    var ex     = Assert.Throws <ModbusException>(() => H.SharedExceptionTest(master));
                    Assert.AreEqual("Modbus exception 2", ex.Message);
                    Assert.AreEqual(2, ex.Code);
                }
        }
Exemple #5
0
        public void TcpRetryAfterTimeoutTest()
        {
            var model   = new ModbusModel();
            var scanner = new ModbusTCPScanner();

            using (var server = new TcpServerModel(model, scanner))
                using (var master = ModbusMaster.TCP(IPAddress.Loopback.ToString(), server.Port, 50))
                {
                    server.delay = 100;
                    Assert.Throws(typeof(Exception), () => master.WriteCoil(0, 0, false));
                    //client side delay needed to eat all server side delay otherwise
                    //the added socket stream discard on write will still throw tid mismatch
                    System.Threading.Thread.Sleep(100);
                    server.delay = 0;
                    master.WriteCoil(0, 0, false);
                }
        }