Exemplo n.º 1
0
        public LaserPrinting()
        {
            InitializeComponent();
            SetDefultEvent();
            toolStripbtnSet.Enabled   = false;
            toolStripbtnPoint.Enabled = false;

            if (GlobalParameter.UseMode.Equals("1"))
            {
                #region 測試後不用要刪除

                PLCMethod.PLC_Connect();
                Thread.Sleep(1000);

                #endregion 測試後不用要刪除

                panel1.Enabled = false;
                try
                {
                    if (!GlobalData.PLC初始連線是否成功)
                    {
                        MessageBox.Show("PLC連線失敗:請檢查PLC連線IP、機台是否異常。"); return;
                    }
                    if (!GlobalData.PLC線路異常)
                    {
                        ThreadPool.QueueUserWorkItem(DM8123雷射打印執行緒);
                    }
                    else
                    {
                        MessageBox.Show("PLC線路異常。"); return;
                    }
                    SerialPortMethod.LaserOpenPort(GlobalParameter.LaserSerialPort);
                }
                catch (Exception ex)
                {
                    logger.Error(ex, "Exception錯誤");
                    MessageBox.Show("Exception錯誤:" + ex.Message);
                    return;
                }

                try
                {
                    if (LaserConnectionPort.LaserPort.IsOpen)
                    {
                        ModelSTS modelSTS = LaserExecuteWrite.執行STS狀態請求讀取(LaserCommand.STS狀態請求讀取);
                        formStartModel.LSR雷射狀態 = modelSTS.LSRStatus; formStartModel.SHT遮光閥狀態 = modelSTS.SHTStatus;
                        DefultLaserControll();
                    }
                }
                catch (Exception ex)
                {
                    logger.Error(ex, "Exception錯誤");
                    MessageBox.Show("請檢查雷射是否斷線、未開機、未開啟REMOTE。");
                }

                panel1.Enabled = true;
            }
        }
Exemplo n.º 2
0
        public Reader()
        {
            InitializeComponent();
            ButtonProperty.SetProperty(btnRead, true);
            ButtonProperty.SetProperty(btnReadWrite, true);
            if (GlobalParameter.UseMode.Equals("1"))
            {
                #region 測試後不用要刪除

                PLCMethod.PLC_Connect();
                Thread.Sleep(1000);

                #endregion 測試後不用要刪除

                // PLC連線、條碼讀取器連線
                try
                {
                    if (!GlobalData.PLC初始連線是否成功)
                    {
                        MessageBox.Show("PLC連線失敗:請檢查PLC連線IP、機台是否異常。"); return;
                    }
                    if (!GlobalData.PLC線路異常)
                    {
                        ThreadPool.QueueUserWorkItem(DM8120讀取2D碼執行緒);
                    }
                    else
                    {
                        MessageBox.Show("PLC線路異常。"); return;
                    }

                    bool check = LiveviewFormProperty.ReadConnect(liveviewForm1, readerAccessor, GlobalParameter.ReadIP);
                    if (!check)
                    {
                        MessageBox.Show("條碼讀取器連線異常。"); return;
                    }
                }
                catch (Exception ex)
                {
                    logger.Error(ex, "Exception錯誤");
                    MessageBox.Show("Exception錯誤:" + ex.Message);
                    return;
                }

                // Hoioke機台連線
                try
                {
                    IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(GlobalParameter.HiokiIP), 32006);
                    this.socket = new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
                    Thread tread = new Thread(new ThreadStart(CheckSocketConnect));
                    tread.Start();
                    this.socket.Connect(ipe);
                }
                catch (Exception)
                {
                    MessageBox.Show("Hiorki連線: Hiorki機台連線異常,請檢查IP位置或網路線路是否異常。");
                }
            }
        }
