mainForm.cs 10.5 KB
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using MachineDll;
using Dal;
using Comm;

namespace testSoftForContaminationExplorer
{
    public partial class mainForm : Form, IReceiveData
    {
        #region 定义
        private int timeData=0;//时间
        private readonly Fuction fuction = new Fuction();
        private TheMachine theMachine;
        private string m_ReadHeatTemp;
        private bool _IsRealStart=false;//是否开始测试
        private bool _IsStartPrepare;
        private double washUpperLimit=0.05;//过滤上限
        private bool _IsPassJudgeWash;

        private bool _IsFirstPassJudgeWash = true;
        private DataTable table1;
        private bool isStop = false;
        public string portName = "";//设置端口值
        private int timerWash = 0;//过滤清洗时间20s
        #endregion

        public mainForm()
        {
            InitializeComponent();
        }
        Setting s = null;
        
        private void button1_Click(object sender, EventArgs e)
        {
            s = new Setting(this);
            s.Show();
            s.Activate();
        }

        private void mainForm_Load(object sender, EventArgs e)
        {
            this.groupBox1.ForeColor = Color.Gray;
            this.label1.ForeColor = Color.Gray;
            this.label2.ForeColor = Color.Gray;
            this.textBox1.ForeColor = Color.Gray;
            this.textBox2.ForeColor = Color.Gray;
            this.lblY0.ForeColor = Color.Gray;
            this.btnClean.ForeColor = Color.Gray;
            this.filterStata.ForeColor = Color.Gray;
            this.lblY1.ForeColor = Color.Gray;
            this.btnFilter.ForeColor = Color.Gray;
            this.lblY2.ForeColor = Color.Gray;
            this.cleanState.ForeColor = Color.Gray;
            CheckForIllegalCrossThreadCalls = false;
        }

        private bool isEnableButton8 = true;
        private bool isEnableButton5 = true ;
        /**
         * 清洗
         */
        private void button5_Click(object sender, EventArgs e)
        {
            this.btnClean.Enabled = false;
            this.btnFilter.Enabled = false;
            this.cleanState.Text = "正常";
            this.cleanState.ForeColor = Color.Black;
            this.lblY0.ForeColor = Color.Black;
            this.lblY2.ForeColor = Color.Black;
            this.lblY1.ForeColor = Color.Gray;
            timeData = 0;
            try
            {
                theMachine = GetMachineFromMe.GetMachine;
                SerialPortSetting.PortName = portName;
                if (theMachine.StartConnection())
                {
                    theMachine.AddClients(this);
                    theMachine.GetControllor.OpenY0();
                    System.Threading.Thread.Sleep(1500);
                    theMachine.GetControllor.OpenY2();
                    System.Threading.Thread.Sleep(1500);
                    theMachine.GetControllor.CloseY1();
                    if (!theMachine.StartReadingIO())
                    {
                        this.Close();
                    }
                }
                else
                {
                    this.lblY0.ForeColor = Color.Gray;
                    this.lblY2.ForeColor = Color.Gray;
                    this.cleanState.Text = "异常";
                }
                
                this.btnClean.Enabled = true;
                this.btnFilter.Enabled = true;
            }
            catch (Exception ex)
            {
                this.lblY0.ForeColor = Color.Gray;
                this.lblY2.ForeColor = Color.Gray;
                this.cleanState.Text = "异常";
                Console.WriteLine("清洗异常:"+ex.StackTrace);
            }
        }
        

        /**
         * 过滤
         */
        private void button8_Click(object sender, EventArgs e)
        {
            
            this.btnClean.Enabled = false;
            this.btnFilter.Enabled = false;
            this.filterStata.Text = "正常";
            this.filterStata.ForeColor = Color.Black;
            this.lblY1.ForeColor = Color.Black;
            this.lblY2.ForeColor = Color.Black;
            this.lblY0.ForeColor = Color.Gray;
            timeData = 0;
            try
            {
                
                theMachine = GetMachineFromMe.GetMachine;
                SerialPortSetting.PortName = portName;
                if (theMachine.StartConnection())
                {
                    theMachine.AddClients(this);
                    InitData();
                }
                else
                {
                    this.lblY1.ForeColor = Color.Gray;
                    this.lblY2.ForeColor = Color.Gray;
                    this.filterStata.Text = "异常";
                }
                this.btnFilter.Enabled = true;
                this.btnClean.Enabled = true;
            }
            catch (Exception ex)
            {
                this.lblY1.ForeColor = Color.Gray;
                this.lblY2.ForeColor = Color.Gray;
                Console.WriteLine("=====异常" + ex.StackTrace);
                this.filterStata.Text = "异常";
            }
            
        }

