| | |
| | | using iWareCC.BLL; |
| | | using iWareCC.Common.Helper; |
| | | using iWareCC.Common.Helper; |
| | | using iWareCC.DeviceThreadFactory; |
| | | using iWareCC.Forms; |
| | | using iWareCC.RgvService; |
| | | using iWareCC.SrmService; |
| | | using iWareCC.StationService; |
| | | using iWareCC.ThreadService; |
| | | using iWareCC.WCF; |
| | | using iWareCommon; |
| | | using iWareCommon.Common.Globle; |
| | | using iWareCommon.Utils; |
| | | using iWareModel; |
| | | using iWareModel.Entity.AGV; |
| | | using iWareSql.DataAccess; |
| | | using iWareSql.DBModel; |
| | | using iWareSql.Orm; |
| | | using Newtonsoft.Json; |
| | | using System; |
| | | using System.Collections.Generic; |
| | | using System.ComponentModel; |
| | | using System.Data; |
| | | using System.Drawing; |
| | | using System.Linq; |
| | | using System.Linq.Expressions; |
| | | using System.Net; |
| | | using System.ServiceModel; |
| | | using System.Text; |
| | | using System.Threading; |
| | | using System.Threading.Tasks; |
| | | using System.Windows.Forms; |
| | | using XiGang.Core.Model; |
| | | using XiGang.Core.Model.ViewModels; |
| | |
| | | |
| | | public static RgvView rgvView;//Rgv实体类 |
| | | public static RgvService.RgvServiceClient rgvServiceClient = null; |
| | | |
| | | public static StationView stationView;//站点实体类 |
| | | public static StationServiceClient stationServiceClient = null; |
| | | public FormCC() |
| | | { |
| | | InitializeComponent(); |
| | |
| | | tskGetRgv1Info = new Thread(GetRgvInfo); |
| | | tskGetRgv1Info.Start(); |
| | | |
| | | var tskGetStationInfo = new Thread(GetStationInfo); |
| | | tskGetStationInfo.Start(); |
| | | |
| | | //堆垛机UI赋值 |
| | | SetSrmUI(); |
| | | |
| | |
| | | #region 服务线程启动 |
| | | |
| | | //堆垛机任务服务线程启动 |
| | | var srmService = DeviceThreadServiceFactory.GetHandle(EDeviceType.堆垛机); |
| | | srmService.StartService(); |
| | | //var srmService = DeviceThreadServiceFactory.GetHandle(EDeviceType.堆垛机); |
| | | // srmService.StartService(); |
| | | //RGV任务服务线程启动 |
| | | var rgvService = DeviceThreadServiceFactory.GetHandle(EDeviceType.RGV); |
| | | rgvService.StartService(); |
| | | //var rgvService = DeviceThreadServiceFactory.GetHandle(EDeviceType.RGV); |
| | | // rgvService.StartService(); |
| | | |
| | | |
| | | //处理【下发中】的出库计划任务 |
| | | new Thread(OutPlanTaskDecompose.HandlerIssuingTask).Start(); |
| | | // new Thread(OutPlanTaskDecompose.HandlerIssuingTask).Start(); |
| | | |
| | | //任务分解线程-出库 |
| | | new Thread(MainTaskDecompose.HandlerMainTaskDecompose).Start(); |
| | | // new Thread(MainTaskDecompose.HandlerMainTaskDecompose).Start(); |
| | | |
| | | //任务分解线程-组盘入库 |
| | | new Thread(MainTaskDecompose_ZPRK.HandlerMainTaskDecompose_ZPRK).Start(); |
| | | // new Thread(MainTaskDecompose_ZPRK.HandlerMainTaskDecompose_ZPRK).Start(); |
| | | |
| | | //空托盘转运任务 |
| | | new Thread(EmptySalverTransferTask.Handler).Start(); |
| | | new Thread(DataProcess_RobotBuffer_FinishTaskForOutbound.Handler).Start(); |
| | | |
| | | //自动组盘任务 |
| | | new Thread(AutoSalverMaterialBindTask.Handler).Start(); |
| | | new Thread(DataProcess_RobotBuffer_FinishTask.Handler).Start(); |
| | | |
| | | //自动组盘下发任务 |
| | | new Thread(AutoIssueInStoreTask.Handler).Start(); |
| | | new Thread(DataProcess_BZ01.Handler).Start(); |
| | | |
| | | //重新获取发动机信息 |
| | | new Thread(AutoUpdateEngineInfoTask.Handler).Start(); |
| | | new Thread(DataProcess_269.Handler).Start(); |
| | | |
| | | //1014库位转运到1020线程 |
| | | new Thread(Place1014To1020Task.Handler).Start(); |
| | | new Thread(DataProcess_BZ39.Handler).Start(); |
| | | |
| | | ////1009库位增加库存线程 |
| | | //new Thread(Place1009AddStoreTask.Handler).Start(); |
| | | |
| | | new Thread(DeleteData).Start(); |
| | | |
| | |
| | | //*/ |
| | | #endregion |
| | | |
| | | new Thread(GetAgvVehicles).Start();//AGV车辆信息 |
| | | // new Thread(GetAgvVehicles).Start();//AGV车辆信息 |
| | | |
| | | new Thread(OutTaskRetryToMes.Handler).Start(); |
| | | // new Thread(OutTaskRetryToMes.Handler).Start(); |
| | | |
| | | //暂时不启用虚拟出入库功能 |
| | | new Thread(VirtualTaskNoOutPlanTaskHandler.Handler).Start(); |
| | | // new Thread(VirtualTaskNoOutPlanTaskHandler.Handler).Start(); |
| | | } |
| | | private void FormCC_Load(object sender, EventArgs e) |
| | | { |
| | |
| | | |
| | | this.lbl_Alert_HandlerIssuingTask.Text = showNowTime + SystemWarningMsg._lbl_Alert_HandlerIssuingTask; |
| | | |
| | | this.lbl_Alert_VirtualTaskNoOutPlanTaskHandler.Text = showNowTime + SystemWarningMsg._lbl_Alert_VirtualTaskNoOutPlanTaskHandler; |
| | | this.lbl_Alert_DataProcess_RobotBuffer_FinishTask.Text = showNowTime + SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTask; |
| | | |
| | | this.lbl_MainTaskDecompose.Text = showNowTime + SystemWarningMsg._lbl_Alert_MainTaskDecompose; |
| | | |
| | | this.lbl_MainTaskDecompose_ZPRK.Text = showNowTime + SystemWarningMsg._lbl_Alert_MainTaskDecompose_ZPRK; |
| | | |
| | | this.lbl_Alert_LineInScan.Text = showNowTime + SystemWarningMsg._lbl_Alert_LineInScan; |
| | | this.lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound.Text = showNowTime + SystemWarningMsg._lbl_Alert_DataProcess_RobotBuffer_FinishTaskForOutbound; |
| | | |
| | | this.lbl_Alert_DeleteData.Text = showNowTime + SystemWarningMsg._lbl_Alert_DeleteData; |
| | | |
| | | this.lbl_Alert_EmptySalverTransfer.Text = showNowTime + SystemWarningMsg._lbl_Alert_EmptySalverTransfer; |
| | | |
| | | this.lbl_alert_AutoSalverMaterialBindTask.Text = showNowTime + SystemWarningMsg._lbl_alert_AutoSalverMaterialBindTask; |
| | | this.lbl_alert_DataProcess_BZ39.Text = showNowTime + SystemWarningMsg._lbl_alert_DataProcess_BZ39; |
| | | |
| | | this.lbl_alert_AutoIssueInStoreTask.Text = showNowTime + SystemWarningMsg._lbl_alert_AutoIssueInStoreTask; |
| | | this.lbl_alert_DataProcess_BZ01.Text = showNowTime + SystemWarningMsg._lbl_alert_DataProcess_BZ01; |
| | | |
| | | this.lbl_alert_AutoUpdateEngineInfoTask.Text = showNowTime + SystemWarningMsg._lbl_alert_AutoUpdateEngineInfoTask; |
| | | this.lbl_alert_DataProcess_269.Text = showNowTime + SystemWarningMsg._lbl_alert_DataProcess_269; |
| | | |
| | | this.lbl_Alert_Place1014ClearStoreTask.Text = showNowTime + SystemWarningMsg._lbl_Alert_Place1014To1020TaskTask; |
| | | |
| | |
| | | { |
| | | for (int i = 0; i < waringList.Count; i++) |
| | | { |
| | | DeviceWarningHandler.SaveWarning(EDevice.RGV, iWareCommon.Utils.LogType.RgvThreadService, |
| | | DeviceWarningHandler.SaveWarning(EDevice.RGV, iWareCommon.Utils.LogType.StationThreadService, |
| | | waringList[i].Codek__BackingField, waringList[i].Addressk__BackingField, waringList[i].Contextk__BackingField);//新增报警 |
| | | warningAddressList.Add(waringList[i].Addressk__BackingField); |
| | | } |
| | |
| | | { |
| | | tb_Rgv_Alter.Text = ""; |
| | | } |
| | | DeviceWarningHandler.AutoCloseWarning(EDevice.RGV, iWareCommon.Utils.LogType.RgvThreadService, warningAddressList);//自动关闭报警 |
| | | DeviceWarningHandler.AutoCloseWarning(EDevice.RGV, iWareCommon.Utils.LogType.StationThreadService, warningAddressList);//自动关闭报警 |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | rgvView = null; |
| | | Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.RgvThreadService, "获取RGV信息出现异常:" + ex.Message, ex); |
| | | Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.StationThreadService, "获取RGV信息出现异常:" + ex.Message, ex); |
| | | continue; |
| | | } |
| | | } |
| | |
| | | }; |
| | | realTimeList.Add(obj); |
| | | } |
| | | DeviceRgvRealTimeHandler.Update(realTimeList, iWareCommon.Utils.LogType.RgvThreadService); |
| | | DeviceRgvRealTimeHandler.Update(realTimeList, iWareCommon.Utils.LogType.StationThreadService); |
| | | |
| | | } |
| | | |
| | | |
| | | #endregion |
| | | |
| | | #region 站点线程和UI处理 |
| | | |
| | | /// <summary> |
| | | /// 设置站点的UI显示 |
| | | /// </summary> |
| | | /// <param name="obj"></param> |
| | | private void SetStationLable(object obj) |
| | | { |
| | | while (true) |
| | | { |
| | | Thread.Sleep(cycleDelay_Device); |
| | | try |
| | | { |
| | | |
| | | //lbRgv_Y.Text = "当前行走位置: " + rgv.R_RgvPosition; |
| | | //lbRgv_X.Text = "当前区域位置: " + rgv.R_RgvPosition; |
| | | //ERgvState _ERgvState = (ERgvState)Enum.Parse(typeof(ERgvState), rgv.R_State.ToString()); |
| | | //lbRgvWorkState.Text = "工作状态: " + _ERgvState.ToString(); |
| | | //lbRgvTaskId.Text = "任务号: " + rgv.R_TaskNo; |
| | | //lbRgvIsAuto.Text = "工作模式: " + (rgv.ModeName); |
| | | //lbRgvAlert.Text = rgv.R_AlarmCode.ToString(); |
| | | //if (rgv.R_Alarm == false) |
| | | //{ |
| | | // //检测是否有心跳 |
| | | // using (var rgvService = new RgvService.RgvServiceClient()) |
| | | // { |
| | | // //检测是否有心跳 |
| | | // var isRgvHandShare = RgvBLL.IsRgvHandShare(rgvService); |
| | | // if (!isRgvHandShare) |
| | | // { |
| | | // lbRgvAlert.Text = "RGV没有心跳"; |
| | | // } |
| | | // } |
| | | //} |
| | | //else |
| | | //{ |
| | | // lbRgvAlert.Text = rgv.R_AlarmCode.ToString(); |
| | | //} |
| | | |
| | | //// ERgvEvent _ERgvEvent = (ERgvEvent)Enum.Parse(typeof(ERgvEvent), rgv.r_ev.ToString()); |
| | | ////lbRgvEvent.Text = "事 件:" + _ERgvEvent.ToString(); |
| | | //lbRgvTaskFinish.Text = "任务完成:" + rgv.R_TaskFinish; |
| | | |
| | | } |
| | | catch (Exception) |
| | | { |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | |
| | | /// <summary> |
| | | /// 获取Station信息 |
| | | /// </summary> |
| | | /// <param name="obj"></param> |
| | | private void GetStationInfo(object obj) |
| | | { |
| | | while (true) |
| | | { |
| | | Thread.Sleep(1000);//1秒钟读取一次 |
| | | try |
| | | { |
| | | if (stationServiceClient == null) |
| | | { |
| | | continue; |
| | | } |
| | | stationView = stationServiceClient.GetStationInfo((int)EDevice.Station); |
| | | |
| | | |
| | | _CommmonShowAgvStation(); |
| | | |
| | | |
| | | ////显示RGV任务完成和完成确认信号 |
| | | //this.lbl_R_RGV_Finish.Text = "RGV任务完成:" + rgvView.R_RGV_Finish; |
| | | //this.lbl_W_RGV_FinishACK.Text = "RGV任务完成确认:" + rgvView.W_RGV_FinishACK; |
| | | |
| | | //this.lbl_RgvCoordinate.Text = "RGV实时坐标:" + rgvView.R_RGV_Coordinate; |
| | | |
| | | /* |
| | | //解析RGV对象 |
| | | foreach (var item in rgvView.R_RgvForReadCommList) |
| | | { |
| | | var control = ControlHelper.GetControlInstance(this.tPTransAsrs, "btn_" + item.StationCode); |
| | | if (item.R_AlarmCode > 0) |
| | | {//有报警 |
| | | if (control != null) |
| | | { |
| | | var btn = control as Button; |
| | | btn.BackColor = Color.Red; |
| | | } |
| | | } |
| | | else |
| | | { |
| | | if (control != null) |
| | | { |
| | | var btn = control as Button; |
| | | if (item.StationCode == ((int)EDevice.RGV1040).ToString()) |
| | | { |
| | | btn.BackColor = Color.Gold; |
| | | } |
| | | else if (item.StationCode == ((int)EDevice.拆盘机1020).ToString()) |
| | | { |
| | | btn.BackColor = Color.DodgerBlue; |
| | | } |
| | | else if (item.StationCode == ((int)EDevice.提升机1030).ToString()) |
| | | { |
| | | btn.BackColor = Color.SteelBlue; |
| | | } |
| | | else |
| | | { |
| | | btn.BackColor = Color.SeaGreen; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | //显示RGV报警信息 |
| | | List<String> warningAddressList = new List<string>(); |
| | | if (rgvView.R_Rgv_WarningDBList != null && rgvView.R_Rgv_WarningDBList.Length > 0) |
| | | { |
| | | tb_Rgv_Alter.Text = String.Join(",", rgvView.R_Rgv_WarningDBList.Select(x => x.Contextk__BackingField).ToArray()); |
| | | //保存报警 |
| | | var waringList = rgvView.R_Rgv_WarningDBList.ToList(); |
| | | if (waringList != null && waringList.Count > 0) |
| | | { |
| | | for (int i = 0; i < waringList.Count; i++) |
| | | { |
| | | DeviceWarningHandler.SaveWarning(EDevice.RGV, iWareCommon.Utils.LogType.RgvThreadService, |
| | | waringList[i].Codek__BackingField, waringList[i].Addressk__BackingField, waringList[i].Contextk__BackingField);//新增报警 |
| | | warningAddressList.Add(waringList[i].Addressk__BackingField); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | tb_Rgv_Alter.Text = ""; |
| | | } |
| | | DeviceWarningHandler.AutoCloseWarning(EDevice.RGV, iWareCommon.Utils.LogType.RgvThreadService, warningAddressList);//自动关闭报警 |
| | | |
| | | //*/ |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | rgvView = null; |
| | | Log4NetHelper.WriteErrorLog(iWareCommon.Utils.LogType.StationThreadService, "获取站点信息出现异常:" + ex.Message, ex); |
| | | continue; |
| | | } |
| | | } |
| | | } |
| | | |
| | | |
| | | |
| | | #endregion |
| | |
| | | |
| | | DoCommonCheckedChanged(ref SystemValue.isAllowRuning_HandlerIssuingTask, ckHandlerIssuingTask); |
| | | |
| | | DoCommonCheckedChanged(ref SystemValue.isAllowRuning_VirtualTaskNoOutPlanTaskHandler, ck_VirtualTaskNoOutPlanTaskHandler); |
| | | DoCommonCheckedChanged(ref SystemValue.isAllowRuning_DataProcess_RobotBuffer_FinishTask, ck_DataProcess_RobotBuffer_FinishTask); |
| | | |
| | | DoCommonCheckedChanged(ref SystemValue.isAllowRuning_MainTaskDecompose, ckMainTaskDecompose); |
| | | |
| | | DoCommonCheckedChanged(ref SystemValue.isAllowRuning_MainTaskDecompose_ZPRK, ckMainTaskDecompose_ZPRK); |
| | | |
| | | DoCommonCheckedChanged(ref SystemValue.isAllowRuning_LineInScan, checkBox_LineInScan); |
| | | DoCommonCheckedChanged(ref SystemValue.isAllowRuning_DataProcess_RobotBuffer_FinishTaskForOutbound, checkBox_DataProcess_RobotBuffer_FinishTaskForOutbound); |
| | | |
| | | |
| | | DoCommonCheckedChanged(ref SystemValue.isAllowRuning_DeleteData, ckDeleteData); |
| | |
| | | |
| | | DoCommonCheckedChanged(ref SystemValue.isAllowRuning_EmptySalverTransfer, ckEmptySalverTransfer); |
| | | |
| | | DoCommonCheckedChanged(ref SystemValue.isAllowRuning_AutoSalverMaterialBindTask, ck_AutoSalverMaterialBindTask); |
| | | DoCommonCheckedChanged(ref SystemValue.isAllowRuning_DataProcess_BZ39, ck_DataProcess_BZ39); |
| | | |
| | | DoCommonCheckedChanged(ref SystemValue.isAllowRuning_AutoIssueInStoreTask, ck_AutoIssueInStoreTask); |
| | | DoCommonCheckedChanged(ref SystemValue.isAllowRuning_DataProcess_BZ01, ck_AutoIssueInStoreTask); |
| | | |
| | | DoCommonCheckedChanged(ref SystemValue.isAllowRuning_AutoUpdateEngineInfoTask, ck_AutoUpdateEngineInfoTask); |
| | | DoCommonCheckedChanged(ref SystemValue.isAllowRuning_DataProcess_269, ck_DataProcess_269); |
| | | |
| | | DoCommonCheckedChanged(ref SystemValue.isAllowRuning_Place1014To1020Task, ckPlace1014ClearStoreTask); |
| | | |