using IMCS.DefaultList; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using YG.Device; namespace IMCS.Logic { public class WeiLiHandle : DeviceList { private static WeiLiHandle weiLi = new WeiLiHandle(); public static WeiLiHandle Instance { get { return weiLi; } } public override event RunMessage Msg; public override event RunState rState; WeiLiDefaultList weiLiDefaultList = new WeiLiDefaultList(); DeviceS7 pLC_S7Handle; public override void DeviceInit() { weiLiDefaultList.PropertyChanged += WeiLiDefaultList_PropertyChanged; base.DeviceInit(); } private void WeiLiDefaultList_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e) { WeiLiDefaultList item = sender as WeiLiDefaultList; Msg?.Invoke("WL", "DB250", item.RunResult.ToString()); } public override void DeviceSend(object ob, object ob1) { pLC_S7Handle.DeviceSend(ob, ob1); } public override T DeviceRead(string value,ushort leng=0) { return pLC_S7Handle.DeviceRead(value); } public override void DeviceStart() { pLC_S7Handle = new DeviceS7(HslCommunication.Profinet.Siemens.SiemensPLCS.S1200, "192.168.170.81"); pLC_S7Handle.DeviceInit(); pLC_S7Handle.DeviceState(); Task.Factory.StartNew(async () => { while (true) { await Task.Delay(100); if (pLC_S7Handle.ConnectionResult.IsSuccess) { HslCommunication.OperateResult result = pLC_S7Handle.SiemensS7Net.Read("DB200.44", 8); if (result.Content != null&&result.Content.Length==8) { short taskID = result.Content.GetShort(0); short taskStart = result.Content.GetShort(2); short taskEnd = result.Content.GetShort(4); short taskResult = result.Content.GetShort(6); if (result.IsSuccess) { weiLiDefaultList.RunResult = $"{taskID},{taskResult}"; } else { YG.Log.Instance.WriteLogAdd($"{pLC_S7Handle.SiemensS7Net.IpAddress}+读取地址DB200.50失败"); } } } else { YG.Log.Instance.WriteLogAdd($"{pLC_S7Handle.SiemensS7Net.IpAddress}+连接失败"); } } }); base.DeviceStart(); } } }