Esempio n. 1
0
        /// <summary>
        /// 终止任务
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TerminateBtn_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                if (CBdev.SelectedIndex == -1)
                {
                    Notice.Show("请选择设备!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }
                string dev = CBdev.Text;
                FRT    frt = new FRT(dev);
                if (frt.DeviceStatus() == FRT.DeviceError)
                {
                    Notice.Show("指令发送失败:设备故障!", "错误", 3, MessageBoxIcon.Error);
                    return;
                }

                byte[] order = FRT._StopTask(frt.FRTNum());
                if (!DataControl._mSocket.SendToClient(dev, order, out string result))
                {
                    Notice.Show("指令发送失败:" + result.ToString(), "错误", 3, MessageBoxIcon.Error);
                    return;
                }
                Notice.Show("终止任务 指令发送成功!", "成功", 3, MessageBoxIcon.Success);
                DataControl._mSocket.SwithRefresh(dev, true);
            }
            catch (Exception ex)
            {
                Notice.Show("指令发送失败:" + ex.ToString(), "错误", 3, MessageBoxIcon.Error);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 终止任务
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void TerminateBtn_Click(object sender, RoutedEventArgs e)
        {
            string dev = "";

            byte[] order = null;
            try
            {
                if (CBdev.SelectedIndex == -1)
                {
                    Notice.Show("请选择设备!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }
                dev = CBdev.Text;
                FRT frt = new FRT(dev);
                if (frt.DeviceStatus() == FRT.DeviceError)
                {
                    Notice.Show("指令发送失败:设备故障!", "错误", 3, MessageBoxIcon.Error);
                    return;
                }

                order = FRT._StopTask(frt.FRTNum());
                if (!DataControl._mSocket.SendToClient(dev, order, out string result))
                {
                    Notice.Show("指令发送失败:" + result.ToString(), "错误", 3, MessageBoxIcon.Error);
                    // LOG
                    DataControl._mTaskTools.RecordTaskErrLog("TerminateBtn_Click()", "固定辊台-终止任务[FRT,指令]", dev, DataControl._mStools.BytetToString(order), result.ToString());
                    return;
                }
                Notice.Show("终止任务 指令发送成功!", "成功", 3, MessageBoxIcon.Success);
                DataControl._mSocket.SwithRefresh(dev, true);
            }
            catch (Exception ex)
            {
                Notice.Show("指令发送失败:" + ex.Message, "错误", 3, MessageBoxIcon.Error);
                // LOG
                DataControl._mTaskTools.RecordTaskErrLog("TerminateBtn_Click()", "固定辊台-终止任务[FRT,指令]", dev, DataControl._mStools.BytetToString(order), ex.Message);
            }
        }
Esempio n. 3
0
        public void Update()
        {
            if (isconnect != frt.IsAlive())
            {
                ISConnect = frt.IsAlive();
            }

            if (!frt.IsAlive())
            {
                return;
            }

            if (actionsta != frt.ActionStatus())
            {
                actionsta    = frt.ActionStatus();
                ActionStatus = "";
            }

            if (devicesta != frt.DeviceStatus())
            {
                devicesta    = frt.DeviceStatus();
                DeviceStatus = "";
            }

            if (commandsta != frt.CommandStatus())
            {
                commandsta    = frt.CommandStatus();
                CommandStatus = "";
            }

            if (now_task != frt.CurrentTask())
            {
                now_task = frt.CurrentTask();
                Now_Task = "";
            }

            if (finish_task != frt.FinishTask())
            {
                finish_task = frt.FinishTask();
                Finish_Task = "";
            }

            if (loadstatus != frt.GoodsStatus())
            {
                loadstatus = frt.GoodsStatus();
                LoadStatus = "";
            }

            if (rollerstatus != frt.CurrentStatus())
            {
                rollerstatus = frt.CurrentStatus();
                RollerStatus = "";
            }

            if (rollerdirection != frt.RunDirection())
            {
                rollerdirection = frt.RunDirection();
                RollerDirection = "";
            }

            if (errormsg != frt.ErrorMessage())
            {
                errormsg = frt.ErrorMessage();
                ErrorMsg = "";
            }

            if (frt.GetUpdateTime(out string time))
            {
                if (datatime != time)
                {
                    DataTime = time;
                }
            }
        }
Esempio n. 4
0
        /// <summary>
        /// 启动辊台
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BTNrun_Click(object sender, EventArgs e)
        {
            string dev = "";

            byte[] order = null;
            try
            {
                if (CBdev.SelectedIndex == -1)
                {
                    Notice.Show("请选择设备!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }
                dev = CBdev.Text;
                FRT frt = new FRT(dev);
                if (frt.ActionStatus() == FRT.Run)
                {
                    Notice.Show("指令发送失败:设备运行中!", "错误", 3, MessageBoxIcon.Error);
                    return;
                }
                if (frt.DeviceStatus() == FRT.DeviceError)
                {
                    Notice.Show("指令发送失败:设备故障!", "错误", 3, MessageBoxIcon.Error);
                    return;
                }

                if (!WindowCommon.ConfirmAction("是否进行[滚筒启动任务]!!"))
                {
                    return;
                }

                // 方式
                byte site1 = FRT.RollerRun1;
                if (CBsite1.SelectedValue.ToString() == "启动2#辊台")
                {
                    site1 = FRT.RollerRun2;
                }
                if (CBsite1.SelectedValue.ToString() == "启动全部辊台")
                {
                    site1 = FRT.RollerRunAll;
                }
                // 方向
                byte site2 = FRT.RunFront;
                if (CBsite2.SelectedValue.ToString() == "反向启动")
                {
                    site2 = FRT.RunObverse;
                }
                // 类型
                byte site3 = FRT.GoodsReceive;
                if (CBsite3.SelectedValue.ToString() == "送货")
                {
                    site3 = FRT.GoodsDeliver;
                }
                // 数量
                byte site4 = FRT.GoodsQty1;
                if (CBsite4.SelectedValue.ToString() == "货物数量2")
                {
                    site4 = FRT.GoodsQty2;
                }

                order = FRT._RollerControl(frt.FRTNum(), site1, site2, site3, site4);
                DataControl._mSocket.SwithRefresh(dev, false);
                if (!DataControl._mSocket.SendToClient(dev, order, out string result))
                {
                    DataControl._mSocket.SwithRefresh(dev, true);
                    Notice.Show("指令发送失败:" + result.ToString(), "错误", 3, MessageBoxIcon.Error);
                    // LOG
                    DataControl._mTaskTools.RecordTaskErrLog("BTNrun_Click()", "固定辊台-启动辊台任务[FRT,指令]", dev, DataControl._mStools.BytetToString(order), result.ToString());
                    return;
                }
                Notice.Show("启动辊台 指令发送成功!", "成功", 3, MessageBoxIcon.Success);
            }
            catch (Exception ex)
            {
                Notice.Show("指令发送失败:" + ex.Message, "错误", 3, MessageBoxIcon.Error);
                // LOG
                DataControl._mTaskTools.RecordTaskErrLog("BTNrun_Click()", "固定辊台-启动辊台任务[FRT,指令]", dev, DataControl._mStools.BytetToString(order), ex.Message);
            }
        }
Esempio n. 5
0
        /// <summary>
        /// 启动辊台
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void BTNrun_Click(object sender, EventArgs e)
        {
            try
            {
                if (CBdev.SelectedIndex == -1)
                {
                    Notice.Show("请选择设备!", "提示", 3, MessageBoxIcon.Info);
                    return;
                }
                string dev = CBdev.Text;
                FRT    frt = new FRT(dev);
                if (frt.ActionStatus() == FRT.Run)
                {
                    Notice.Show("指令发送失败:设备运行中!", "错误", 3, MessageBoxIcon.Error);
                    return;
                }
                if (frt.DeviceStatus() == FRT.DeviceError)
                {
                    Notice.Show("指令发送失败:设备故障!", "错误", 3, MessageBoxIcon.Error);
                    return;
                }

                // 方式
                byte site1 = FRT.RollerRun1;
                if (CBsite1.SelectedValue.ToString() == "启动2#辊台")
                {
                    site1 = FRT.RollerRun2;
                }
                if (CBsite1.SelectedValue.ToString() == "启动全部辊台")
                {
                    site1 = FRT.RollerRunAll;
                }
                // 方向
                byte site2 = FRT.RunFront;
                if (CBsite2.SelectedValue.ToString() == "反向启动")
                {
                    site2 = FRT.RunObverse;
                }
                // 类型
                byte site3 = FRT.GoodsReceive;
                if (CBsite3.SelectedValue.ToString() == "送货")
                {
                    site3 = FRT.GoodsDeliver;
                }
                // 数量
                byte site4 = FRT.GoodsQty1;
                if (CBsite4.SelectedValue.ToString() == "货物数量2")
                {
                    site4 = FRT.GoodsQty2;
                }

                byte[] order = FRT._RollerControl(frt.FRTNum(), site1, site2, site3, site4);
                if (!DataControl._mSocket.SendToClient(dev, order, out string result))
                {
                    Notice.Show("指令发送失败:" + result.ToString(), "错误", 3, MessageBoxIcon.Error);
                    return;
                }
                Notice.Show("启动辊台 指令发送成功!", "成功", 3, MessageBoxIcon.Success);
                DataControl._mSocket.SwithRefresh(dev, false);
            }
            catch (Exception ex)
            {
                Notice.Show("指令发送失败:" + ex.ToString(), "错误", 3, MessageBoxIcon.Error);
            }
        }
Esempio n. 6
0
        public override void DoWork()
        {
            try
            {
                // 异常
                if (_device.DeviceStatus() == FRT.DeviceError || _device.CommandStatus() == FRT.CommandError)
                {
                    ISetTaskErr();
                    // LOG
                    log.LOG(DataControl._mTaskTools.GetLogMessE(ITEM, Order, "设备故障或命令错误."));
                    return;
                }

                #region 调试
                if (PublicParam.IsIgnoreFRT) //add调试判断
                {
                    if (_device.ActionStatus() == FRT.Stop)
                    {
                        // 发送指令
                        if (!DataControl._mSocket.SendToClient(ITEM.DEVICE, Order, out string result))
                        {
                            throw new Exception(result);
                        }
                        DataControl._mSocket.SwithRefresh(ITEM.DEVICE, false);
                        // LOG
                        log.LOG(DataControl._mTaskTools.GetLogMess(ITEM, Order));
                    }
                    else
                    {
                        Thread.Sleep(5000);
                        // 完成任务
                        ISetTaskSuc();
                        // 解锁设备数据状态
                        DataControl._mTaskTools.DeviceUnLock(ITEM.DEVICE);
                        // LOG
                        log.LOG(DataControl._mTaskTools.GetLogMessS(ITEM, Order));
                    }
                    return;
                }
                #endregion

                ARF _arf = new ARF(ITEM.LOC_TO);
                // 对接设备状态
                if (!string.IsNullOrEmpty(ITEM.LOC_TO.Trim())) // 目标不为空即最终无货
                {
                    // 摆渡车辊台停止状态
                    if (_arf.CurrentStatus() == ARF.RollerStop)
                    {
                        // 摆渡车辊台上无货物
                        if (_arf.GoodsStatus() == ARF.GoodsNoAll)
                        {
                            return;
                        }
                    }
                    // 固定辊台无货物
                    if (_device.GoodsStatus() == FRT.GoodsNoAll && _device.ActionStatus() == FRT.Stop)
                    {
                        // 完成任务
                        ISetTaskSuc();
                        // 解锁设备数据状态
                        DataControl._mTaskTools.DeviceUnLock(ITEM.DEVICE);
                        // LOG
                        log.LOG(DataControl._mTaskTools.GetLogMessS(ITEM, Order));
                        return;
                    }
                    else if (_device.GoodsStatus() == FRT.GoodsYesAll && _device.ActionStatus() == FRT.Stop &&
                             _arf.GoodsStatus() == ARF.GoodsYesAll && _arf.ActionStatus() == ARF.Stop)
                    {
                        return; // 固定辊台与摆渡车都有货,不启动辊台
                    }
                }
                else
                {
                    // 摆渡车辊台上无货物,固定辊台上有货物
                    if (_arf.GoodsStatus() == ARF.GoodsNoAll && _device.GoodsStatus() != FRT.GoodsNoAll && _device.ActionStatus() == FRT.Stop)
                    {
                        // 完成任务
                        ISetTaskSuc();
                        // 解锁设备数据状态
                        DataControl._mTaskTools.DeviceUnLock(ITEM.DEVICE);
                        // LOG
                        log.LOG(DataControl._mTaskTools.GetLogMessS(ITEM, Order));
                        return;
                    }
                    else if (_device.GoodsStatus() == FRT.GoodsYesAll && _device.ActionStatus() == FRT.Stop &&
                             _arf.GoodsStatus() == ARF.GoodsYesAll && _arf.ActionStatus() == ARF.Stop)
                    {
                        return; // 固定辊台与摆渡车都有货,不启动辊台
                    }
                }
                // 发送指令
                if (_device.ActionStatus() == FRT.Stop)
                {
                    if (!DataControl._mSocket.SendToClient(ITEM.DEVICE, Order, out string result))
                    {
                        throw new Exception(result);
                    }
                    DataControl._mSocket.SwithRefresh(ITEM.DEVICE, false);
                    // LOG
                    log.LOG(DataControl._mTaskTools.GetLogMess(ITEM, Order));
                }
            }
            catch (Exception ex)
            {
                // LOG
                log.LOG(DataControl._mTaskTools.GetLogMessE(ITEM, Order, ex.ToString()));
            }
        }
Esempio n. 7
0
        public override void DoWork()
        {
            try
            {
                // 异常
                if (_device.DeviceStatus() == FRT.DeviceError || _device.CommandStatus() == FRT.CommandError)
                {
                    ISetTaskErr();
                    // LOG
                    log.LOG(String.Format(@"【Error】{0}:WMS任务ID[ {1} ],AGV任务ID[ {2} ],设备号[ {3} ], 异常信息[ {4} ].",
                                          ITEM.ITEM_ID, ITEM.WCS_NO, ITEM.ID, ITEM.DEVICE, "设备故障或命令错误"));
                    return;
                }

                #region 调试
                if (PublicParam.IsIgnoreFRT) //add调试判断
                {
                    if (_device.ActionStatus() == FRT.Stop)
                    {
                        // 发送指令
                        if (!DataControl._mSocket.SendToClient(ITEM.DEVICE, Order, out string result))
                        {
                            throw new Exception(result);
                        }
                        DataControl._mSocket.SwithRefresh(ITEM.DEVICE, false);
                        // LOG
                        log.LOG(String.Format(@"【SendOrder】{0}:WMS任务ID[ {1} ],AGV任务ID[ {2} ],设备号[ {3} ], 指令[ {4} ].",
                                              ITEM.ITEM_ID, ITEM.WCS_NO, ITEM.ID, ITEM.DEVICE, DataControl._mStools.BytetToString(Order)));
                    }
                    else
                    {
                        Thread.Sleep(5000);
                        // 完成任务
                        ISetTaskSuc();
                        // LOG
                        log.LOG(String.Format(@"【Success】{0}:WMS任务ID[ {1} ],AGV任务ID[ {2} ],设备号[ {3} ], 指令[ {4} ].",
                                              ITEM.ITEM_ID, ITEM.WCS_NO, ITEM.ID, ITEM.DEVICE, DataControl._mStools.BytetToString(Order)));
                    }
                    return;
                }
                #endregion

                // 对接设备状态
                if (!string.IsNullOrEmpty(ITEM.LOC_TO.Trim())) // 目标不为空即最终无货
                {
                    // 固定辊台无货物
                    if (_device.GoodsStatus() == FRT.GoodsNoAll && _device.ActionStatus() == FRT.Stop)
                    {
                        // 完成任务
                        ISetTaskSuc();
                        // LOG
                        log.LOG(String.Format(@"【Success】{0}:WMS任务ID[ {1} ],AGV任务ID[ {2} ],设备号[ {3} ], 指令[ {4} ].",
                                              ITEM.ITEM_ID, ITEM.WCS_NO, ITEM.ID, ITEM.DEVICE, DataControl._mStools.BytetToString(Order)));
                        return;
                    }
                }
                else
                {
                    // 固定辊台上有2#有货 或者 都有货
                    if ((_device.GoodsStatus() == FRT.GoodsYes2 || _device.GoodsStatus() == FRT.GoodsYesAll) && _device.ActionStatus() == FRT.Stop)
                    {
                        // 完成任务
                        ISetTaskSuc();
                        // LOG
                        log.LOG(String.Format(@"【Success】{0}:WMS任务ID[ {1} ],AGV任务ID[ {2} ],设备号[ {3} ], 指令[ {4} ].",
                                              ITEM.ITEM_ID, ITEM.WCS_NO, ITEM.ID, ITEM.DEVICE, DataControl._mStools.BytetToString(Order)));
                        return;
                    }
                }
                // 发送指令
                if (_device.ActionStatus() == FRT.Stop)
                {
                    if (!DataControl._mSocket.SendToClient(ITEM.DEVICE, Order, out string result))
                    {
                        throw new Exception(result);
                    }
                    DataControl._mSocket.SwithRefresh(ITEM.DEVICE, false);
                    // LOG
                    log.LOG(String.Format(@"【SendOrder】{0}:WMS任务ID[ {1} ],AGV任务ID[ {2} ],设备号[ {3} ], 指令[ {4} ].",
                                          ITEM.ITEM_ID, ITEM.WCS_NO, ITEM.ID, ITEM.DEVICE, DataControl._mStools.BytetToString(Order)));
                }
            }
            catch (Exception ex)
            {
                // LOG
                log.LOG(String.Format(@"【Error】{0}:WMS任务ID[ {1} ],AGV任务ID[ {2} ],设备号[ {3} ], 异常信息[ {4} ].",
                                      ITEM.ITEM_ID, ITEM.WCS_NO, ITEM.ID, ITEM.DEVICE, ex.ToString()));
            }
        }