/// <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); }
/// <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); }
/// <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 { } }
/// <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; }
/// <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; }
/// <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 { } }
/// <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 { } }