protected virtual void OnThresholdReached(ReloadDataArgs e) { EventHandler <ReloadDataArgs> handler = ReloadData; if (handler != null) { handler(this, e); } }
static void ReloadDataGrid(object sender, MercuryMeter.ReloadDataArgs e) { //console.WriteLine("{0} : {1}", e.addr, e.error); logger.Trace("Устройство {0} : {1}", e.addr, e.error); }
public error_type RefreshData() { InitRs(); //try //{ // if (rs_port.IsOpen == false) // if (rs_port.IsOpen == true) // rs_port.Close(); // rs_port.Open(); //} //catch //{ // return -1; //} //return 0; DateTime_lastTime_connection = DateTime.Now; ReloadDataArgs args = new ReloadDataArgs(); args.addr = address; if (testCon() == 0) { //Console.WriteLine("Тест связи успешен"); if (OpenChannel(Convert.ToByte(level), password[level - 1]) == 0) { //Console.WriteLine("Доступ разрешен"); byte[] btbuf = GiveSerialNumber(); //Console.WriteLine("Серийный номер"); if (btbuf == null) { args.error = error_type.NoConnect; OnThresholdReached(args); error_meter = error_type.NoConnect; return(error_type.NoConnect); } args.error = error_type.none; error_meter = error_type.none; try { int buf = 0; for (int z = 0; z < 4; z++) { buf += (int)((double)btbuf[3 - z] * System.Math.Pow(10, 2 * z)); } if (buf != serial_number) { args.error = error_type.WrongId; error_meter = error_type.WrongId; OnThresholdReached(args); return(error_type.WrongId); } int[] int1 = CallAdditionalParameters(Mercury230.BWIR_param.voltage, 1, Mercury230.AdditionalParameters_query.h16); Console.Write("Вольтаж:"); //voltage = new float[3]; //int i = -1; for (int i = 0; i <= 2; i++) { Phases[i].voltage.Value = Convert.ToSingle(int1[i]) / 100; Console.Write(" {0}-{1} ", i, Phases[i].voltage.Value); } Console.WriteLine(); int1 = CallAdditionalParameters(Mercury230.BWIR_param.current, 1, Mercury230.AdditionalParameters_query.h16); Console.Write("Амперы:"); //current = new float[3]; //i = -1; for (int i = 0; i <= 2; i++) { Phases[i].current.Value = Convert.ToSingle(int1[i]) / 1000; //правка от 07.09.2016 показания тока делим не на 100 а на 1000 Console.Write(" {0}-{1} ", i, Phases[i].current.Value); } Console.WriteLine(); int1 = CallAdditionalParameters(Mercury230.BWIR_param.frequency, 0); frequency = Convert.ToSingle(int1[0]) / 100; Console.WriteLine("Частота:{0}", frequency); int1 = CallAdditionalParameters(Mercury230.BWIR_param.power_factor, 0, Mercury230.AdditionalParameters_query.h16); //power_factor = new float[int1.Length]; //Console.WriteLine("Масссив размером: {0}", int1.Count()); Console.Write("Коэфф мощности:"); for (int i = 1; i <= 3; i++) { // Ответ происходит по виду Сумма - 1ф -2ф -3ф . Потому сдвигаем на один индекс // чтобы получить - 1ф -2ф -3ф Phases[i - 1].power_factor.Value = Convert.ToSingle(int1[i]) / 1000; Console.Write(" {0}-{1} ", i, Phases[i - 1].power_factor.Value); } CommonPower.Value = 0; for (int i = 0; i < 3; i++) { CommonPower.Value += Phases[i].power.Value; } CommonActivePower.Value = 0; for (int i = 0; i < 3; i++) { CommonActivePower.Value += Phases[i].power.Value * Phases[i].power_factor.Value; } Console.WriteLine(); } catch (Exception e) { Console.WriteLine("Ошибка при ответе:{0}", e.Message); args.error = error_type.AnswError; error_meter = error_type.AnswError; return(error_meter); } //DataTime_last_contact = DateTime.Now; OnThresholdReached(args); error_meter = error_type.none; return(error_type.none); } // Console.WriteLine("{0} : отказ", address); args.error = error_type.NoAnsw; error_meter = error_type.NoAnsw; OnThresholdReached(args); return(error_type.NoAnsw); } // Console.WriteLine("Ошибка"); args.error = error_type.NoConnect; error_meter = error_type.NoConnect; OnThresholdReached(args); return(error_type.NoConnect); }