using iWareCommon.Utils; using iWareModel; using Newtonsoft.Json; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.ServiceModel; using System.Text; namespace iWareSda { // 注意: 使用“重构”菜单上的“重命名”命令,可以同时更改代码和配置文件中的类名“RgvService”。 //public class RgvService : IRgvService //{ // public SdaResEntity ClearAlarm(int deviceId) // { // SdaResEntity sdaResult = new SdaResEntity(); // try // { // var rgvResult = Rgv_CacheEntity.GetDeviceObj(deviceId); // if (!rgvResult.result) // { // return rgvResult; // } // var rgv = rgvResult.resData as RgvEntity; // string msg; // var result = rgv.ClearAlarm(deviceId, out msg); // Log4NetHelper.WriteInfoLog(LogType.RgvSdaService, "下发deviceId=" + deviceId + "的RGV消警指令" + (result ? "成功" : "失败") + "原因:" + msg); // sdaResult.result = result; // sdaResult.resMsg = msg; // return sdaResult; // } // catch (Exception ex) // { // sdaResult.result = false; // sdaResult.resMsg = JsonConvert.SerializeObject(ex); // return sdaResult; // } // } // /// // /// 下发RGV任务 // /// // /// // /// // /// // /// // /// // /// // public SdaResEntity SendRgvTask(int deviceId, int taskId, string sourcePlce, string toPlace) // { // SdaResEntity sdaResult = new SdaResEntity(); // try // { // var rgvResult = Rgv_CacheEntity.GetDeviceObj(deviceId); // if (!rgvResult.result) // { // return rgvResult; // } // var rgv = rgvResult.resData as RgvEntity; // //如果STP为TRUE,表示不能发任务 // string msg; // var result = rgv.SendTask(deviceId, taskId, sourcePlce, toPlace, out msg); // Log4NetHelper.WriteInfoLog(LogType.RgvSdaService, "下发deviceId=" + deviceId + ",taskId=" + taskId + ",fromPlace=" + // sourcePlce + ",toPlace=" + toPlace + "的RGV任务" + (result ? "成功" : "失败") + "原因:" + msg); // sdaResult.result = result; // sdaResult.resMsg = msg; // return sdaResult; // } // catch (Exception ex) // { // sdaResult.result = false; // sdaResult.resMsg = JsonConvert.SerializeObject(ex); // return sdaResult; // } // } // /// // /// 任务下发确认(收到PLC反馈后WCS清除) // /// // /// // /// // /// // public SdaResEntity WriteStp(int deviceId, bool value, string stationCode) // { // SdaResEntity _SdaResEntity = new SdaResEntity(); // try // { // var rgvResult = Rgv_CacheEntity.GetDeviceObj(deviceId); // if (!rgvResult.result) // { // return rgvResult; // } // var rgv = rgvResult.resData as RgvEntity; // string msg = ""; // var result = rgv.WriteStp(deviceId, stationCode, value, out msg); // Log4NetHelper.WriteInfoLog(LogType.RgvSdaService, // "下发deviceId=" + deviceId + ",站点号=" + stationCode + "的任务下发确认(收到PLC反馈后WCS清除)指令" + (result ? "成功" : "失败") + "原因:" + msg); // _SdaResEntity.result = result; // _SdaResEntity.resMsg = msg; // return _SdaResEntity; // } // catch (Exception ex) // { // _SdaResEntity.result = false; // _SdaResEntity.resMsg = ex.Message; // return _SdaResEntity; // } // } // public SdaResEntity DeleteRgvTask(int deviceId, int taskId) // { // SdaResEntity sdaResult = new SdaResEntity(); // try // { // var rgvResult = Rgv_CacheEntity.GetDeviceObj(deviceId); // if (!rgvResult.result) // { // return rgvResult; // } // var rgv = rgvResult.resData as RgvEntity; // string msg = ""; // var result = rgv.DeleteTask(deviceId, taskId, out msg); // Log4NetHelper.WriteInfoLog(LogType.RgvSdaService, "下发deviceId = " + deviceId + "的删除RGV任务指令" + (result ? "成功" : "失败") + "原因:" + msg); // sdaResult.result = result; // sdaResult.resMsg = msg; // return sdaResult; // } // catch (Exception ex) // { // sdaResult.result = false; // sdaResult.resMsg = JsonConvert.SerializeObject(ex); // return sdaResult; // } // } // ///// // ///// RGV急停 // ///// // ///// // ///// // //public SdaResEntity EmergencyStop(int deviceId) // //{ // // SdaResEntity sdaResult = new SdaResEntity(); // // try // // { // // var rgvResult = Rgv_CacheEntity.GetDeviceObj(deviceId); // // if (!rgvResult.result) // // { // // return rgvResult; // // } // // var rgv = rgvResult.resData as RgvEntity; // // string msg = ""; // // var result = rgv.EmergencyStop(deviceId, out msg); // // Log4NetHelper.WriteInfoLog(LogType.RgvSdaService, "下发deviceId = " + deviceId + "的急停任务指令" + (result ? "成功" : "失败") + "原因:" + msg); // // sdaResult.result = result; // // sdaResult.resMsg = msg; // // return sdaResult; // // } // // catch (Exception ex) // // { // // sdaResult.result = false; // // sdaResult.resMsg = JsonConvert.SerializeObject(ex); // // return sdaResult; // // } // //} // /// // /// 获取整个RGV对象 // /// // /// // /// // public RgvView GetRgvInfo(int deviceId) // { // var rgvResult = Rgv_CacheEntity.GetDeviceObj(deviceId); // if (!rgvResult.result) // { // return null; // } // var rgv = (rgvResult.resData as RgvEntity).View; // return rgv; // } // /// // /// RGV任务是否完成 // /// // /// // /// // /// // public SdaResEntity IsTaskFinish(int deviceId, int taskId) // { // SdaResEntity sdaResult = new SdaResEntity(); // try // { // var rgvResult = Rgv_CacheEntity.GetDeviceObj(deviceId); // if (!rgvResult.result) // { // return rgvResult; // } // var rgv = rgvResult.resData as RgvEntity; // var stationCode = ((int)EDevice.Conveyer1040).ToString(); // var readData = rgv.View.R_RgvForReadCommList.Where(x => x.StationCode == stationCode).FirstOrDefault(); // sdaResult.result = readData.R_TaskID == taskId && rgv.View.R_RGV_Finish; // sdaResult.resMsg = "成功"; // } // catch (Exception ex) // { // sdaResult.result = false; // sdaResult.resMsg = JsonConvert.SerializeObject(ex); // return sdaResult; // } // return sdaResult; // } // /// // /// RGV是否是自动模式 // /// // /// // public SdaResEntity IsRgvAuto(int deviceId, string stationCode) // { // SdaResEntity sdaResult = new SdaResEntity(); // try // { // var rgvResult = Rgv_CacheEntity.GetDeviceObj(deviceId); // if (!rgvResult.result) // { // return rgvResult; // } // var rgv = rgvResult.resData as RgvEntity; // var msg = ""; // var result = rgv.RgvIsAuto(stationCode, out msg); // if (!rgvResult.result) // { // sdaResult.result = false; // sdaResult.resMsg = msg; // return rgvResult; // } // sdaResult.result = true; // } // catch (Exception ex) // { // sdaResult.result = false; // sdaResult.resMsg = JsonConvert.SerializeObject(ex); // Log4NetHelper.WriteErrorLog(LogType.RgvSdaService, "判断RGV是否是自动模式出现异常,ex:" + JsonConvert.SerializeObject(ex), ex); // } // return sdaResult; // } // /// // /// RGV是否是自动待机模式 // /// // /// // public SdaResEntity RgvIsAutoAwaitMode(int deviceId, string stationCode) // { // SdaResEntity sdaResult = new SdaResEntity(); // try // { // var rgvResult = Rgv_CacheEntity.GetDeviceObj(deviceId); // if (!rgvResult.result) // { // return rgvResult; // } // var rgv = rgvResult.resData as RgvEntity; // var msg = ""; // var result = rgv.RgvIsAutoAwaitMode(stationCode, out msg); // if (!rgvResult.result) // { // sdaResult.result = false; // sdaResult.resMsg = msg; // return rgvResult; // } // sdaResult.result = true; // } // catch (Exception ex) // { // sdaResult.result = false; // sdaResult.resMsg = JsonConvert.SerializeObject(ex); // Log4NetHelper.WriteErrorLog(LogType.RgvSdaService, "判断RGV是否是自动待机模式出现异常,ex:" + JsonConvert.SerializeObject(ex), ex); // } // return sdaResult; // } // /// // /// 判断RGV是否可用,是否可以发送新任务给RGV // /// // /// // /// // /// // /// 是否是涉及到RGV的任务 // /// // public SdaResEntity IsAllowSendTask(bool isNeedValidateRealSourceAndToPlace, int deviceId, string sourceStationCode, string toStationCode, bool isRgvTask) // { // var msg = ""; // SdaResEntity sdaResult = new SdaResEntity(); // try // { // var rgvResult = Rgv_CacheEntity.GetDeviceObj(deviceId); // if (!rgvResult.result) // { // return rgvResult; // } // var rgv = rgvResult.resData as RgvEntity; // var result = false; // if (isNeedValidateRealSourceAndToPlace) // { // //判断起点是否是自动待机模式 // result = rgv.RgvIsAutoAwaitMode(sourceStationCode, out msg); // if (!result) // { // sdaResult.result = false; // sdaResult.resMsg = msg; // return sdaResult; // } // //判断起点是否是空闲状态 // result = rgv.RgvIsStateFree(sourceStationCode, out msg); // if (!result) // { // sdaResult.result = false; // sdaResult.resMsg = msg; // return sdaResult; // } // } // //判断RGV是否是自动模式 // result = rgv.RgvIsAuto(((int)EDevice.Conveyer1040).ToString(), out msg); // if (!result) // { // sdaResult.result = false; // sdaResult.resMsg = msg; // return sdaResult; // } // if (isRgvTask) // {//如果是涉及到RGV的任务,需要去验证下RGV是否是空闲状态 // //判断RGV是否是自动待机模式 // result = rgv.RgvIsAutoAwaitMode(((int)EDevice.Conveyer1040).ToString(), out msg); // if (!result) // { // sdaResult.result = false; // sdaResult.resMsg = msg; // return sdaResult; // } // result = rgv.RgvIsStateFree(((int)EDevice.Conveyer1040).ToString(), out msg); // if (!result) // { // sdaResult.result = false; // sdaResult.resMsg = msg; // return sdaResult; // } // } // if (isNeedValidateRealSourceAndToPlace) // { // //判断目标点是否是自动模式 // result = rgv.RgvIsAuto(toStationCode, out msg); // if (!result) // { // sdaResult.result = false; // sdaResult.resMsg = msg; // return sdaResult; // } // } // sdaResult.result = true; // return sdaResult; // } // catch (Exception ex) // { // sdaResult.result = false; // sdaResult.resMsg = "出现异常:" + JsonConvert.SerializeObject(ex); // return sdaResult; // } // } // /// // /// 判断是否有心跳 // /// // /// // /// // public SdaResEntity IsHaveHeatBeat(int deviceId) // { // SdaResEntity sdaResult = new SdaResEntity(); // string msg; // try // { // var rgvResult = Rgv_CacheEntity.GetDeviceObj(deviceId); // if (!rgvResult.result) // { // return rgvResult; // } // var rgv = rgvResult.resData as RgvEntity; // var result = rgv.IsHaveHeatBeat(); // sdaResult.result = true; // sdaResult.resData = result; // return sdaResult; // } // catch (Exception ex) // { // msg = "验证是否有心跳出现异常:" + ex.Message; // sdaResult.result = false; // sdaResult.resMsg = msg; // return sdaResult; // } // } // /// // /// 1015重新扫码 // /// // /// // /// // /// // public SdaResEntity Write1015ReScan(int deviceId, bool value) // { // SdaResEntity _SdaResEntity = new SdaResEntity(); // try // { // var rgvResult = Rgv_CacheEntity.GetDeviceObj(deviceId); // if (!rgvResult.result) // { // return rgvResult; // } // var rgv = rgvResult.resData as RgvEntity; // string msg = ""; // var result = rgv.Write1015ReScan(deviceId, value, out msg); // _SdaResEntity.result = result; // _SdaResEntity.resMsg = msg; // return _SdaResEntity; // } // catch (Exception ex) // { // _SdaResEntity.result = false; // _SdaResEntity.resMsg = ex.Message; // return _SdaResEntity; // } // } // /// // /// RGV的任务完成ACK赋值 // /// // /// // /// // /// // public SdaResEntity WriteRGV_FinishACK(int deviceId, bool value, int plcTaskId) // { // SdaResEntity _SdaResEntity = new SdaResEntity(); // try // { // var rgvResult = Rgv_CacheEntity.GetDeviceObj(deviceId); // if (!rgvResult.result) // { // return rgvResult; // } // var rgv = rgvResult.resData as RgvEntity; // string msg = ""; // var result = rgv.WriteRGV_FinishACK(deviceId, value, plcTaskId, out msg); // _SdaResEntity.result = result; // _SdaResEntity.resMsg = msg; // return _SdaResEntity; // } // catch (Exception ex) // { // _SdaResEntity.result = false; // _SdaResEntity.resMsg = ex.Message; // return _SdaResEntity; // } // } // /// // /// 四个入库口扫描验证ACK赋值 // /// // /// // /// // /// // public SdaResEntity WriteScanValidateACK(bool isReset, int deviceId, string stationCode, bool value, int plcTaskId) // { // SdaResEntity _SdaResEntity = new SdaResEntity(); // try // { // var rgvResult = Rgv_CacheEntity.GetDeviceObj(deviceId); // if (!rgvResult.result) // { // return rgvResult; // } // var rgv = rgvResult.resData as RgvEntity; // string msg = ""; // var result = rgv.WriteScanValidateACK(isReset,deviceId, stationCode, value, plcTaskId, out msg); // _SdaResEntity.result = result; // _SdaResEntity.resMsg = msg; // return _SdaResEntity; // } // catch (Exception ex) // { // _SdaResEntity.result = false; // _SdaResEntity.resMsg = ex.Message; // return _SdaResEntity; // } // } //} }