diff --git a/README.md b/README.md index 54d9589..f2c19a6 100644 --- a/README.md +++ b/README.md @@ -85,28 +85,15 @@ Logger.OnNewLogMessage((date, msg) => { }); //setting up a new PLC interface -MewtocolInterface interf = new MewtocolInterface("192.168.115.5"); +MewtocolInterface plc = new MewtocolInterface("192.168.115.5"); -await interf.ConnectAsync(); +await plc.ConnectAsync(); ``` -You can also use the callbacks of the `ConnectAsync()` method to do something after the initial connection establishment. - -```C# -await interf.ConnectAsync( - //PLC connected - (plc) => { - if(plcinf.OperationMode.RunMode) - Console.WriteLine("PLC is in RUN"); - }, - //Connection failed - () => { - Console.WriteLine("PLC failed to connect"); - } -); -``` ## Reading data registers / contacts +[Detailed instructions](/wiki/Attribute-handled-reading) + - Create a new class that inherits from `RegisterCollectionBase` ```C# @@ -136,20 +123,14 @@ public class TestRegisters : RegisterCollectionBase { - attach an automatic poller by chaining `.WithPoller()` after the register attachment ```C# -//attaching a logger -Logger.LogLevel = LogLevel.Verbose; -Logger.OnNewLogMessage((date, msg) => { - Console.WriteLine($"{date.ToString("HH:mm:ss")} {msg}"); -}); - //setting up a new PLC interface and register collection -MewtocolInterface interf = new MewtocolInterface("192.168.115.5"); +MewtocolInterface plc = new MewtocolInterface("192.168.115.5"); TestRegisters registers = new TestRegisters(); //attaching the register collection and an automatic poller -interf.WithRegisterCollection(registers).WithPoller(); +plc.WithRegisterCollection(registers).WithPoller(); -await interf.ConnectAsync( +await plc.ConnectAsync( (plcinf) => { //reading a value from the register collection Console.WriteLine($"Time Value is: {registers.TestTime}"); @@ -170,37 +151,28 @@ Sets the register without feedback if it was set ```C# //inverts the boolean register -interf.SetRegister(nameof(registers.TestBool1), !registers.TestBool1); +plc.SetRegister(nameof(registers.TestBool1), !registers.TestBool1); //set the current second to the PLCs TIME register -interf.SetRegister(nameof(registers.TestTime), TimeSpan.FromSeconds(DateTime.Now.Second)); +plc.SetRegister(nameof(registers.TestTime), TimeSpan.FromSeconds(DateTime.Now.Second)); //writes 'Test' to the PLCs string register -interf.SetRegister(nameof(registers.TestString1), "Test"); +plc.SetRegister(nameof(registers.TestString1), "Test"); ``` You can also set a register by calling its name directly (Must be either in an attached register collection or added to the list manually) Adding registers to a manual list ```C# -interf.AddRegister(105, _name: "ManualBoolRegister"); +plc.AddRegister(105, _name: "ManualBoolRegister"); ``` Reading the value of the manually added register ```C# //get the value as a string -string value = interf.GetRegister("ManualBoolRegister").GetValueString(); +string value = plc.GetRegister("ManualBoolRegister").GetValueString(); //get the value by casting -bool value2 = interf.GetRegister("ManualBoolRegister").Value; +bool value2 = plc.GetRegister("ManualBoolRegister").Value; //for double casted ones like numbers -var value2 = interf.GetRegister>("NumberRegister").Value; -``` - -### Asynchronous - -Sets the register waiting for the PLC to confirm it was set - -```C# -//inverts the boolean register -await interf.SetRegisterAsync(nameof(registers.TestBool1), !registers.TestBool1); +var value2 = plc.GetRegister>("NumberRegister").Value; ```