SettingControl.cs 4.7 KB
using CodeLibrary;
using ConfigHelper;
using DeviceLibrary;
using OnlineStore;
using OnlineStore.Common;
using OnlineStore.LoadCSVLibrary;
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace TheMachine
{
    public partial class SettingControl : UserControl
    {
        public SettingControl()
        {
            InitializeComponent();
            RobotManage.LoadFinishEvent += RobotManage_LoadFinishEvent;
            //chbAutoRun.Enabled = false;
            chbAutoRun.Checked = Setting_Init.App_AutoRun;
            this.chbAutoRun.CheckedChanged += new System.EventHandler(this.chbAutoRun_CheckedChanged);
            //chbAutoRun.Enabled = true;

            for (int i = 0; i < 20; i++)
            {
                cb_tempsensorport.Items.Add("COM" + i);
            }
        }

        private void RobotManage_LoadFinishEvent(bool state, string msg)
        {
            if (!state)
                return;           
        }


        private void SettingControl_Load(object sender, EventArgs e)
        {
            cb_leftmode.Items.AddRange(InOutModeItem.Items);
            cb_leftmode.SelectedIndex =(int)((InOutModeE)Setting_Init.Device_LeftInoutMode);

            cb_rightmode.Items.AddRange(InOutModeItem.Items);
            cb_rightmode.SelectedIndex = (int)((InOutModeE)Setting_Init.Device_RightInoutMode);

            Config.PropertyBind(Setting_Init.Device_Humiture_Port.Key, cb_tempsensorport, "SelectedItem", "SelectedIndexChanged");
        }


        public static void AutoRun(string strName, bool value)
        {
            try
            {
                //创建启动对象 
                System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo();
                //设置运行文件
                startInfo.FileName = System.Windows.Forms.Application.StartupPath + "\\AuToRunManager.exe";
                //设置启动参数 
                startInfo.Arguments = String.Join(" ", new string[2] { strName, value.ToString() });
                //设置启动动作,确保以管理员身份运行
                startInfo.Verb = "runas";
                //如果不是管理员,则启动UAC 
                System.Diagnostics.Process.Start(startInfo);
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }

        private void chbAutoRun_CheckedChanged(object sender, EventArgs e)
        {
            if (chbAutoRun.Checked)
            {
                Setting_Init.App_AutoRun=true;
                AutoRun(Application.ExecutablePath, true);
            }
            else
            {
                Setting_Init.App_AutoRun = false;
                AutoRun(Application.ExecutablePath, false);
            }
        }

        public class InOutModeItem {
            public InOutModeE inOutModeItem = InOutModeE.Both;
            public string Name = "";
            static List<InOutModeItem> items = new List<InOutModeItem>();

            public static InOutModeItem[] Items { get => items.ToArray(); }
            public override string ToString()
            {
                return Name;
            }
            static InOutModeItem()
            {
                items.Add(new InOutModeItem { inOutModeItem= InOutModeE.Both,Name="双向" });
                items.Add(new InOutModeItem { inOutModeItem= InOutModeE.OnlyIN,Name="仅入库" });
                items.Add(new InOutModeItem { inOutModeItem= InOutModeE.OnlyOUT,Name= "仅出库" });
                items.Add(new InOutModeItem { inOutModeItem= InOutModeE.Disable,Name="禁用" });
            }
        }

        private void button1_Click(object sender, EventArgs e)
        {
            Setting_Init.Device_LeftInoutMode = ((InOutModeItem)cb_leftmode.SelectedItem).inOutModeItem;
            Setting_Init.Device_RightInoutMode = ((InOutModeItem)cb_rightmode.SelectedItem).inOutModeItem;
        }

        private void cb_tempsensorport_SelectedIndexChanged(object sender, EventArgs e)
        {
            HumitureController.Init(Setting_Init.Device_Humiture_Port);
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (!Visible)
                return;

            lbl_hmdstate.Text = "当前状态:";
            if (!HumitureController.IsRun)
            {
                lbl_hmdstate.Text +=  "未成功连接";
                return;
            }
            var t = HumitureController.LastData;
            lbl_hmdstate.Text += "温度"+$":{t.Temperate}℃, "+ "湿度"+$":{t.Humidity}%, " + "氮气" + $":{100-t.OxygenV-1}%";
        }
    }
}