예제 #1
0
파일: Packet.cs 프로젝트: slawer/asy
        /// <summary>
        /// Создать пакет-ответ на запров от АСУ Буровой "Уралмаш"
        /// </summary>
        /// <returns></returns>
        public AsyPacket TranslateToAnswer(Single[] data)
        {
            AsyPacket p = new AsyPacket();

            p._codeButton = _codeButton;
            p._codePacket = AsyAnswerCodePacket;

            foreach (var item in data)
            {
                p._data.Add(item);
            }

            return(p);
        }
예제 #2
0
파일: Packet.cs 프로젝트: slawer/asy
        /// <summary>
        /// Преобразует строковое представление пакета в его эквивалент типа Packet.
        /// Строка пакета которая отправляет в АСУ, ответ на запрос данных от АСУ.
        /// </summary>
        /// <param name="text">Строка, содержащая преобразуемый пакет.</param>
        /// <returns>Экземпляр класса типа Packet, эквивалентый пакету, содержащемуся в строке text.</returns>
        private static AsyPacket ParseAnswerToAsy(string text)
        {
            byte _codePacket = GetCodePacket(text);
            byte _codeButton = GetCodeButton(text);

            float[] _values = new float[50];
            for (int i = 0; i < _values.Length; i++)
            {
                _values[i] = GetParameterFromPacket(text, i);
            }

            AsyPacket packet = new AsyPacket();

            packet._codePacket = _codePacket;
            packet._codeButton = _codeButton;

            foreach (var value in _values)
            {
                packet._data.Add(value);
            }

            return(packet);
        }
예제 #3
0
        /// <summary>
        /// Передать данные АСУ
        /// </summary>
        /// <param name="_packet">Пакет запроса от АСУ</param>
        protected void AnswerAsy(AsyPacket _packet)
        {
            try
            {
                Parameter[] parameters = commutator.Parameters;
                if (parameters != null)
                {
                    List <float> data = new List <float>();
                    foreach (Parameter parameter in parameters)
                    {
                        if (parameter != null)
                        {
                            PDescription channel = parameter.Channel;
                            if (channel != null)
                            {
                                if (channel.Number > -1)
                                {
                                    data.Add(parameter.CurrentValue);
                                }
                            }
                        }
                    }

                    if (data.Count >= 16)
                    {
                        AsyPacket answer_packet = _packet.TranslateToAnswer(data.ToArray());
                        if (answer_packet != null)
                        {
                            string spac = answer_packet.ToString();
                            server.Send(spac);
                        }
                    }
                }
            }
            catch { }
        }
예제 #4
0
파일: Packet.cs 프로젝트: slawer/asy
        /// <summary>
        /// Преобразует строковое представление пакета в его эквивалент типа Packet.
        /// Строка пакета которую отправляет АСУ, запрос на передачу данных.
        /// </summary>
        /// <param name="text">Строка, содержащая преобразуемый пакет.</param>
        /// <returns>Экземпляр класса типа Packet, эквивалентый пакету, содержащемуся в строке text.</returns>
        private static AsyPacket ParseQuestionFromAsy(string text)
        {
            byte _codePacket = GetCodePacket(text);
            byte _codeButton = GetCodeButton(text);

            float[] _values = new float[8];
            for (int i = 0; i < _values.Length; i++)
            {
                _values[i] = GetParameterFromPacket(text, i);
            }

            AsyPacket packet = new AsyPacket();

            packet._codePacket = _codePacket;
            packet._codeButton = _codeButton;

            foreach (var value in _values)
            {
                packet._data.Add(value);
            }

            return packet;
        }
예제 #5
0
파일: Packet.cs 프로젝트: slawer/asy
        /// <summary>
        /// Создать пакет-ответ на запров от АСУ Буровой "Уралмаш"
        /// </summary>
        /// <returns></returns>
        public AsyPacket TranslateToAnswer(Single[] data)
        {
            AsyPacket p = new AsyPacket();

            p._codeButton = _codeButton;
            p._codePacket = AsyAnswerCodePacket;

            foreach (var item in data)
            {
                p._data.Add(item);
            }

            return p;
        }