Exemplo n.º 3
0
        /// <summary>
        /// 傳送資料 TO PLC
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPLCWrite_Click(object sender, EventArgs e)
        {
            try
            {
                // 使用者異動紀錄
                recChangeService.AddData(new RecChange
                {
                    NowTime  = Convert.ToDateTime(DateTime.Now.ToString("yyyy/MM/dd HH:ss:mm")),
                    Message  = "PLC傳送資料",
                    UserName = GlobalParameter.UserName
                });

                if (string.IsNullOrEmpty(lblPartNo.Text))
                {
                    MessageBox.Show("未選取一筆"); return;
                }
                if (GlobalData.PLC初始連線是否成功 && !GlobalData.PLC線路異常)
                {
                    // DWORD
                    List <string> data = new List <string>();
                    PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.PieceSizeX, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.PieceSizeY, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.PieceSizeT, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.PositionX2D, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.PositionY2D, data);
                    PLCMethod.SetDefultParameter("0", 20, data);
                    PLCMethod.SetParameterSplit(partNoJoinTrayAndLaser.TrayNo.ToString(), data);
                    PLCMethod.SetParameterSplit(partNoJoinTrayAndLaser.DivideNoX.ToString(), data);
                    PLCMethod.SetParameterSplit(partNoJoinTrayAndLaser.DivideNoY.ToString(), data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.DividePitchX, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.DividePitchY, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.PieceCenterX, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.PieceCenterY, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.TrayThickness, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.TrayCenter, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.TrayLength, data);
                    PLCMethod.SetDefultParameter("0", 10, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.TrayOffsetX, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.TrayOffsetY, data);
                    PLCMethod.SetDefultParameter("0", 6, data);
                    PLCcommand.PLC_Write(PLCcommand.Cmd_Mode.Mode_Write_Multiple,
                                         PLCcommand.PLC_IO.DM, DmTable.DM_8300DWORD_板寬X, 0, data.Count, data);
                }
                else
                {
                    MessageBox.Show("PLC斷線異常");
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
            }
        }
Exemplo n.º 4
0
        private void DM8110結批(object obj)
        {
            while (true)
            {
                if (GlobalData.DM[DmTable.DM_8110結批].Equals("1"))
                {
                    // 產出資料

                    // PLC:DM_8110結批,清空點位
                    PLCMethod.WriteSingle(DmTable.DM_8110結批, 0);
                }

                Thread.Sleep(100);
            }
        }
Exemplo n.º 5
0
        private void 雷射動作執行緒(object obj)
        {
            while (true)
            {
                if (GlobalData.DM[DmTable.DM_8123雷射打印開始].Equals("1"))
                {
                    if (formStartModel.允許雷射打印Tag)
                    {
                        if (GlobalData.DM[DmTable.DM_8104停止].Equals("1") || GlobalData.DM[DmTable.DM_8110結批].Equals("1"))
                        {
                            lblAutoRun.Text         = "停止運轉";
                            splitContainer1.Enabled = true;
                        }
                        else
                        {
                            string cmd = string.Empty, response = string.Empty;
                            Thread.Sleep(200);
                            if (formStartModel.SHT遮光閥狀態.Equals("0"))
                            {
                                cmd      = LaserCommand.MKM指令接收控制設定("1");
                                response = LaserExecuteWrite.執行MRK印字觸控制設定(cmd);
                                if (ValidateUtility.DisplayMessage(response))
                                {
                                    return;
                                }
                                formStartModel.SHT遮光閥狀態 = "1";
                            }

                            Thread.Sleep(200);
                            cmd      = LaserCommand.MRK印字觸控制設定("1");
                            response = LaserExecuteWrite.執行MRK印字觸控制設定(cmd);
                            int dm = ValidateUtility.DisplayMessage(response).Equals(true) ?
                                     DmTable.DM_8230雷射打印異常 : DmTable.DM_8229雷射打印完畢;
                            PLCMethod.WriteSingle(dm, 1);
                        }
                    }
                    else
                    {
                        PLCMethod.WriteSingle(DmTable.DM_8229雷射打印完畢, 1);
                    }

                    // PLC:DM_8123雷射打印開始,清空點位
                    PLCMethod.WriteSingle(DmTable.DM_8123雷射打印開始, 0);
                }

                Thread.Sleep(100);
            }
        }
