mirror of
https://github.com/fbarresi/Sharp7.git
synced 2026-02-04 08:42:51 +00:00
190 lines
5.2 KiB
C#
190 lines
5.2 KiB
C#
using System;
|
|
using Shouldly;
|
|
using Xunit;
|
|
|
|
namespace Sharp7.Tests
|
|
{
|
|
public class ClientTest : ServerClientTestBase
|
|
{
|
|
|
|
[Fact]
|
|
public void ClientIsNotNull()
|
|
{
|
|
Client.ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact]
|
|
public void ServerIsNotNull()
|
|
{
|
|
Server.ShouldNotBeNull();
|
|
}
|
|
|
|
[Fact]
|
|
public void Timeout()
|
|
{
|
|
Client.ConnTimeout.ShouldBe(2000);
|
|
}
|
|
|
|
[Fact]
|
|
public void Connected()
|
|
{
|
|
Client.Connected.ShouldBe(true);
|
|
}
|
|
|
|
[Fact]
|
|
public void Port()
|
|
{
|
|
Client.PLCPort.ShouldBe(102);
|
|
}
|
|
|
|
[Fact]
|
|
public void ReadWriteDb()
|
|
{
|
|
var bytes = new byte[] { 1, 2, 3 };
|
|
var index = 3;
|
|
Server.RegisterArea(S7Server.SrvAreaDB, index, ref bytes, bytes.Length);
|
|
|
|
var buffer = new byte[bytes.Length];
|
|
var rc = Client.DBRead(index, 0, bytes.Length, buffer);
|
|
|
|
//test read
|
|
rc.ShouldBe(0);
|
|
buffer.ShouldBe(bytes);
|
|
|
|
buffer = new byte[] { 3, 2, 1 };
|
|
rc = Client.DBWrite(index, 0, bytes.Length, buffer);
|
|
|
|
//test write
|
|
rc.ShouldBe(0);
|
|
bytes.ShouldBe(buffer);
|
|
}
|
|
|
|
[Fact]
|
|
public void ReadWriteAb()
|
|
{
|
|
var bytes = new byte[] { 1, 2, 3 };
|
|
Server.RegisterArea(S7Server.SrvAreaPa, 0, ref bytes, bytes.Length);
|
|
|
|
var buffer = new byte[bytes.Length];
|
|
var rc = Client.ABRead(0, bytes.Length, buffer);
|
|
|
|
//test read
|
|
rc.ShouldBe(0);
|
|
buffer.ShouldBe(bytes);
|
|
|
|
buffer = new byte[] { 3, 2, 1 };
|
|
rc = Client.ABWrite(0, bytes.Length, buffer);
|
|
|
|
//test write
|
|
rc.ShouldBe(0);
|
|
bytes.ShouldBe(buffer);
|
|
}
|
|
|
|
[Fact]
|
|
public void ReadWriteCt()
|
|
{
|
|
var bytes = new byte[] { 0,1,2,3,4,5,6,7,8};
|
|
var index = 3;
|
|
Server.RegisterArea(S7Server.SrvAreaCt, index, ref bytes, bytes.Length/2);
|
|
|
|
var buffer = new ushort[2];
|
|
var rc = Client.CTRead(0, 2, buffer);
|
|
|
|
//test read
|
|
rc.ShouldBe(0);
|
|
buffer.ShouldBe(new ushort[]{0x0100,0x0302});
|
|
|
|
buffer = new ushort[] {0x0403, 0x0201 };
|
|
rc = Client.CTWrite(0, 2, buffer);
|
|
|
|
//test write
|
|
rc.ShouldBe(0);
|
|
bytes.ShouldBe(new byte[] { 3, 4, 1, 2, 4, 5, 6, 7, 8 });
|
|
}
|
|
|
|
[Fact]
|
|
public void ReadWriteMb()
|
|
{
|
|
var bytes = new byte[] { 0, 1, 2};
|
|
Server.RegisterArea(S7Server.SrvAreaMk, 0, ref bytes, bytes.Length);
|
|
|
|
var buffer = new byte[bytes.Length];
|
|
var rc = Client.MBRead(0,bytes.Length,buffer);
|
|
|
|
//test read
|
|
rc.ShouldBe(0);
|
|
buffer.ShouldBe(bytes);
|
|
|
|
buffer = new byte[] { 3, 2, 1 };
|
|
rc = Client.MBWrite(0, bytes.Length, buffer);
|
|
|
|
//test write
|
|
rc.ShouldBe(0);
|
|
bytes.ShouldBe(buffer);
|
|
}
|
|
|
|
[Fact]
|
|
public void ReadWriteTm()
|
|
{
|
|
var bytes = new byte[] {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11};
|
|
var index = 5;
|
|
Server.RegisterArea(S7Server.SrvAreaTm, index, ref bytes, bytes.Length / 2);
|
|
|
|
var buffer = new ushort[2];
|
|
var rc = Client.TMRead(0, 2, buffer);
|
|
|
|
//test read
|
|
rc.ShouldBe(0);
|
|
buffer.ShouldBe(new ushort[] { 0x0100, 0x0302 });
|
|
|
|
buffer = new ushort[] { 0x0403, 0x0201 };
|
|
rc = Client.TMWrite(0, 2, buffer);
|
|
|
|
//test write
|
|
rc.ShouldBe(0);
|
|
bytes.ShouldBe(new byte[] {3, 4, 1, 2, 4, 5, 6, 7, 8, 9, 10, 11});
|
|
}
|
|
|
|
[Fact]
|
|
public void ReadWriteEb()
|
|
{
|
|
var bytes = new byte[] { 0, 1, 2 };
|
|
Server.RegisterArea(S7Server.SrvAreaPe, 0, ref bytes, bytes.Length);
|
|
|
|
var buffer = new byte[bytes.Length];
|
|
var rc = Client.EBRead(0, bytes.Length, buffer);
|
|
|
|
//test read
|
|
rc.ShouldBe(0);
|
|
buffer.ShouldBe(bytes);
|
|
|
|
buffer = new byte[] { 3, 2, 1 };
|
|
rc = Client.EBWrite(0, bytes.Length, buffer);
|
|
|
|
//test write
|
|
rc.ShouldBe(0);
|
|
bytes.ShouldBe(buffer);
|
|
}
|
|
|
|
[Fact]
|
|
public void Multivars()
|
|
{
|
|
var bytes = new byte[] { 1, 2, 3,4,5,6,7,8,9,0 };
|
|
var index = 30;
|
|
Server.RegisterArea(S7Server.SrvAreaDB, index, ref bytes, bytes.Length);
|
|
|
|
var buffer = new byte[bytes.Length];
|
|
var multivar = new S7MultiVar(Client);
|
|
multivar.ShouldNotBeNull();
|
|
|
|
multivar.Add(new Sharp7.S7Consts.S7Tag(){Area = Sharp7.S7Consts.S7AreaDB, DBNumber = index, Elements = 2,Start = 0, WordLen = 2}, ref buffer).ShouldBe(true);
|
|
|
|
multivar.Read().ShouldBe(0);
|
|
multivar.Add(new Sharp7.S7Consts.S7Tag() { Area = Sharp7.S7Consts.S7AreaDB, DBNumber = index, Elements = 2, Start = 0, WordLen = 2 }, ref buffer).ShouldBe(true);
|
|
|
|
multivar.Write().ShouldBe(0);
|
|
|
|
}
|
|
}
|
|
}
|