Beispiel #1
0
        public void ReadWriteAnyAsyncTest()
        {
            var client = new Dacs7Client();

            client.ConnectAsync(ConnectionString).Wait();
            Assert.True(client.IsConnected);

            client.WriteAnyAsync(PlcArea.DB, TestByteOffset, (byte)0x05, new int[] { 1, TestDbNr }).Wait();;
            var bytes = client.ReadAnyAsync(PlcArea.DB, TestByteOffset, typeof(byte), new int[] { 1, TestDbNr }).Result as byte[];

            Assert.NotNull(bytes);
            Assert.Equal((byte)0x05, bytes[0]);

            client.WriteAnyAsync(PlcArea.DB, TestByteOffset, (byte)0x00, new int[] { 1, TestDbNr }).Wait();
            bytes = client.ReadAnyAsync(PlcArea.DB, TestByteOffset, typeof(byte), new int[] { 1, TestDbNr }).Result as byte[];
            Assert.NotNull(bytes);
            Assert.Equal((byte)0x00, bytes[0]);

            client.WriteAnyAsync(PlcArea.DB, TestByteOffset, (byte)0x05, new int[] { 1, TestDbNr }).Wait();
            bytes = client.ReadAnyAsync(PlcArea.DB, TestByteOffset, typeof(byte), new int[] { 1, TestDbNr }).Result as byte[];
            Assert.NotNull(bytes);
            Assert.Equal((byte)0x05, bytes[0]);

            client.WriteAnyAsync(PlcArea.DB, TestByteOffset, (byte)0x00, new int[] { 1, TestDbNr }).Wait();
            bytes = client.ReadAnyAsync(PlcArea.DB, TestByteOffset, typeof(byte), new int[] { 1, TestDbNr }).Result as byte[];
            Assert.NotNull(bytes);
            Assert.Equal((byte)0x00, bytes[0]);

            client.WriteAnyAsync(PlcArea.DB, TestBitOffset, true, new int[] { 1, TestDbNr }).Wait();
            var state = client.ReadAnyAsync(PlcArea.DB, TestBitOffset, typeof(bool), new int[] { 1, TestDbNr }).Result as byte[];

            Assert.NotNull(state);
            Assert.Equal((byte)0x01, state[0]);

            client.WriteAnyAsync(PlcArea.DB, TestBitOffset, false, new int[] { 1, TestDbNr }).Wait();
            state = client.ReadAnyAsync(PlcArea.DB, TestBitOffset, typeof(bool), new int[] { 1, TestDbNr }).Result as byte[];
            Assert.NotNull(state);
            Assert.Equal((byte)0x00, state[0]);

            client.WriteAnyAsync(PlcArea.DB, TestBitOffset, true, new int[] { 1, TestDbNr }).Wait();
            state = client.ReadAnyAsync(PlcArea.DB, TestBitOffset, typeof(bool), new int[] { 1, TestDbNr }).Result as byte[];
            Assert.NotNull(state);
            Assert.Equal((byte)0x01, state[0]);

            client.WriteAnyAsync(PlcArea.DB, TestBitOffset, false, new int[] { 1, TestDbNr }).Wait();
            state = client.ReadAnyAsync(PlcArea.DB, TestBitOffset, typeof(bool), new int[] { 1, TestDbNr }).Result as byte[];
            Assert.NotNull(state);
            Assert.Equal((byte)0x00, state[0]);


            client.DisconnectAsync().Wait();
            Assert.False(client.IsConnected);
        }
