示例#1
0
        public static void Proc()
        {
            Sites sites;

            Sites.Load(out sites, new DbServer());
            DbServer.MarkNotNew();
            //编译公式
            Site   st;
            Sensor ss;
            int    i = 0;

            while (sites.GetAt(i++, out st))
            {
                int j = 0;
                while (st.GetAt(j++, out ss))
                {
                    string err = "";
                    ss.formulaDelegate = FormulaBuilder.TryCompile(ss.formula, out err);
                    if (err != "")
                    {
                        Log.Write("编译公式出错:" + err);
                        continue;
                    }
                }
            }
            //获取本机所有IP
            IPAddress[] ips = Dns.GetHostAddresses(Dns.GetHostName());
            //获取服务器里所有的服务器IP
            Server server = DbServer.ReadServerConfig();
            bool   exists = ips.Any(s => s.ToString() == server.IP);

            if (exists)
            {
                //说明是本机
                if (server.IsEnable)
                {
                    serverThread = new Thread(delegate()
                    {
                        TcpServerComm tsc = new TcpServerComm(server, sites);
                        tsc.Start();
                    });
                    serverThread.Start();
                }
            }


            SitesComm sc = new SitesComm(sites);

            sc.Start();

            while (bWork)
            {
                //Thread.Sleep(10000);
                Thread.Sleep(1000);

                if (DbServer.IsNewConfig())
                {
                    sc.Stop();
                    Sites.Load(out sites, new DbServer());
                    sc.sites = sites;
                    DbServer.MarkNotNew();
                    sc.Start();
                }
            }
            sc.Stop();
        }
示例#2
0
        private void buttonOK_Click(object sender, EventArgs e)
        {
            if (textBoxNum.Text.Length == 0)
            {
                MessageBox.Show("请输入编号!");
                return;
            }
            if (textBoxName.Text.Length == 0)
            {
                MessageBox.Show("请输入名称!");
                return;
            }
            if (comboBoxType.SelectedItem == null)
            {
                MessageBox.Show("请选择类型!");
                return;
            }

            uint   num = Convert.ToUInt32(textBoxNum.Text);
            Sensor ss;

            if (site.Get(num, out ss))
            {
                if (sensor == null || num != sensor.num)
                {
                    MessageBox.Show("编号已存在!");
                    return;
                }
            }
            if (sensor == null)
            {
                sensor = new Sensor(0, "", SENSOR_TYPE.WENDU, decimal.MinValue, decimal.MaxValue);
            }
            try
            {
                sensor.num        = num;
                sensor.name       = textBoxName.Text;
                sensor.type       = ((KeyValuePair <SENSOR_TYPE, string>)comboBoxType.SelectedItem).Key;
                sensor.alarmLow   = textBoxAlarmLow.Text.Length > 0 ? Convert.ToDecimal(textBoxAlarmLow.Text) : decimal.MinValue;
                sensor.alarmHigh  = textBoxAlarmHigh.Text.Length > 0 ? Convert.ToDecimal(textBoxAlarmHigh.Text) : decimal.MaxValue;
                sensor.interval   = Convert.ToInt32(textBoxInterval.Text);
                sensor.sensorDeep = Convert.ToDouble(textBoxSensorDeep.Text);
                sensor.daogui     = comboBoxDaogui.SelectedIndex;

                string ropeDepth = this.txtRopeDepth.Text.Trim();
                string wellDepth = this.txtWellDepth.Text.Trim();
                if (!string.IsNullOrEmpty(ropeDepth))
                {
                    sensor.ropeDepth = Convert.ToDouble(this.txtRopeDepth.Text.Trim());
                }

                if (!string.IsNullOrEmpty(wellDepth))
                {
                    sensor.wellDepth = Convert.ToDouble(this.txtWellDepth.Text.Trim());
                }
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(ex.Message);
                return;
            }

            string err;

            FormulaBuilder.TryCompile(textBoxFormula.Text, out err);
            if (err != "")
            {
                MessageBox.Show("公式编译失败:" + err);
                return;
            }
            sensor.formula = textBoxFormula.Text;

            this.DialogResult = DialogResult.OK;
        }