//Конструкторы /// <summary> /// Конструктор класса /// </summary> /// <param name="Connection">Параметры подключения</param> public Oblik(OblikConnection Connection) { //Заглушкии для событий Dummy dummy = new Dummy(); OnProgress += dummy.DummyEventHandler; OnCmdStatusChange += dummy.DummyEventHandler; OnSegStatusChange += dummy.DummyEventHandler; OnIOStatusChange += dummy.DummyEventHandler; _CalcUnits = new CalcUnitsStruct(); _ConParams.AccessLevel = (Connection.AccessLevel != null) ? Connection.AccessLevel : AccessLevel.Energo; _ConParams.Address = (Connection.Address != null) ? Connection.Address : 0x01; _ConParams.Baudrate = (Connection.Baudrate != null) ? Connection.Baudrate : 9600; _ConParams.Password = Connection.Password; _ConParams.Port = (Connection.Port != null) ? Connection.Port : 1; _ConParams.Repeats = (Connection.Repeats != null) ? Connection.Repeats : 2; _ConParams.Timeout = (Connection.Timeout != null) ? Connection.Timeout : 1000; }
/// <summary> /// Преобразование структуры параметров вычислений в массив байт /// </summary> /// <param name="CalcUnits"></param> /// <returns></returns> private byte[] CalcUnitsToByte(CalcUnitsStruct CalcUnits) { byte[] res = new byte[57]; int index = 0; FloatToByte(CalcUnits.Ener_fct).CopyTo(res, index); index += sizeof(float); FloatToByte(CalcUnits.Powr_fct).CopyTo(res, index); index += sizeof(float); FloatToByte(CalcUnits.Curr_fct).CopyTo(res, index); index += sizeof(float); FloatToByte(CalcUnits.Volt_fct).CopyTo(res, index); index += sizeof(float); //reserved1 for (int i = 0; i <= 3; i++) { res[index] = 0; index++; } res[index] = (byte)(CalcUnits.Ener_unit); index++; res[index] = (byte)(CalcUnits.Powr_unit); index++; res[index] = (byte)(CalcUnits.Curr_unit); index++; res[index] = (byte)(CalcUnits.Volt_unit); index++; FloatToByte(CalcUnits.Curr_1w).CopyTo(res, index); index += sizeof(float); FloatToByte(CalcUnits.Curr_2w).CopyTo(res, index); index += sizeof(float); FloatToByte(CalcUnits.Volt_1w).CopyTo(res, index); index += sizeof(float); FloatToByte(CalcUnits.Volt_2w).CopyTo(res, index); index += sizeof(float); res[index] = CalcUnits.Save_const; index++; FloatToByte(CalcUnits.Pwr_lim_A).CopyTo(res, index); index += sizeof(float); FloatToByte(CalcUnits.Pwr_lim_B).CopyTo(res, index); index += sizeof(float); FloatToByte(CalcUnits.Pwr_lim_C).CopyTo(res, index); index += sizeof(float); FloatToByte(CalcUnits.Pwr_lim_D).CopyTo(res, index); return(res); }
/// <summary> /// Преобразование массива байт в структуру параметров вычислений /// </summary> /// <param name="array"></param> /// <returns></returns> private CalcUnitsStruct ToCalcUnits(byte[] array) { CalcUnitsStruct res = new CalcUnitsStruct(); int index = 0; res.Ener_fct = ToFloat(ArrayPart(array, index, sizeof(float))); index += sizeof(float); res.Powr_fct = ToFloat(ArrayPart(array, index, sizeof(float))); index += sizeof(float); res.Curr_fct = ToFloat(ArrayPart(array, index, sizeof(float))); index += sizeof(float); res.Volt_fct = ToFloat(ArrayPart(array, index, sizeof(float))); index += sizeof(float); //Reserved1 index += sizeof(float); res.Ener_unit = (sbyte)array[index]; index++; res.Powr_unit = (sbyte)array[index]; index++; res.Curr_unit = (sbyte)array[index]; index++; res.Volt_unit = (sbyte)array[index]; index++; res.Curr_1w = ToFloat(ArrayPart(array, index, sizeof(float))); index += sizeof(float); res.Curr_2w = ToFloat(ArrayPart(array, index, sizeof(float))); index += sizeof(float); res.Volt_1w = ToFloat(ArrayPart(array, index, sizeof(float))); index += sizeof(float); res.Volt_2w = ToFloat(ArrayPart(array, index, sizeof(float))); index += sizeof(float); res.Save_const = array[index]; index++; res.Pwr_lim_A = ToFloat(ArrayPart(array, index, sizeof(float))); index += sizeof(float); res.Pwr_lim_B = ToFloat(ArrayPart(array, index, sizeof(float))); index += sizeof(float); res.Pwr_lim_C = ToFloat(ArrayPart(array, index, sizeof(float))); index += sizeof(float); res.Pwr_lim_D = ToFloat(ArrayPart(array, index, sizeof(float))); return(res); }