Beispiel #2
0
        public void ReadWriteAnyAsyncDoubleTest()
        {
            var client  = new Dacs7Client();
            var client2 = new Dacs7Client();
            var t       = new Task[2];

            t[0] = client.ConnectAsync(ConnectionString);
            t[1] = client2.ConnectAsync(ConnectionString);

            Task.WaitAll(t);

            Assert.True(client.IsConnected);
            Assert.Equal(true, client2.IsConnected);

            t[0] = client.WriteAnyAsync(PlcArea.DB, TestByteOffset, (byte)0x05, new int[] { 1, TestDbNr });
            t[1] = client2.WriteAnyAsync(PlcArea.DB, TestByteOffset2, (byte)0x05, new int[] { 1, TestDbNr });

            Task.WaitAll(t);

            var t2 = new Task <byte[]> [2];

            t2[0] = client.ReadAnyAsync(PlcArea.DB, TestByteOffset, typeof(byte), new int[] { 1, TestDbNr });
            t2[1] = client2.ReadAnyAsync(PlcArea.DB, TestByteOffset2, typeof(byte), new int[] { 1, TestDbNr });

            Task.WaitAll(t2);

            var bytes = t2[0].Result as byte[];

            Assert.NotNull(bytes);
            Assert.Equal((byte)0x05, bytes[0]);

            bytes = t2[1].Result as byte[];
            Assert.NotNull(bytes);
            Assert.Equal((byte)0x05, bytes[0]);

            t[0] = client.WriteAnyAsync(PlcArea.DB, TestByteOffset, (byte)0x00, new int[] { 1, TestDbNr });
            t[1] = client2.WriteAnyAsync(PlcArea.DB, TestByteOffset2, (byte)0x00, new int[] { 1, TestDbNr });

            Task.WaitAll(t);

            t2    = new Task <byte[]> [2];
            t2[0] = client.ReadAnyAsync(PlcArea.DB, TestByteOffset, typeof(byte), new int[] { 1, TestDbNr });
            t2[1] = client2.ReadAnyAsync(PlcArea.DB, TestByteOffset2, typeof(byte), new int[] { 1, TestDbNr });

            Task.WaitAll(t2);

            bytes = t2[0].Result as byte[];
            Assert.NotNull(bytes);
            Assert.Equal((byte)0x00, bytes[0]);

            bytes = t2[1].Result as byte[];
            Assert.NotNull(bytes);
            Assert.Equal((byte)0x00, bytes[0]);

            t[0] = client.WriteAnyAsync(PlcArea.DB, TestBitOffset, true, new int[] { 1, TestDbNr });
            t[1] = client2.WriteAnyAsync(PlcArea.DB, TestBitOffset2, true, new int[] { 1, TestDbNr });

            Task.WaitAll(t);

            t2    = new Task <byte[]> [2];
            t2[0] = client.ReadAnyAsync(PlcArea.DB, TestBitOffset, typeof(bool), new int[] { 1, TestDbNr });
            t2[1] = client2.ReadAnyAsync(PlcArea.DB, TestBitOffset2, typeof(bool), new int[] { 1, TestDbNr });

            Task.WaitAll(t2);

            bytes = t2[0].Result as byte[];
            Assert.NotNull(bytes);
            Assert.Equal((byte)0x01, bytes[0]);

            bytes = t2[1].Result as byte[];
            Assert.NotNull(bytes);
            Assert.Equal((byte)0x01, bytes[0]);

            t[0] = client.WriteAnyAsync(PlcArea.DB, TestBitOffset, false, new int[] { 1, TestDbNr });
            t[1] = client2.WriteAnyAsync(PlcArea.DB, TestBitOffset2, false, new int[] { 1, TestDbNr });

            Task.WaitAll(t);

            t2    = new Task <byte[]> [2];
            t2[0] = client.ReadAnyAsync(PlcArea.DB, TestBitOffset, typeof(bool), new int[] { 1, TestDbNr });
            t2[1] = client2.ReadAnyAsync(PlcArea.DB, TestBitOffset2, typeof(bool), new int[] { 1, TestDbNr });

            Task.WaitAll(t);

            bytes = t2[0].Result as byte[];
            Assert.NotNull(bytes);
            Assert.Equal((byte)0x00, bytes[0]);

            bytes = t2[1].Result as byte[];
            Assert.NotNull(bytes);
            Assert.Equal((byte)0x00, bytes[0]);

            t[0] = client.DisconnectAsync();
            t[1] = client2.DisconnectAsync();

            Task.WaitAll(t);

            Assert.False(client.IsConnected);
            Assert.False(client2.IsConnected);
        }