Exemple #1
0
        //Конструкторы
        /// <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;
        }
Exemple #2
0
        /// <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);
        }
Exemple #3
0
        /// <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);
        }