/// <summary> /// Отправить команду ТУ /// </summary> public override void SendCmd(Command cmd) { base.SendCmd(cmd); lastCommSucc = false; if (fatalError) { WriteToLog(KpPhrases.CommunicationImpossible); } else { string varName; ObjectIdentifier varOid; if ((cmd.CmdTypeID == BaseValues.CmdTypes.Standard || cmd.CmdTypeID == BaseValues.CmdTypes.Binary) && FindVariableBySignal(cmd.CmdNum, out varName, out varOid)) { ISnmpData data = cmd.CmdTypeID == BaseValues.CmdTypes.Standard ? new Integer32((int)cmd.CmdVal) : EncodeVarData(cmd.GetCmdDataStr()); if (data == null) WriteToLog(CommPhrases.IncorrectCmdData); else Command(varName, new Variable(varOid, data)); } else { WriteToLog(CommPhrases.IllegalCommand); } } CalcCmdStats(); }
/// <summary> /// Преобразовать команду в список почтовых сообщений /// </summary> private bool ParseCmd(Command cmd, out MailMessage message) { string cmdDataStr = cmd.GetCmdDataStr(); int ind1 = cmdDataStr.IndexOf(';'); int ind2 = ind1 >= 0 ? cmdDataStr.IndexOf(';', ind1 + 1) : -1; if (ind1 >= 0 && ind2 >= 0) { string recipient = cmdDataStr.Substring(0, ind1); string subject = cmdDataStr.Substring(ind1 + 1, ind2 - ind1 - 1); string text = cmdDataStr.Substring(ind2 + 1); List<string> addresses = new List<string>(); if (addressBook == null) { // добавление адреса получателя из данных команды addresses.Add(recipient); } else { // поиск адресов получателей в адресной книге AB.AddressBook.ContactGroup contactGroup = addressBook.FindContactGroup(recipient); if (contactGroup == null) { AB.AddressBook.Contact contact = addressBook.FindContact(recipient); if (contact == null) { // добавление адреса получателя из данных команды addresses.Add(recipient); } else { // добавление адресов получателей из контакта addresses.AddRange(contact.Emails); } } else { // добавление адресов получателей из группы контактов foreach (AB.AddressBook.Contact contact in contactGroup.Contacts) addresses.AddRange(contact.Emails); } } // создание сообщения message = CreateMessage(addresses, subject, text); return message != null; } else { message = null; return false; } }
/// <summary> /// Получить параметры команды /// </summary> private void GetCmdParams(Command cmd, out string dataSourceName, out DateTime dateTime) { string cmdDataStr = cmd.GetCmdDataStr(); string[] parts = cmdDataStr.Split('\n'); dataSourceName = parts[0]; try { dateTime = ScadaUtils.XmlParseDateTime(parts[1]); } catch { dateTime = DateTime.MinValue; } }