private int Read_SQL_data_from_meter() { try { string sqlselect = String.Format("select * from dumpmeters where addr={0} and id={1}", comboBox_addressMeter.Text, comboBox_serialNumber.Text); DataTable dt = sqlhandler_.ReadSqlTable(sqlselect); if (dt.Rows.Count > 0) { string objSerStr = dt.Rows[0]["dump"].ToString(); DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Mercury230_DatabaseSignals)); Mercury230_DatabaseSignals meterLocal = (Mercury230_DatabaseSignals)serializer.ReadObject(new System.IO.MemoryStream(Encoding.ASCII.GetBytes(objSerStr))); WriteParametersFromMeter(meterLocal); } else { MessageBox.Show("Будут взяты данные по умолчанию\n\r", "Нет информации в БД", MessageBoxButtons.OK, MessageBoxIcon.Error); return(0); } return(1); } catch (Exception exc) { MessageBox.Show(exc.Message, "Ошибка при чтении БД", MessageBoxButtons.OK, MessageBoxIcon.Error); return(-1); } }
void WriteParametersFromMeter(Mercury230_DatabaseSignals meter) { numericUpDown_cur_hist1.Value = Convert.ToDecimal(meter.Phases[0].current.Hist); numericUpDown_cur_hist2.Value = Convert.ToDecimal(meter.Phases[1].current.Hist); numericUpDown_cur_hist3.Value = Convert.ToDecimal(meter.Phases[2].current.Hist); numericUpDown_cur_up1.Value = Convert.ToDecimal(meter.Phases[0].current.MaxValue); numericUpDown_cur_up2.Value = Convert.ToDecimal(meter.Phases[1].current.MaxValue); numericUpDown_cur_up3.Value = Convert.ToDecimal(meter.Phases[2].current.MaxValue); numericUpDown_voltUp1.Value = Convert.ToDecimal(meter.Phases[0].voltage.MaxValue); numericUpDown_voltUp2.Value = Convert.ToDecimal(meter.Phases[1].voltage.MaxValue); numericUpDown_voltUp3.Value = Convert.ToDecimal(meter.Phases[2].voltage.MaxValue); numericUpDown_voltDown1.Value = Convert.ToDecimal(meter.Phases[0].voltage.MinValue); numericUpDown_voltDown2.Value = Convert.ToDecimal(meter.Phases[1].voltage.MinValue); numericUpDown_voltDown3.Value = Convert.ToDecimal(meter.Phases[2].voltage.MinValue); numericUpDown_voltHist1.Value = Convert.ToDecimal(meter.Phases[0].voltage.Hist); numericUpDown_voltHist2.Value = Convert.ToDecimal(meter.Phases[1].voltage.Hist); numericUpDown_voltHist3.Value = Convert.ToDecimal(meter.Phases[2].voltage.Hist); numericUpDown_power_hist1.Value = Convert.ToDecimal(meter.CommonActivePower.Hist / 1000); numericUpDown_power_up1.Value = Convert.ToDecimal(meter.CommonActivePower.MaxValue / 1000); }
void WriteMeterFromParameters(Mercury230_DatabaseSignals meter) { meter.Phases[0].current.Hist = Convert.ToSingle(numericUpDown_cur_hist1.Value); meter.Phases[1].current.Hist = Convert.ToSingle(numericUpDown_cur_hist2.Value); meter.Phases[2].current.Hist = Convert.ToSingle(numericUpDown_cur_hist3.Value); meter.Phases[0].current.MaxValue = Convert.ToSingle(numericUpDown_cur_up1.Value); meter.Phases[1].current.MaxValue = Convert.ToSingle(numericUpDown_cur_up2.Value); meter.Phases[2].current.MaxValue = Convert.ToSingle(numericUpDown_cur_up3.Value); meter.Phases[0].voltage.MaxValue = Convert.ToSingle(numericUpDown_voltUp1.Value); meter.Phases[1].voltage.MaxValue = Convert.ToSingle(numericUpDown_voltUp2.Value); meter.Phases[2].voltage.MaxValue = Convert.ToSingle(numericUpDown_voltUp3.Value); meter.Phases[0].voltage.MinValue = Convert.ToSingle(numericUpDown_voltDown1.Value); meter.Phases[1].voltage.MinValue = Convert.ToSingle(numericUpDown_voltDown2.Value); meter.Phases[2].voltage.MinValue = Convert.ToSingle(numericUpDown_voltDown3.Value); meter.Phases[0].voltage.Hist = Convert.ToSingle(numericUpDown_voltHist1.Value); meter.Phases[1].voltage.Hist = Convert.ToSingle(numericUpDown_voltHist2.Value); meter.Phases[2].voltage.Hist = Convert.ToSingle(numericUpDown_voltHist3.Value); meter.CommonActivePower.Hist = Convert.ToSingle(numericUpDown_power_hist1.Value) * 1000; meter.CommonActivePower.MaxValue = Convert.ToSingle(numericUpDown_power_up1.Value) * 1000; }
static void RefreshMetersLimits() { refreshTimer.Enabled = false; if (Sqlhandler_ == null) { return; } try { var sqlhandlerlocal_ = new SQLhandler(Sqlhandler_.database, Sqlhandler_.DataSource, Sqlhandler_.UserId, Sqlhandler_.Password); //sqlhandler2_.myConnec. DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Mercury230_DatabaseSignals)); foreach (Mercury230_DatabaseSignals meter in Meter230_arr) { string sqlselect = String.Format("select * from dumpmeters where addr={0} and id={1}", meter.address, meter.serial_number); DataTable dt = sqlhandlerlocal_.ReadSqlTable(sqlselect); if (dt.Rows.Count > 0) { string objSerStr = dt.Rows[0]["dump"].ToString(); try { Mercury230_DatabaseSignals meterLocal = (Mercury230_DatabaseSignals)serializer.ReadObject(new System.IO.MemoryStream(Encoding.ASCII.GetBytes(objSerStr))); meter.Phases[0].current.CopyLimits(meterLocal.Phases[0].current); meter.Phases[1].current.CopyLimits(meterLocal.Phases[1].current); meter.Phases[2].current.CopyLimits(meterLocal.Phases[2].current); meter.Phases[0].voltage.CopyLimits(meterLocal.Phases[0].voltage); meter.Phases[1].voltage.CopyLimits(meterLocal.Phases[1].voltage); meter.Phases[2].voltage.CopyLimits(meterLocal.Phases[2].voltage); meter.Phases[0].power.CopyLimits(meterLocal.Phases[0].power); meter.Phases[1].power.CopyLimits(meterLocal.Phases[1].power); meter.Phases[2].power.CopyLimits(meterLocal.Phases[2].power); meter.CommonActivePower.CopyLimits(meterLocal.CommonActivePower); meter.CommonPower.CopyLimits(meterLocal.CommonPower); } catch (Exception exc) { Console.WriteLine("Ошибка чтения БД : {0}", exc.Message); } } } //else //{ // MessageBox.Show("Будут взяты данные по умолчанию\n\r", "Нет информации в БД", MessageBoxButtons.OK, MessageBoxIcon.Error); //} } catch (Exception exc) { logger.Error("Ошибка при чтении БД " + exc.Message); return; } logger.Debug("-----------Лимиты счетчиков обновлены--------------"); }
public DataTable GiveSQLrecordingPeriod(Mercury230_DatabaseSignals device, string table, Mercury230.peroidQuery period, byte month, byte tariff) { ConnectionState firstSTate = ConnectionState.Open; DateTime dt = DateTime.Now; try { if (myConnec.State != ConnectionState.Open) { myConnec.Open(); firstSTate = ConnectionState.Closed; } DateTime dt_beginday = new DateTime(); DateTime dt_ending = new DateTime(); if (month == 0) { dt_beginday = new DateTime(DateTime.Now.Year, DateTime.Now.Month, DateTime.Now.Day, 0, 0, 0); dt = DateTime.Now.AddDays(1); dt_ending = new DateTime(dt.Year, dt.Month, dt.Day, 0, 0, 0); } else { dt_beginday = (month > dt.Month) ? new DateTime(dt.AddYears(-1).Year, month, 1, 0, 0, 0) : new DateTime(dt.Year, month, 1, 0, 0, 0); dt_ending = (month > dt.Month) ? new DateTime(dt.Year, 1, 1, 0, 0, 0) : new DateTime(dt.Year, dt.Month, dt.Day, 0, 0, 0); } string CommandText = "SELECT * FROM " + table + " WHERE `addr` =" + device.address.ToString() + " AND `oleDT` >= " + dt_beginday.ToOADate() + " AND `oleDT` <= " + dt_ending.ToOADate() + " AND `period` = " + (int)period + " AND `month` = " + month + " AND `tariff` = " + tariff; MySqlCommand myCommand = new MySqlCommand(CommandText, myConnec); DataTable dtable = new DataTable(); MySqlDataReader dr = myCommand.ExecuteReader(); dtable.Load(dr); if (firstSTate == ConnectionState.Closed) { myConnec.Close(); } return(dtable); } catch (Exception e) { Console.WriteLine("Ошибка БД {0}", e.Message); return(null); } }
private int Refresh_data_meters() { // Console.WriteLine("Пуск события опроса"); //Action<MetersParameterDataGridBoxCell, MetersParameter> ParAssignment = (ParBoxCell, Par) => //{ // ParBoxCell.Parametr.Hist = Par.Hist; // ParBoxCell.Parametr.MinValue = Par.MinValue; // ParBoxCell.Parametr.MaxValue = Par.MaxValue; // //ParBoxCell.Parametr.RefreshData(); //}; TcpClient newClient = new TcpClient(TCP_Host_s, TCP_port_i); try { if (!newClient.Connected) { Console.WriteLine("Соединение..."); // пошлём на установку соединения if (newClient.Client != null) { newClient.Client.Close(); } newClient = new TcpClient(TCP_Host_s, TCP_port_i); Console.WriteLine("Успешно"); } //Console.WriteLine(DateTime.Now.ToString() + "... Обновление данных"); newClient.ReceiveTimeout = 1500; newClient.SendTimeout = 800; // порождает исключение, если // при соединении возникают проблемы NetworkStream tcpStream = newClient.GetStream(); //string str_badformat = "<Error>badformat</Error>"; //string str_null = "<Error>null</Error>"; DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Mercury230_DatabaseSignals)); XmlDocument xmlquery = new XmlDocument(); //int count_normalMeter = 0; byte[] sendBytes = Encoding.UTF8.GetBytes("<query><type>readmeter</type><model>Merc230</model><add_meter>" + comboBox_addressMeter.Text + "</add_meter><id_meter>" + comboBox_serialNumber.Text + "</id_meter></query>"); tcpStream.Write(sendBytes, 0, sendBytes.Length); byte[] bytes = new byte[newClient.ReceiveBufferSize]; int bytesRead = tcpStream.Read(bytes, 0, newClient.ReceiveBufferSize); // Строка, содержащая ответ от сервера string answer = Encoding.ASCII.GetString(bytes, 0, bytesRead); try { xmlquery.LoadXml(answer); } catch (XmlException exc) { MessageBox.Show("Ошибочный ответ сервера\n\r" + exc.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error); System.Threading.Thread.Sleep(50); return(-1); //continue; } XmlNodeList nodeList = xmlquery.SelectNodes("Error"); if (nodeList.Count == 0) { nodeList = xmlquery.SelectNodes("answer/meter"); if (nodeList.Count == 1) { string objSerStr = nodeList[0].InnerText; Mercury230_DatabaseSignals meterLocal = (Mercury230_DatabaseSignals)serializer.ReadObject(new System.IO.MemoryStream(Encoding.ASCII.GetBytes(objSerStr))); //elem.DateTime_lastTime_connection = meterLocal.DateTime_lastTime_connection; //elem.error_meter = meterLocal.error_meter; //if (elem.error_meter == MeterDevice.error_type.none) // count_normalMeter++; WriteParametersFromMeter(meterLocal); //ParAssignment(elem.volt_phase1_dgvCell, meterLocal.Phases[0].voltage); //ParAssignment(elem.volt_phase2_dgvCell, meterLocal.Phases[1].voltage); //ParAssignment(elem.volt_phase3_dgvCell, meterLocal.Phases[2].voltage); //ParAssignment(elem.cur_phase1_dgvCell, meterLocal.Phases[0].current); //ParAssignment(elem.cur_phase2_dgvCell, meterLocal.Phases[1].current); //ParAssignment(elem.cur_phase3_dgvCell, meterLocal.Phases[2].current); //ParAssignment(elem.power_dgvCell, meterLocal.CommonPower); } } } //RefreshTimer.Interval = 3000; //Console.WriteLine("Нормально опрошены: {0}", count_normalMeter); catch (SocketException ex) { MessageBox.Show("Ошибка\n\r" + ex.Message, "", MessageBoxButtons.OK, MessageBoxIcon.Error); return(-10); //newClient.Close(); //Console.WriteLine("Перезапуск соединения через {0} сек", this.intervalRestartConnection / 1000); //RefreshTimer.Interval = this.intervalRestartConnection; } return(1); }
private int WriteDumpToSQL() { try { byte addr = byte.Parse(comboBox_addressMeter.Text); int id = Int32.Parse(comboBox_serialNumber.Text); string objSerStr; DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Mercury230_DatabaseSignals)); byte[][] bytemas = new byte[3][]; Mercury230_DatabaseSignals meterlocal = new Mercury230_DatabaseSignals(new SerialPort(), addr, id, bytemas); WriteMeterFromParameters(meterlocal); using (var memorystream = new System.IO.MemoryStream()) { serializer.WriteObject(memorystream, meterlocal); objSerStr = Encoding.ASCII.GetString(memorystream.ToArray()); } objSerStr = MySqlHelper.EscapeString(objSerStr); StringBuilder strb = new StringBuilder(); string sqlselect = String.Format("select * from dumpmeters where addr={0} and id={1}", addr, id); DataTable dt = sqlhandler_.ReadSqlTable(sqlselect); if (dt.Rows.Count == 0) { // insert into strb.AppendFormat("INSERT INTO dumpmeters (addr,id,dump) VALUES({0},{1},'{2}')", addr, id, objSerStr); sqlhandler_.SendData(strb.ToString()); MessageBox.Show("Данные записаны в БД\n\r", "Успешно", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { // update strb.AppendFormat("UPDATE dumpmeters SET dump='{0}' WHERE addr={1} and id={2}", objSerStr, addr, id); sqlhandler_.SendData(strb.ToString()); MessageBox.Show("Данные изменены\n\r", "Успешно", MessageBoxButtons.OK, MessageBoxIcon.Information); return(0); } // Пока посылку обновления не исспользуем // можно добавить потом //if (sendRefreshSignal() > 0) //{ // MessageBox.Show("Успешно", "Посылка обновления данных", MessageBoxButtons.OK, MessageBoxIcon.Information); //} return(1); } catch (Exception exc) { MessageBox.Show(exc.Message, "Ошибка при работе с БД", MessageBoxButtons.OK, MessageBoxIcon.Error); return(-1); } }
/// <summary> /// Чтение конфигурационного файла /// </summary> static int readXMLdocument() { SerialPort rs_port = new SerialPort(); XmlDocument xmlDocument = new XmlDocument(); try { xmlDocument.Load("Meter_conf.xml"); //meterTable = new DataTable("Meters"); //meterTable.Columns.Add("Тип", typeof(string)); //meterTable.Columns.Add("Адрес", typeof(string)); //meterTable.Columns.Add("Статус", typeof(string)); // rs_port = new System.IO.Ports.SerialPort(); XmlNodeList devices = xmlDocument.SelectNodes("/Meters/DataBaseSQL"); //Sqlhandler_ = new SQLhandler(devices[0].Attributes["Database"].Value, devices[0].Attributes["DataSource"].Value, devices[0].Attributes["UserId"].Value, devices[0].Attributes["Password"].Value); if (devices.Count > 0) { Sqlhandler_ = new SQLhandler(devices[0].Attributes["Database"].Value, devices[0].Attributes["DataSource"].Value, devices[0].Attributes["UserId"].Value, devices[0].Attributes["Password"].Value); progSettings.tblName_meter206 = devices[0].Attributes["tbl_206"].Value; progSettings.tblName_meter230 = devices[0].Attributes["tbl_230"].Value; } devices = xmlDocument.SelectNodes("/Meters/autostart"); if (devices.Count > 0) { Console.WriteLine("Чтение параметров автозапуска"); string com = devices[0].Attributes["defaultCOMport"].Value; progSettings.TCPport = Convert.ToInt32(devices[0].Attributes["TCPport"].Value); progSettings.timeoutSerial = Convert.ToInt32(devices[0].Attributes["timeout"].Value); Int32 baudrate = Convert.ToInt32(devices[0].Attributes["baudRate"].Value); System.IO.Ports.Parity parity = (Parity)Enum.Parse(typeof(Parity), devices[0].Attributes["parity"].Value, true); System.IO.Ports.StopBits stopbits = (StopBits)Enum.Parse(typeof(StopBits), devices[0].Attributes["stopBits"].Value, true); int dataBits = Convert.ToInt32(devices[0].Attributes["dataBits"].Value); rs_port = new System.IO.Ports.SerialPort(com, baudrate, parity, dataBits, stopbits); Console.WriteLine("Работа по последовательному порту " + com + "..."); // progSettings.start = devices[0].Attributes["serverStart"].Value == "yes"; //this.WindowState = WindowState.Normal; } int i = xmlDocument.SelectNodes("//meter[@type = 'Merc234']").Count; Meter230_arr = new Mercury230_DatabaseSignals[i]; i = xmlDocument.SelectNodes("//meter[@type = 'Merc206']").Count; Meter206_arr = new Mercury206_Database[i]; i = -1; foreach (XmlNode device in xmlDocument.SelectNodes("//meter[@type = 'Merc234']")) { i++; //meterTable.Rows.Add("Меркурий 234", device.Attributes["addr"].Value, ""); byte addr = Convert.ToByte(device.Attributes["addr"].Value); string[] str_pasw_buf = device.Attributes["password_lvl1"].Value.Split(','); byte[][] byte_pass = new byte[2][]; byte_pass[0] = new byte[str_pasw_buf.Length]; for (int j = 0; j < str_pasw_buf.Length; j++) { byte_pass[0][j] = Convert.ToByte(str_pasw_buf[j]); } str_pasw_buf = device.Attributes["password_lvl2"].Value.Split(','); byte_pass[1] = new byte[str_pasw_buf.Length]; for (int j = 0; j < str_pasw_buf.Length; j++) { byte_pass[1][j] = Convert.ToByte(str_pasw_buf[j]); } int serialnumber = Convert.ToInt32(device.Attributes["id"].Value); Meter230_arr[i] = new Mercury230_DatabaseSignals(rs_port, addr, serialnumber, byte_pass, progSettings.timeoutSerial); Meter230_arr[i].ReloadData += ReloadDataGrid; // Meter230_arr[i].DataTime_nextPoint_recordSQL = DateTime.FromOADate(Sqlhandler_.NextTimetoSQLwrite(Meter230_arr[i], "meter230")); } i = -1; foreach (XmlNode device in xmlDocument.SelectNodes("//meter[@type = 'Merc206']")) { i++; uint addr = Convert.ToUInt32(device.Attributes["addr"].Value); int serialnumber = Convert.ToInt32(device.Attributes["id"].Value); Meter206_arr[i] = new Mercury206_Database(rs_port, addr, serialnumber, progSettings.timeoutSerial); // Meter206_arr[i].ReloadData += ReloadDataGrid; // Meter206_arr[i].DataTime_nextPoint_recordSQL = DateTime.FromOADate(Sqlhandler_.NextTimetoSQLwrite(Meter206_arr[i], "meter206", 0)); } // XmlDocument xmlDocument = new XmlDocument(); // xmlDocument.Load("Meter_conf.xml"); // dataGrid_meter.ItemsSource = "Meters"; Console.WriteLine("Файл считан..."); return(0); } catch (Exception e) { logger.Error("Ошибка загрузки настроек: {0}", e.Message); return(-1); //MessageBoxResult ti = MessageBox.Show(e.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); // ti = MessageBox.Show(e.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); // MessageBoxResult ti = MessageBox.Show("Проблема при старте сервера", "Ошибка сервера", MessageBoxButton.OK, MessageBoxImage.Error); //if (MessageBox.Show(e.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error) == MessageBoxResult.OK) //{ // return; //} } }
public void Refresh_data_meters() { // Console.WriteLine("Пуск события опроса"); Action <MetersParameterDataGridBoxCell, MetersParameter> ParAssignment = (ParBoxCell, Par) => { ParBoxCell.Parametr.Hist = Par.Hist; ParBoxCell.Parametr.ScalingFactor = Par.ScalingFactor; ParBoxCell.Parametr.MinValue = Par.MinValue; ParBoxCell.Parametr.MaxValue = Par.MaxValue; ParBoxCell.Parametr.Value = Par.Value; //ParBoxCell.Parametr.RefreshData(); }; RefreshTimer.Enabled = false; try { if (!newClient.Connected) { Console.WriteLine("Соединение..."); // пошлём на установку соединения if (newClient.Client != null) { newClient.Client.Close(); } newClient = new TcpClient(Host, Port); Console.WriteLine("Успешно"); } Console.WriteLine(DateTime.Now.ToString() + "... Обновление данных"); //newClient.ReceiveTimeout // порождает исключение, если // при соединении возникают проблемы NetworkStream tcpStream = newClient.GetStream(); tcpStream.ReadTimeout = 200; //string str_badformat = "<Error>badformat</Error>"; //string str_null = "<Error>null</Error>"; DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(Mercury230_DatabaseSignals)); XmlDocument xmlquery = new XmlDocument(); int count_normalMeter = 0; foreach (ElectricMeterWinForm_forTable elem in meters) { byte[] sendBytes = Encoding.UTF8.GetBytes("<query><type>readmeter</type><model>Merc230</model><add_meter>" + elem.meter_address + "</add_meter><id_meter>" + elem.meter_id + "</id_meter></query>"); if (tcpStream.DataAvailable) { var buffer = new byte[4096]; tcpStream.Read(buffer, 0, buffer.Length); } tcpStream.Write(sendBytes, 0, sendBytes.Length); byte[] bytes = new byte[newClient.ReceiveBufferSize]; int bytesRead = tcpStream.Read(bytes, 0, newClient.ReceiveBufferSize); // Строка, содержащая ответ от сервера string answer = Encoding.ASCII.GetString(bytes, 0, bytesRead); try { xmlquery.LoadXml(answer); } catch (XmlException) { Console.WriteLine("Ошибочный ответ сервера"); System.Threading.Thread.Sleep(50); continue; } XmlNodeList nodeList = xmlquery.SelectNodes("Error"); if (nodeList.Count == 0) { nodeList = xmlquery.SelectNodes("answer/meter"); if (nodeList.Count == 1) { string objSerStr = nodeList[0].InnerText; Mercury230_DatabaseSignals meterLocal = (Mercury230_DatabaseSignals)serializer.ReadObject(new System.IO.MemoryStream(Encoding.ASCII.GetBytes(objSerStr))); elem.DateTime_lastTime_connection = meterLocal.DateTime_lastTime_connection; elem.error_meter = meterLocal.error_meter; if (elem.error_meter == MeterDevice.error_type.none) { count_normalMeter++; } if (meterLocal.serial_number.ToString() == elem.meter_id.ToString()) { ParAssignment(elem.volt_phase1_dgvCell, meterLocal.Phases[0].voltage); ParAssignment(elem.volt_phase2_dgvCell, meterLocal.Phases[1].voltage); ParAssignment(elem.volt_phase3_dgvCell, meterLocal.Phases[2].voltage); ParAssignment(elem.cur_phase1_dgvCell, meterLocal.Phases[0].current); ParAssignment(elem.cur_phase2_dgvCell, meterLocal.Phases[1].current); ParAssignment(elem.cur_phase3_dgvCell, meterLocal.Phases[2].current); ParAssignment(elem.power_dgvCell, meterLocal.CommonActivePower); } } } //if (give_arg("add", answer) == elem.meter_address.ToString()) //{ // string par; // // ток // par = give_arg("cur", answer); // elem.cur_phase1 = String_To_Float(give_elems("1", par)); // elem.cur_phase2 = String_To_Float(give_elems("2", par)); // elem.cur_phase3 = String_To_Float(give_elems("3", par)); // par = give_arg("volt", answer); // elem.voltage_phase1 = String_To_Float(give_elems("1", par)); // elem.voltage_phase2 = String_To_Float(give_elems("2", par)); // elem.voltage_phase3 = String_To_Float(give_elems("3", par)); //CommonPower = (cur1 * volt1 + cur2 * volt2 + cur3 * volt3) / 1000; // Время последнего ответа от счетчика... //par = give_arg("lastCon", answer).Replace('$', ':'); //LastCon = DateTime.ParseExact(par, "dd.MM.yyyy HH:mm:ss", CultureInfo.InvariantCulture); //TimeSpan ts = DateTime.Now - LastCon; //lostDev = (ts > new TimeSpan(0, 0, timeout)); //PowerAlarm = CommonPower >= PowerLimit; //CommonAlarm = lostDev || Cur1_Alarm || Cur2_Alarm || Cur3_Alarm || Volt1_Alarm || Volt2_Alarm || Volt3_Alarm || PowerAlarm; } RefreshTimer.Interval = 3000; Console.WriteLine("Нормально опрошены: {0}", count_normalMeter); } catch (SocketException ex) { Console.WriteLine("Ошибка"); Console.WriteLine(ex.Message); //newClient.Close(); Console.WriteLine("Перезапуск соединения через {0} сек", this.intervalRestartConnection / 1000); RefreshTimer.Interval = this.intervalRestartConnection; } finally { RefreshTimer.Enabled = true; } }
public void writeAccumulEnergy(Mercury230.accumulEnergy energystruct, int tarif, Mercury230.peroidQuery period, Mercury230_DatabaseSignals device, byte month) { DateTime datetime = new DateTime(); if (month == 0) { datetime = DateTime.Now; } else { datetime = (month > DateTime.Now.Month) ? new DateTime(DateTime.Now.AddYears(-1).Year, month, 1, 0, 0, 0) : new DateTime(DateTime.Now.Year, month, 1, 0, 0, 0); } string CommandText = "INSERT INTO meter230 ( `addr`, `energy_active_in`, `energy_reactive_in`, `energy_reactive_out`, `oleDT` , `tariff`, `period` , `id`, `month`) VALUES (" + device.address.ToString() + ", " + energystruct.active_energy_in + ", " + energystruct.reactive_energy_in + ", " + energystruct.reactive_energy_out + ", " + datetime.ToOADate() + ", " + tarif.ToString() + ", '" + Convert.ToString((int)period) + "', " + device.serial_number.ToString() + " , " + month + " )"; SendData(CommandText); }