using System; using System.Threading; using iWareCommon.Utils; using System.Linq; using Newtonsoft.Json; using System.Collections.Generic; using iWareCommon; using System.Text; using iWareModel; namespace iWareSda { // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“LineService”。 public class HuscoLineService : IHuscoLineService { private static string _namespace = "iWareSda.HuscoLineService"; private static string nofoundStackerMsg = SysHelper.Language(WareSdaStruct.LanguageFlg, "没有找到输送线", "No found the Line"); public HuscoLineView GetLineInfo(int deviceId) { var device = HuscoLine_CacheEntity.DeviceObjs.FirstOrDefault(x => x.View.DeviceId == deviceId); if (device == null) { return null; } return device.View; } /// /// 判断是否有心跳 /// /// /// public SdaResEntity IsHaveHeatBeat(int deviceId) { SdaResEntity sdaResult = new SdaResEntity(); string msg; try { var device = HuscoLine_CacheEntity.DeviceObjs.FirstOrDefault(x => x.View.DeviceId == deviceId); if (device == null) { sdaResult.resMsg = nofoundStackerMsg; return sdaResult; } var result = device.IsHaveHeatBeat(); sdaResult.result = true; sdaResult.resData = result; return sdaResult; } catch (Exception ex) { msg = "验证是否有心跳出现异常:" + ex.Message; Log4NetHelper.WriteErrorLog(LogType.LineSdaService, msg, ex); sdaResult.result = false; sdaResult.resMsg = msg; return sdaResult; } } /// /// 检测设备是否可以发任务 /// /// public SdaResEntity IsAllowSendTask(int deviceId) { SdaResEntity res = new SdaResEntity(); res.result = true; return res; //try //{ // DeviceEnum device = (DeviceEnum)Enum.Parse(typeof(DeviceEnum), deviceId.ToString()); // AreaEnum area = BussinessHelper.GetAreaByDevice(device); // var line = HuscoLine_CacheEntity.Lines[0]; // switch (area) // { // case AreaEnum.区域1: // if (!line.R_AutoMode_1) // { // res.resData = false; // res.resMsg = "区域1设备不是自动模式"; // return res; // } // break; // case AreaEnum.区域2: // if (!line.R_AutoMode_2) // { // res.resData = false; // res.resMsg = "区域2设备不是自动模式"; // return res; // } // break; // } // if (!line.IsConnected) // { // res.resData = false; // res.resMsg = "未与PLC连接"; // return res; // } // switch (device) // { // case DeviceEnum.翻转机R01: // if (line.R_R01_TaskNo != 0) // { // res.resData = false; // res.resMsg = "R01上有任务在执行"; // return res; // } // break; // case DeviceEnum.翻转机R04: // if (line.R_R04_TaskNo != 0) // { // res.resData = false; // res.resMsg = "R04上有任务在执行"; // return res; // } // break; // default: // break; // } // res.resData = true; // return res; //} //catch (Exception ex) //{ // Log4NetHelper.WriteErrorLog(LogType.SdaService, "检测R01是否可以发任务 出现异常", ex); // res.result = false; // res.resMsg = "检测R01是否可以发任务 出现异常:" + ex.Message; // return res; //} } /// /// 写入TaskFinish /// /// /// /// public SdaResEntity WriteTaskFinish(int deviceId, int rgvLocation) { SdaResEntity sdaResult = new SdaResEntity(); return sdaResult; //string msg; //try //{ // var line = HuscoLine_CacheEntity.DeviceObjs.FirstOrDefault(x => x.View.DeviceId == deviceId); // if (line == null) // { // sdaResult.resMsg = nofoundStackerMsg; // return sdaResult; // } // EDevice _rgv = (EDevice)Enum.Parse(typeof(EDevice), rgvLocation.ToString()); // MessageModel fr = null; // switch (_rgv) // { // case EDevice.RGV1: // fr = line.S7.WriteValuePoint(HuscoLine_CacheEntity.W_DBHeader, line.DBBlockForWrite.W_T1_Finish, 1, line.View.W_T1_Finish); // break; // case EDevice.RGV2: // fr = line.S7.WriteValuePoint(HuscoLine_CacheEntity.W_DBHeader, line.DBBlockForWrite.W_T2_Finish, 1, line.View.W_T2_Finish); // break; // case EDevice.RGV3: // fr = line.S7.WriteValuePoint(HuscoLine_CacheEntity.W_DBHeader, line.DBBlockForWrite.W_T3_Finish, 1, line.View.W_T3_Finish); // break; // } // if (fr.result) // { // sdaResult.result = true; // return sdaResult; // } // else // { // sdaResult.resMsg = fr.resMsg; // return sdaResult; // } //} //catch (Exception ex) //{ // msg = "写入Task_Finish_ACK出现异常:" + ex.Message; // Log4NetHelper.WriteErrorLog(LogType.LineSdaService, msg, ex); // sdaResult.result = false; // sdaResult.resMsg = msg; // return sdaResult; //} } } }