Exemplo n.º 6
0
        private void Step2寫入PLC資料()
        {
            // DWORD
            List <string> data = new List <string>();

            PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.PieceSizeX, data);
            PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.PieceSizeY, data);
            PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.PieceSizeT, data);
            PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.PositionX2D, data);
            PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.PositionY2D, data);
            PLCMethod.SetDefultParameter("0", 20, data);
            PLCMethod.SetParameterSplit(partNoJoinTrayAndLaser.TrayNo.ToString(), data);
            PLCMethod.SetParameterSplit(partNoJoinTrayAndLaser.DivideNoX.ToString(), data);
            PLCMethod.SetParameterSplit(partNoJoinTrayAndLaser.DivideNoY.ToString(), data);
            PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.DividePitchX, data);
            PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.DividePitchY, data);
            PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.PieceCenterX, data);
            PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.PieceCenterY, data);
            PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.TrayThickness, data);
            PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.TrayCenter, data);
            PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.TrayLength, data);
            PLCMethod.SetDefultParameter("0", 10, data);
            PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.TrayOffsetX, data);
            PLCMethod.SetParameterSplitForPoint(partNoJoinTrayAndLaser.TrayOffsetY, data);
            PLCMethod.SetDefultParameter("0", 6, data);
            PLCcommand.PLC_Write(PLCcommand.Cmd_Mode.Mode_Write_Multiple,
                                 PLCcommand.PLC_IO.DM, DmTable.DM_8300DWORD_板寬X, 0, data.Count, data);

            // judge判斷寫入PLC
            List <string> listJudge = partNoJoinTrayAndLaser.JudgeStatus.Split('、').ToList();
            List <int>    listDM    = new List <int> {
                { DmTable.DM_8231PASS }, { DmTable.DM_8232UNTEST }, { DmTable.DM_8233LO },
                { DmTable.DM_8234LEAK }, { DmTable.DM_8235CCD }, { DmTable.DM_8236OPEN },
                { DmTable.DM_8237LOW4W }, { DmTable.DM_8238VISUAL }, { DmTable.DM_8239FAIL10 },
                { DmTable.DM_8240FAIL11 }, { DmTable.DM_8241FAIL12 }, { DmTable.DM_8242FAIL13 },
                { DmTable.DM_8243SKIP }
            };

            if (listJudge.Count == listDM.Count)
            {
                for (int i = 0; i < listJudge.Count; i++)
                {
                    int value = listJudge[i] == "ON" ? 1 : 0;
                    PLCcommand.PLC_Write(PLCcommand.Cmd_Mode.Mode_Write_Single,
                                         PLCcommand.PLC_IO.DM, listDM[i], value, 0, null);
                }
            }
        }
