FrmBoardSelect.cs 10.4 KB
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using TSA_V.Common;
using TSA_V.DeviceLibrary;

namespace TSA_V
{
    public partial class FrmBoardSelect : FrmBase
    {
        //1=插件,2=焊接,3=检测
        public int WorkType = 1;
        private bool IsInitOk = false;
        public FrmBoardSelect()
        {
            InitializeComponent();
        }
        public FrmBoardSelect(int type)
        {
            this.WorkType = type;
            InitializeComponent();
        }
        private void FrmBoardSelect_Load(object sender, EventArgs e)
        {
            FormEn(true);
            SetSkin(this);
            LanguageProcess();
            LoadCom();
            txtCode.Focus();
            SetScreen();
            timer1.Start();
            IsInitOk = true;
        }
        private void LoadCom()
        {
            cmbBoardList.DataSource = null;
            List<BoardInfo> list = new List<BoardInfo>(BoardManager.boardList);
            BoardInfo board = new BoardInfo();
            board.boardId = -1;
            board.boardName = "";
            list.Insert(0, board);
            cmbBoardList.DataSource = list;
            cmbBoardList.DisplayMember = "boardShowName";
            cmbBoardList.ValueMember = "boardId";
        }
        int preIndex = -1;
        private void cmbBoardList_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cmbBoardList.Text != "" && cmbBoardList.SelectedIndex >= 0 && (!cmbBoardList.SelectedIndex.Equals(preIndex)))
            {
                preIndex = cmbBoardList.SelectedIndex;
                BoardInfo board = (BoardInfo)cmbBoardList.SelectedItem;
                if (board.boardId.Equals(-1))
                {
                    lblBoardMsg.Text = ResourceCulture.GetString(ResourceCulture.SelectP, "请选择程序");
                    lblBoardMsg.ForeColor = Color.Red;
                    return;
                }
                if (board != null)
                {
                    lblBoardMsg.Text = board.GetDes();
                    this.lblBoardMsg.ForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(192)))), ((int)(((byte)(192)))));
                    BoardManager.CurrBoard = board;
                    LogUtil.info("切换到新板子:" + board.boardName);
                    FrmProjectorScreen.instance.ShowPoint(false, board.GetSmtList().ToArray());
                }
            }
        }

        private void btnBack_Click(object sender, EventArgs e)
        {
            if (ChangeWidthTask != null && ChangeWidthTask.IsCompleted.Equals(false))
            {
                LWidthManager.StopChangeWidth();
                LogUtil.info(Name + "返回之前,停止调宽");
            }
            FormEn(true);
            this.Close();
        }

        private void BtnNext_Click(object sender, EventArgs e)
        {
            if (CanStart())
            {
                WorkInfo.LastDBId = 0;
                FrmWork fw = new FrmWork();
                this.Hide();
                fw.ShowDialog();
                this.Close();
            }
        }

        private void txtCode_TextChanged(object sender, EventArgs e)
        {
            string code = FormUtil.getValue(txtCode).Trim();
            if (!code.Equals(""))
            {
                int index = -1;
                List<BoardInfo> list = (from m in BoardManager.boardList where (!String.IsNullOrEmpty(m.boardCode)) && m.boardCode.StartsWith(code) select m).ToList<BoardInfo>();
                if (list.Count <= 0)
                {
                    list = (from m in BoardManager.boardList where (!String.IsNullOrEmpty(m.boardCode)) && m.boardCode.Contains(code) select m).ToList<BoardInfo>();
                }
                if (list.Count <= 0)
                {
                    list = (from m in BoardManager.boardList where (!String.IsNullOrEmpty(m.boardCode)) && code.StartsWith(m.boardCode) select m).ToList<BoardInfo>();
                }
                if (list.Count <= 0)
                {
                    list = (from m in BoardManager.boardList where (!String.IsNullOrEmpty(m.boardCode)) && code.Contains(m.boardCode) select m).ToList<BoardInfo>();
                }

                if (list.Count > 0)
                {
                    foreach (BoardInfo board in BoardManager.boardList)
                    {
                        index++;
                        if (board.boardCode.Equals(list[0].boardCode))
                        {
                            cmbBoardList.SelectedIndex = index + 1;
                            break;
                        }
                    }
                }
                else
                {
                    cmbBoardList.SelectedIndex = 0;
                }
            }
            else
            {
                cmbBoardList.SelectedIndex = 0;
            }
        }
        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            if (!IsInitOk)
            {
                return base.ProcessCmdKey(ref msg, keyData); // 其他键按默认处理 
            }
            //Enter键
            if (keyData.Equals(Keys.Enter))
            {
                BtnNext_Click(null, null);
            }

            return base.ProcessCmdKey(ref msg, keyData); // 其他键按默认处理 
        }

        private void FrmBoardSelect_Shown(object sender, EventArgs e)
        {
            txtCode.Focus();
        }
        private bool CanStart()
        {
            if (this.cmbBoardList.SelectedIndex < 0)
            {
                MessageBox.Show(ResourceCulture.GetString(ResourceCulture.ConfigProduct, "请先配置程序"));
                this.Close();
            }
            else if (this.cmbBoardList.SelectedIndex.Equals(0))
            {
                MessageBox.Show(ResourceCulture.GetString(ResourceCulture.ConfigProduct, "请先选择程序"));
            }
            else
            {
                TSAVBean.OnlyGuoBan = chbGuoban.Checked;
                LogUtil.info("选择程序,是否流水线过板=" + TSAVBean.OnlyGuoBan);
                if (TSAVBean.OnlyGuoBan)
                {
                    TSAVBean.WorkSingleStart = false;
                }
                else
                {
                    TSAVBean.WorkSingleStart = chbWorkSingleStart.Checked;
                    LogUtil.info("选择程序,启用工作区信号检测开始工作=" + TSAVBean.OnlyGuoBan);
                    ConfigAppSettings.SaveValue(Setting_Init.WorkSingleStart, TSAVBean.WorkSingleStart);
                }
                if (WorkType.Equals(1))
                {
                    if (BoardManager.CurrBoard.GetSmtList().Count <= 0)
                    {
                        MessageBox.Show(ResourceCulture.GetString(ResourceCulture.CanotFindInfo, "电路板【{0}】没有组装信息,请选择其他程序!", BoardManager.CurrBoard.boardName));
                        return false;
                    }
                    return true;
                }
                
            }
            return false;
        }
        Task ChangeWidthTask = null;
        private void btnChangeW_Click(object sender, EventArgs e)
        {
            if (CanStart())
            {
                int w = BoardManager.CurrBoard.LineWidth;
                int p = LWidthManager.GetWidthPosition(w);
                LogUtil.info(" 选择程序[" + BoardManager.CurrBoard.boardName + "]后,开始轨道调宽:【" + w + "】【" + p + "】");

                string msg = ResourceCulture.GetString(ResourceCulture.SureChangeWidth, "当前宽度[{0}],目标宽度[{1}],是否开始调宽?",LWidthManager.Line_LastWidth,w);
                DialogResult result = MessageBox.Show(msg, "", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);
                if (!result.Equals(DialogResult.OK))
                {
                    return;
                }

                if (!LWidthManager.CanStartChWidth())
                {
                    MessageBox.Show(ResourceCulture.GetString(ResourceCulture.ChangeWFail, "启动调宽失败"));
                    return;
                }

                FormEn(false);
                Task.Factory.StartNew(delegate
                {
                    ChangeWidthTask = Task.Factory.StartNew(delegate
                   {
                       string ok = LWidthManager.StartChangeWidth(w, p);
                       LogUtil.info("调宽" + w + "=" + p + "结束:" + ok);
                       if (String.IsNullOrEmpty(ok))
                       {
                           MessageBox.Show(ResourceCulture.GetString(ResourceCulture.ChangeWOk, "调宽{0}={1}完成",w,p));
                       }
                       else
                       {
                           MessageBox.Show(ResourceCulture.GetString(ResourceCulture.ChangeWEnd,"调宽{0}={1}结束:{2}",w,p, ok));
                       }

                       //Thread.Sleep(5000);
                   });
                    ChangeWidthTask.Wait();
                    FormEn(true);
                });
            }
        }
        private void FormEn(bool en)
        {
            lblWait.Visible = !en;
            txtCode.Enabled = en;
            cmbBoardList.Enabled = en;
            btnChangeW.Enabled = en;
            btnNext.Enabled = en;
            chbGuoban.Enabled = en;
            btnBack.Enabled = true;
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (!this.Visible)
            {
                return;
            }
            if (TSAVBean.Status<=(TSAVStatus.Reset))
            {
                if (btnChangeW.Visible)
                {
                    btnChangeW.Visible = false;
                }
            }
            else
            {
                if (!btnChangeW.Visible)
                {
                    btnChangeW.Visible = true;
                }
            }
        }

        private void chbGuoban_CheckedChanged(object sender, EventArgs e)
        {
            if (chbGuoban.Checked)
            {
                chbWorkSingleStart.Checked = false;
                chbWorkSingleStart.Visible = false;
            }
            else
            {
                chbWorkSingleStart.Visible = true;
            }
        }
    }
}