FrmSetting.cs 6.0 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.Tasks;
using System.Windows.Forms;

namespace Asa.Camera
{
    public partial class FrmSetting : Form
    {
        private string path;

        public FrmSetting()
        {
            InitializeComponent();
        }

        private void GetConfig()
        {
            LstCodeOrder.Text = Common.visionLib.scanParam.CodeOrder.ToString();
            LstCodeType1.Text = Common.visionLib.scanParam.HalconType.ToString();
            NudZoom1DCode.Value = Convert.ToDecimal(Common.visionLib.scanParam.Zoom1D);
            NudZoom2DCode.Value = Convert.ToDecimal(Common.visionLib.scanParam.Zoom2D);
            LstCodeType2.Text = Common.visionLib.scanParam.EyemType.ToString();
            NudBlockSize.Value = Common.visionLib.scanParam.EyemBlockSize;
            NudRangeC.Value = Common.visionLib.scanParam.EyemRangeC;
            NudSymbolMin.Value = Common.visionLib.scanParam.EyemSymbolMin;
            NudSymbolMax.Value = Common.visionLib.scanParam.EyemSymbolMax;

            LstCamera.Items.Clear();
            LstCamera.Items.AddRange(Common.visionLib.GetCameraName());

            LstRegion.Items.Clear();

            DgvIPCamera.Rows.Clear();
            for (int i = 0; i < Common.visionLib.ipCameraInfos.Count; i++)
            {
                string[] info = new string[5];
                info[0] = Common.visionLib.ipCameraInfos[i].Name;
                info[1] = Common.visionLib.ipCameraInfos[i].IP;
                info[2] = Common.visionLib.ipCameraInfos[i].User;
                info[3] = Common.visionLib.ipCameraInfos[i].Password;
                info[4] = Common.visionLib.ipCameraInfos[i].Port.ToString();
                DgvIPCamera.Rows.Add(info);
            }
        }

        private void SaveConfig(string path)
        {
            Common.visionLib.scanParam.CodeOrder = (CameraVisionLib.Model.ScanCodeOrder)LstCodeOrder.SelectedIndex;
            Common.visionLib.scanParam.HalconType = (CameraVisionLib.Model.CodeType)LstCodeType1.SelectedIndex;
            Common.visionLib.scanParam.Zoom1D = Convert.ToSingle(NudZoom1DCode.Value);
            Common.visionLib.scanParam.Zoom2D = Convert.ToSingle(NudZoom2DCode.Value);
            Common.visionLib.scanParam.EyemType = (CameraVisionLib.Model.CodeType)LstCodeType2.SelectedIndex;
            Common.visionLib.scanParam.EyemBlockSize = Convert.ToInt32(NudBlockSize.Value);
            Common.visionLib.scanParam.EyemRangeC = Convert.ToInt32(NudRangeC.Value);
            Common.visionLib.scanParam.EyemSymbolMin = Convert.ToInt32(NudSymbolMin.Value);
            Common.visionLib.scanParam.EyemSymbolMax = Convert.ToInt32(NudSymbolMax.Value);

            Common.visionLib.ipCameraInfos.Clear();
            for (int i = 0; i < DgvIPCamera.Rows.Count - 1; i++)
            {
                CameraVisionLib.Model.IPCameraInfo item = new();
                item.Name = DgvIPCamera.Rows[i].Cells[0].Value.ToString();
                item.IP = DgvIPCamera.Rows[i].Cells[1].Value.ToString();
                item.User = DgvIPCamera.Rows[i].Cells[2].Value.ToString();
                item.Password = DgvIPCamera.Rows[i].Cells[3].Value.ToString();
                item.Port = Convert.ToInt32(DgvIPCamera.Rows[i].Cells[4].Value);
                Common.visionLib.ipCameraInfos.Add(item);
            }

            Common.visionLib.SaveAsConfig(path);
            MessageBox.Show("保存成功!", "保存", MessageBoxButtons.OK, MessageBoxIcon.Information);
        }




        private void FrmSetting_Load(object sender, EventArgs e)
        {
            Version version = new(ProductVersion);
            LblVersion.Text = version.ToString();

            string[] order = Enum.GetNames(typeof(CameraVisionLib.Model.ScanCodeOrder)).ToArray();
            LstCodeOrder.Items.AddRange(order);
            LstCodeOrder.SelectedIndex = 0;
            order = Enum.GetNames(typeof(CameraVisionLib.Model.CodeType)).ToArray();
            LstCodeType1.Items.AddRange(order);
            LstCodeType1.SelectedIndex = 0;
            LstCodeType2.Items.AddRange(order);
            LstCodeType2.SelectedIndex = 0;
        }

        private void FrmSetting_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (Common.visionLib != null)
                Common.visionLib.Dispose();
        }

        private void BtnLoad_Click(object sender, EventArgs e)
        {
            OpenFileDialog dlg = new() { Filter = "JSON File|*.json" };
            if (dlg.ShowDialog() != DialogResult.OK) return;

            path = dlg.FileName;
            LblPath.Text = "路径:" + path;
            Common.visionLib = new(path);
            GetConfig();


        }

        private void BtnSave_Click(object sender, EventArgs e)
        {
            if (string.IsNullOrWhiteSpace(path)) return;
            SaveConfig(path);
        }

        private void BtnExport_Click(object sender, EventArgs e)
        {
            SaveFileDialog dlg = new() { Filter = "JSON File|*.json" };
            if (dlg.ShowDialog() != DialogResult.OK) return;
            SaveConfig(dlg.FileName);
        }

        private void BtnExit_Click(object sender, EventArgs e)
        {
            Close();
        }

        private void BtnOpenCamera_Click(object sender, EventArgs e)
        {
            if (LstCamera.SelectedIndex == -1) return;
            FrmOpenCamera frm = new(LstCamera.Text);
            if (frm.ShowDialog() == DialogResult.Cancel) return;
            LstCamera_SelectedIndexChanged(null, EventArgs.Empty);
        }

        private void LstCamera_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (LstCamera.SelectedIndex == -1) return;
            LstRegion.Items.Clear();
            if (Common.visionLib.regionLists.TryGetValue(LstCamera.Text, out List<CameraVisionLib.Model.RegionPlan> value))
            {
                for (int i = 0; i < value.Count; i++)
                    LstRegion.Items.Add(value[i].Name);
            }
        }


    }
}