Exemplo n.º 7
0
        private void 條碼讀取器動作執行緒(object obj)
        {
            while (true)
            {
                // 讀檔
                if (GlobalData.DM[DmTable.DM_8120CCD讀取2D碼].Equals("1"))
                {
                    if (formStartModel.允許2D讀取Tag)
                    {
                        GlobalParameter.ReadContent = readerAccessor.ExecCommand("LON", 8000);
                        if (string.IsNullOrEmpty(GlobalParameter.ReadContent))
                        {
                            readerAccessor.ExecCommand("LOFF");
                            PLCMethod.WriteSingle(DmTable.DM_8221CCD讀2D檔失敗, 1);
                        }
                        else
                        {
                            PLCMethod.WriteSingle(DmTable.DM_8220CCD讀2D碼完成, 1);
                        }
                    }
                    else
                    {
                        PLCMethod.WriteSingle(DmTable.DM_8220CCD讀2D碼完成, 1);
                    }

                    PLCMethod.WriteSingle(DmTable.DM_8120CCD讀取2D碼, 0);
                }
                Thread.Sleep(100);

                // 寫入
                if (GlobalData.DM[DmTable.DM_81212D碼通知寫入].Equals("1"))
                {
                    string xmlString = "<?xml version='1.0' encoding='UTF-8'?>"
                                       + "<COMMAND>"
                                       + "<COM_NUM>11</COM_NUM>"
                                       + "<INFORMATION>"
                                       + "<ID>" + GlobalParameter.ReadContent + "</ID>"
                                       + "</INFORMATION>"
                                       + "</COMMAND>";
                    socket.SendTimeout    = 10000;
                    socket.ReceiveTimeout = 5000;

                    // 送出XML
                    XmlDocument doc = new XmlDocument();
                    doc.InnerXml = xmlString;
                    Byte[] sendBuf = Encoding.UTF8.GetBytes(doc.OuterXml);
                    socket.Send(sendBuf, sendBuf.Length, SocketFlags.None);

                    // 回傳XML
                    Byte[] recvBuf = new Byte[0x40000];
                    for (Int32 i = 0; i < recvBuf.Length; i++)
                    {
                        recvBuf[i] = 0;
                    }
                    socket.Receive(recvBuf, 0, recvBuf.Length, SocketFlags.None);

                    // 取得子節點參數,正確:"0"、錯誤:"1"
                    XElement xmlroot = XElement.Parse(TypeMethod.FormtXmlDoc(Encoding.UTF8.GetString(recvBuf)));
                    string   error   = ((XElement)(xmlroot.Element("ERROR"))).Value;
                    int      dm      = (error == "0") ? DmTable.DM_82222D碼寫入完成 : DmTable.DM_82232D碼寫入失敗;
                    PLCMethod.WriteSingle(dm, 1);

                    // PLC:DM_81212D碼通知寫入,清空點位
                    PLCMethod.WriteSingle(DmTable.DM_81212D碼通知寫入, 0);
                }
                Thread.Sleep(100);
            }
        }