예제 #6
0
        /// <summary>
        /// Получен пакет от клиентс
        /// </summary>
        /// <param name="packet">Полученный пакет</param>
        public void server_OnPacket(string packet)
        {
            try
            {
                AsyPacket _packet = AsyPacket.Parse(packet);
                if (_packet != null)
                {
                    if (_packet.Data.Length == 7)
                    {
                        Parameter.SetCurrentValue(commutator.Speed_1, _packet.Data[0]);
                        Parameter.SetCurrentValue(commutator.Speed_2, _packet.Data[1]);

                        Parameter.SetCurrentValue(commutator.Speed_rotor, _packet.Data[2]);
                        Parameter.SetCurrentValue(commutator.Torque_rotor, _packet.Data[3]);

                        Parameter.SetCurrentValue(commutator.Wedges_state, _packet.Data[4]);

                        Parameter.SetCurrentValue(commutator.Diameter_1, _packet.Data[5]);
                        Parameter.SetCurrentValue(commutator.Diameter_2, _packet.Data[6]);
                    }
                    else
                    if (_packet.Data.Length >= 8)
                    {
                        Parameter.SetCurrentValue(commutator.Speed_1, _packet.Data[0]);
                        Parameter.SetCurrentValue(commutator.Speed_2, _packet.Data[1]);

                        Parameter.SetCurrentValue(commutator.Speed_rotor, _packet.Data[2]);
                        Parameter.SetCurrentValue(commutator.Torque_rotor, _packet.Data[3]);

                        Parameter.SetCurrentValue(commutator.Wedges_state, _packet.Data[4]);

                        Parameter.SetCurrentValue(commutator.Diameter_1, _packet.Data[5]);
                        Parameter.SetCurrentValue(commutator.Diameter_2, _packet.Data[6]);

                        Parameter.SetCurrentValue(commutator.Force, _packet.Data[7]);
                    }

                    code_button = CodeButtonAsy.Default;
                    switch (_packet.CodeButton)
                    {
                    case 0x00:

                        code_button = CodeButtonAsy.Default;
                        Parameter.SetCurrentValue(_app.Commutator.CodeButton, 0x00);

                        break;

                    case 0x1:

                        code_button = CodeButtonAsy.Load;
                        Parameter.SetCurrentValue(_app.Commutator.CodeButton, 0x1);
                        break;

                    case 0x2:

                        code_button = CodeButtonAsy.Consumption;
                        Parameter.SetCurrentValue(_app.Commutator.CodeButton, 0x02);
                        break;

                    case 0x4:

                        code_button = CodeButtonAsy.Talblok;
                        Parameter.SetCurrentValue(_app.Commutator.CodeButton, 0x04);
                        break;

                    case 0x8:

                        code_button = CodeButtonAsy.Flow;
                        Parameter.SetCurrentValue(_app.Commutator.CodeButton, 0x08);
                        break;

                    case 0x10:

                        code_button = CodeButtonAsy.Volume;
                        Parameter.SetCurrentValue(_app.Commutator.CodeButton, 0x10);
                        break;

                    default:
                        break;
                    }

                    AnswerAsy(_packet);
                    UpdateDevManData();

                    if (OnTec != null)
                    {
                        OnTec(this, EventArgs.Empty);
                    }
                }
            }
            catch { }
        }
예제 #7
0
        /// <summary>
        /// Передать данные АСУ
        /// </summary>
        /// <param name="_packet">Пакет запроса от АСУ</param>
        protected void AnswerAsy(AsyPacket _packet)
        {
            try
            {
                Parameter[] parameters = commutator.Parameters;
                if (parameters != null)
                {
                    List<float> data = new List<float>();
                    foreach (Parameter parameter in parameters)
                    {
                        if (parameter != null)
                        {
                            PDescription channel = parameter.Channel;
                            if (channel != null)
                            {
                                if (channel.Number > -1)
                                {
                                    data.Add(parameter.CurrentValue);
                                }
                            }
                        }
                    }

                    if (data.Count >= 16)
                    {
                        AsyPacket answer_packet = _packet.TranslateToAnswer(data.ToArray());
                        if (answer_packet != null)
                        {
                            string spac = answer_packet.ToString();
                            server.Send(spac);
                        }
                    }
                }
            }
            catch { }
        }