        private void InitData()
        {
            table1 = new DataTable();
            DataColumnCollection columns = table1.Columns;

            //先把Y1,Y2打开,D(也就是电导率)读数,其余关
            theMachine.GetControllor.OpenY1();
            System.Threading.Thread.Sleep(1500);
            theMachine.GetControllor.OpenY2();
            System.Threading.Thread.Sleep(1500);
            theMachine.GetControllor.CloseY0();
            if (!theMachine.StartReading())
            {
                this.Close();
            }
        }

        private Byte[] _ReceiveValue;
        private System.Timers.Timer timerStart;

        public void NewReceiveData(int receivedCount, Byte[] receiveValue)
        {
            //try
            //{
            if (!isStop)
            {
                _ReceiveValue = receiveValue;
                double tempData = ChangeData();

                Console.WriteLine("=====time:" + timeData + ",data:" + tempData);
                this.textBox1.Text = tempData.ToString();
                this.textBox2.Text = timeData.ToString();
                 
                if (!_IsRealStart)//如果是过滤,则判断是否过过滤上限
                {
                    JudgeWashUpperLimit(tempData);
                }
            }
        }

        private double ChangeData()
        {
            //转化前6为电导率数
            double returnValue = 0;
            string temp = "";
            int index = 6;
            for (int i = 1; i < _ReceiveValue.Length; i++)//0~5
            {
                if (Convert.ToChar(_ReceiveValue[i]).ToString() == "+")
                {
                    index = i;
                    break;
                }
                temp = temp + Convert.ToChar(_ReceiveValue[i]);
            }
            double.TryParse(temp, out returnValue);
            timeData++;
            return returnValue;
        }
        private void JudgeWashUpperLimit(double tempData)
        {

            if (tempData >= washUpperLimit)//数据超过上限
            {
                if (timerWash >= 20)//时间超过20s
                {
                    if (MessageBox.Show("过滤完成!") == DialogResult.Yes)
                    {
                        closeMachine();
                    }
                }
                else
                {
                    timerWash++;
                }
            }
        }




        /**
         * 测试
         */
        
        private void button2_Click(object sender, EventArgs e)
        {
            if (portName == "")
            {
                MessageBox.Show("请先设置通信口");
            }
            else
            {
                this.btnClean.Enabled = true;
                this.btnFilter.Enabled = true;
                this.groupBox1.ForeColor = Color.Black;
                this.label1.ForeColor = Color.Black;
                this.label2.ForeColor = Color.Black;
                this.textBox1.ForeColor = Color.Black;
                this.textBox2.ForeColor = Color.Black;
                this.btnClean.ForeColor = Color.Black;
                this.btnFilter.ForeColor = Color.Black;
            }
        }

        private void button3_Click(object sender, EventArgs e)
        {
            closeMachine();
            this.groupBox1.ForeColor = Color.Gray;
            this.label1.ForeColor = Color.Gray;
            this.label2.ForeColor = Color.Gray;
            this.textBox1.ForeColor = Color.Gray;
            this.textBox2.ForeColor = Color.Gray;
            this.lblY0.ForeColor = Color.Gray;
            this.btnClean.ForeColor = Color.Gray;
            this.filterStata.ForeColor = Color.Gray;
            this.lblY1.ForeColor = Color.Gray;
            this.btnFilter.ForeColor = Color.Gray;
            this.lblY2.ForeColor = Color.Gray;
            this.cleanState.ForeColor = Color.Gray;
        }

        private void closeMachine()
        {
            if (this.theMachine != null)
            {
                theMachine.StopReading();
                theMachine.GetControllor.CloseY0();
                System.Threading.Thread.Sleep(1500);
                theMachine.GetControllor.CloseY2();
                System.Threading.Thread.Sleep(1500);
                theMachine.GetControllor.CloseY1();
                isStop = true;
            }
        }
        /**
         * 校准按钮
         */
        private void button11_Click(object sender, EventArgs e)
        {
            if (portName != "")
            {
                //this.Close();
                adjustingForm af = new adjustingForm(portName, "AdjustingTest");
                af.Show();
                //af.Activate();
            }
            else
            {
                MessageBox.Show("请先设置端口");
            }
        }

        private void mainForm_FormClosing(object sender, FormClosingEventArgs e)
        {
            closeMachine();
        }
        /**
         * 循环测试
         */
        private void btnLoopTest_Click(object sender, EventArgs e)
        {
            if (portName != "")
            {
                adjustingForm af = new adjustingForm(portName, "LoopTest");
                af.Show();
            }
            else
            {
                MessageBox.Show("请先设置端口");
            }
        }

    }
}