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(); }
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; }