| | |
| | | { |
| | | throw new OperationCanceledException(); |
| | | } |
| | | var modPlc = listPlc.Where(s => s.Id == modDevice.Id).FirstOrDefault(); |
| | | var modPlc = listPlc.Where(s => s.Id == modDevice.PlcId).FirstOrDefault(); |
| | | modDevice.Type = modPlc.Type; |
| | | //读取plc的值 |
| | | var modConn = PLCTaskAction.listPlcConn.FirstOrDefault(s => s != null && s.PlcId == modDevice.PlcId); |
| | | if (modConn == null) |
| | |
| | | modDevice.PickStorey = Convert.ToInt32(pickStorey); |
| | | } |
| | | } |
| | | //else |
| | | //{ |
| | | // //测试 |
| | | // modDevice.TaskNo = "TK00001"; |
| | | // modDevice.TaskType = TaskTypeEnum.In; |
| | | // modDevice.Wcs = new Random().Next(1000).ToString(); |
| | | // modDevice.Plc = new Random().Next(1000).ToString(); |
| | | // modDevice.Status = true; |
| | | //} |
| | | // 比较之前的状态 |
| | | if (initialStates.TryGetValue(modDevice.Id, out var initialState)) |
| | | { |
| | |
| | | _plcDeviceHubContext.Clients.All.PublicPlcDevice(modDevice); |
| | | } |
| | | } |
| | | |
| | | initialStates[modDevice.Id] = modDevice.Adapt<WcsDeviceOutput>(); |
| | | |
| | | |
| | | } |
| | | Thread.Sleep(2000); |
| | | } |
| | | catch (OperationCanceledException) |
| | | { |
| | | break; |
| | | } |
| | | catch (Exception) |
| | | { |
| | | |
| | | throw; |
| | | } |
| | | } |
| | | }, cts.Token); |