Exemplo n.º 8
0
        public FormStart()
        {
            InitializeComponent();
            SetDefultEvent();

            // 條碼讀取器,預設顯示還是不顯示
            label3.Visible = lblCCD.Visible = liveviewForm1.Visible = false;
            ToolStripMenuItemSW(false, "FormStart");
            DefultListViewInit();
            ThreadPool.QueueUserWorkItem(日期時間執行緒);
            if (GlobalParameter.UseMode.Equals("1"))
            {
                // PLC連線
                PLCMethod.PLC_Connect();
                Thread.Sleep(1000);
                if (GlobalData.PLC初始連線是否成功)
                {
                    ThreadPool.QueueUserWorkItem(警示燈執行緒);
                }
                else
                {
                    MessageBox.Show("PLC連線失敗:請檢查PLC連線IP、機台是否異常。"); return;
                }

                // 雷射功能連線
                try
                {
                    SerialPortMethod.LaserOpenPort(GlobalParameter.LaserSerialPort);
                    if (LaserConnectionPort.LaserPort.IsOpen)
                    {
                        ModelSTS modelSTS = LaserExecuteWrite.執行STS狀態請求讀取(LaserCommand.STS狀態請求讀取);
                        formStartModel.LSR雷射狀態 = modelSTS.LSRStatus; formStartModel.SHT遮光閥狀態 = modelSTS.SHTStatus;
                        DefultLaserControll();
                    }
                }
                catch (Exception ex)
                {
                    MessageBox.Show("請檢查雷射是否斷線、未開機、未開啟REMOTE。" + ex.Message);
                    return;
                }

                // 條碼讀取器連線
                try
                {
                    bool check = LiveviewFormProperty.ReadConnect(liveviewForm1, readerAccessor, GlobalParameter.ReadIP);
                    if (!check)
                    {
                        MessageBox.Show("條碼讀取器連線異常、請確認IP位置。");
                        return;
                    }
                    label3.Visible = lblCCD.Visible = liveviewForm1.Visible = true;
                }
                catch (Exception ex)
                {
                    logger.Error(ex, "Exception錯誤");
                    MessageBox.Show("Exception錯誤:" + ex.Message);
                    return;
                }

                // Hoioke機台連線
                try
                {
                    IPEndPoint ipe = new IPEndPoint(IPAddress.Parse(GlobalParameter.HiokiIP), 32006);
                    this.socket = new Socket(ipe.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
                    Thread tread = new Thread(new ThreadStart(CheckSocketConnect));
                    tread.Start();
                    this.socket.Connect(ipe);
                }
                catch (Exception ex)
                {
                    MessageBox.Show("Hiorki連線: Hiorki機台連線異常,請檢查IP位置或網路線路是否異常。" + ex.Message);
                }
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// 設定存檔
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void toolStripbtnSet_Click(object sender, EventArgs e)
        {
            string cmd = string.Empty, response = string.Empty, record = string.Empty;

            toolStripbtnSet.Enabled   = false;
            toolStripbtnPoint.Enabled = true;
            try
            {
                // 異動紀錄
                AddRecChangeMethod("手動流程:雷射設定存檔");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }

            if (GlobalParameter.UseMode.Equals("0"))
            {
                MessageBox.Show("測試模式,無法設定存檔。"); return;
            }

            // 驗證資料
            List <string> parameter = new List <string> {
                { cbBoxPartNo.Text }, { lblFNO.Text }, { lblPower.Text }, { lblSpeed.Text }
            };

            response = ValidateUtility.CheckParameter(parameter);
            if (ValidateUtility.DisplayMessage(response))
            {
                return;
            }

            // 板子計算方式
            PieceResultModel pieceResultModel = new PieceCalculationMethod()
                                                .PieceCalculation(new PieceRequestModel
            {
                板子X尺寸     = Convert.ToDouble(partNoJoinLaser[0].PieceSizeX),
                板子Y尺寸     = Convert.ToDouble(partNoJoinLaser[0].PieceSizeY),
                X偏移位置     = Convert.ToDouble(lblXoffset.Text),
                Y偏移位置     = Convert.ToDouble(lblYoffset.Text),
                台與雷射中心點差距 = GlobalParameter.VehicleAndPieceCenter
            });

            #region PLC寫入

            try
            {
                if (!GlobalData.PLC線路異常)
                {
                    List <string> data = new List <string>();
                    PLCMethod.SetParameterSplitForPoint(partNoJoinLaser[0].PieceSizeX, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinLaser[0].PieceSizeY, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinLaser[0].PieceSizeT, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinLaser[0].PositionX2D, data);
                    PLCMethod.SetParameterSplitForPoint(partNoJoinLaser[0].PositionY2D, data);
                    PLCMethod.SetDefultParameter("0", 20, data);
                    PLCMethod.SetParameterSplit(dataTray.TrayNo.ToString(), data);
                    PLCMethod.SetParameterSplit(dataTray.DivideNoX.ToString(), data);
                    PLCMethod.SetParameterSplit(dataTray.DivideNoY.ToString(), data);
                    PLCMethod.SetParameterSplitForPoint(dataTray.DividePitchX, data);
                    PLCMethod.SetParameterSplitForPoint(dataTray.DividePitchY, data);
                    PLCMethod.SetParameterSplitForPoint(dataTray.PieceCenterX, data);
                    PLCMethod.SetParameterSplitForPoint(dataTray.PieceCenterY, data);
                    PLCMethod.SetParameterSplitForPoint(dataTray.TrayThickness, data);
                    PLCMethod.SetParameterSplitForPoint(dataTray.TrayCenter, data);
                    PLCMethod.SetParameterSplitForPoint(dataTray.TrayLength, data);
                    PLCMethod.SetDefultParameter("0", 10, data);
                    PLCMethod.SetParameterSplitForPoint(dataTray.TrayOffsetX, data);
                    PLCMethod.SetParameterSplitForPoint(dataTray.TrayOffsetY, data);
                    PLCMethod.SetDefultParameter("0", 6, data);
                    PLCcommand.PLC_Write(PLCcommand.Cmd_Mode.Mode_Write_Multiple,
                                         PLCcommand.PLC_IO.DM, DmTable.DM_8300DWORD_板寬X, 0, data.Count, data);
                }
                else
                {
                    MessageBox.Show("PLC線路異常。");
                    return;
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception錯誤");
                MessageBox.Show("Exception_PLC系統異常錯誤:" + ex.Message);
                return;
            }

            #endregion PLC寫入

            #region 雷射寫入

            try
            {
                if (SHT遮光閥狀態.Equals("1"))
                {
                    cmd      = LaserCommand.MKM指令接收控制設定("0");
                    response = LaserExecuteWrite.執行MRK印字觸控制設定(cmd);
                    if (ValidateUtility.DisplayMessage(response))
                    {
                        return;
                    }
                    SHT遮光閥狀態 = "0";
                    record  += "1.SHT,";
                }

                // 設定 FNO
                cmd      = LaserCommand.FNO文件變更控制設定(lblFNO.Text);
                response = LaserExecuteWrite.執行FNO文件變更控制設定(cmd);
                if (ValidateUtility.DisplayMessage(response))
                {
                    return;
                }
                record += "2.FNO,";

                // 雷射功率
                cmd = LaserCommand.LPW激光功率控制設定(string.Format("{0:000.0}",
                                                             Convert.ToInt32(lblPower.Text)));
                response = LaserExecuteWrite.執行LPW激光功率控制設定(cmd);
                if (ValidateUtility.DisplayMessage(response))
                {
                    return;
                }
                record += "3.LPW,";

                // 掃描速度
                cmd = LaserCommand.SSP掃描速度控制設定(string.Format("{0:00000}",
                                                             Convert.ToInt32(lblSpeed.Text)));
                response = LaserExecuteWrite.執行SSP掃描速度控制設定(cmd);
                if (ValidateUtility.DisplayMessage(response))
                {
                    return;
                }
                record += "4.SSP,";

                // 設定座標位置
                List <double> list = new List <double> {
                    { pieceResultModel.X位置 }, { pieceResultModel.Y位置 }
                };
                List <string> laserList = TypeMethod.SetFormatValue(list, "{0:000.000}");
                ModelSPC      modelSPC  = new ModelSPC
                {
                    SonCmd    = "S",
                    Xposition = laserList[0],
                    Yposition = laserList[1]
                };
                cmd      = LaserCommand.SPC文字條件控制設定(modelSPC);
                response = LaserExecuteWrite.執行SPC文字條件控制設定(cmd);
                if (ValidateUtility.DisplayMessage(response))
                {
                    return;
                }
                record += "5.SPC,";

                // 雷射參數儲存
                LaserExecuteWrite.執行FOR文件覆盖保存控制設定(LaserCommand.FOR文件覆盖保存控制設定);
                record += "6.FOR,";

                // DB資料寫入
                IDataLaserService dataLaserService = new DataLaserService();
                ResponseModel     ResponseModel    = dataLaserService.UpdateData(new DataLaser
                {
                    PartNo  = cbBoxPartNo.Text,
                    FnoNo   = lblFNO.Text,
                    Xoffset = lblXoffset.Text,
                    Yoffset = lblYoffset.Text,
                    Power   = lblPower.Text,
                    Speed   = lblSpeed.Text
                });
                if (ResponseModel.Status.Equals(StatusEnum.Error))
                {
                    logger.Error(ResponseModel.ResponseMsg);
                    MessageBox.Show(ResponseModel.ResponseMsg);
                    return;
                }
                record += "7.DB";

                if (!ValidateUtility.DisplayMessage(response))
                {
                    MessageBox.Show("設定完成,執行紀錄:" + record);
                }
            }
            catch (Exception ex)
            {
                logger.Error(ex, "Exception_Error:" + record);
                MessageBox.Show("Exception_雷射系統異常錯誤:" + ex.Message + ",執行紀錄:" + record);
            }

            #endregion 雷射寫入
        }