| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | using System.Net.NetworkInformation;namespace WCS.Core;public class PLC : EntityEx<PLCInfo>{    public PLC(PLCInfo ent, World world) : base(ent)    {        if (Configs.PLCAccessorCreater != null)            Accessor = Configs.PLCAccessorCreater.Create(ent);        else            throw new Exception("Configs.PLCAccessorCreater未赋值");        Task.Run(() =>        {            while (true)            {                Ping = ping();                Task.Delay(1000).Wait();            }            // ReSharper disable once FunctionNeverReturns        });    }    public bool Ping { get; private set; }    public IPLCAccessor Accessor { get; private set; }    private bool ping(int timeout = 300)    {        var p = new Ping();        if (Entity.IP == "1") return false;        var res = p.Send(Entity.IP, timeout);        return res.Status == IPStatus.Success;    }}public interface IPLCAccessorCreater{    IPLCAccessor Create(PLCInfo data);}public interface IPLCAccessor{    void WriteBytes(ushort db, ushort address, byte[] data);    byte[] ReadBytes(ushort db, ushort address, ushort length);}
 |