Ejemplo n.º 1
0
        /// <summary>
        /// Запустить работу канала связи
        /// </summary>
        public override void Start()
        {
            // создание UDP-клиента и соединения
            UdpClient udpClient = new UdpClient(settings.LocalUdpPort);

            WriteToLog(string.Format(Localization.UseRussian ?
                                     "{0} Локальный UDP-порт {1} открыт" :
                                     "{0} Local UDP port {1} is open", CommUtils.GetNowDT(), settings.LocalUdpPort));

            terminated = false;
            udpConn    = new UdpConnection(udpClient, settings.LocalUdpPort, settings.RemoteUdpPort);

            // установка соединения всем КП на линии связи
            foreach (KPLogic kpLogic in kpList)
            {
                kpLogic.Connection = udpConn;
            }

            // запуск приёма данных в режиме ведомого
            if (settings.Behavior == OperatingBehaviors.Slave)
            {
                WriteToLog(string.Format(Localization.UseRussian ?
                                         "{0} Запуск приёма данных по UDP на порту {1}" :
                                         "{0} Start receiving data via UDP on port {1}", CommUtils.GetNowDT(), settings.LocalUdpPort));
                StartUdpReceive();
            }
        }
Ejemplo n.º 2
0
 /// <summary>
 /// Конструктор
 /// </summary>
 public CommUdpLogic()
     : base()
 {
     settings      = new Settings();
     udpConn       = null;
     kpCallNumDict = new Dictionary <string, KPLogic>();
 }
Ejemplo n.º 3
0
        /// <summary>
        /// Инициализировать канал связи
        /// </summary>
        public override void Init(SortedList <string, string> commCnlParams, List <KPLogic> kpList)
        {
            // вызов метода базового класса
            base.Init(commCnlParams, kpList);

            // инициализация настроек канала связи
            settings.Init(commCnlParams);

            // создание клиента и соединения
            UdpClient udpClient = new UdpClient(settings.LocalUdpPort);

            udpConn = new UdpConnection(udpClient, settings.LocalUdpPort, settings.RemoteUdpPort);

            foreach (KPLogic kpLogic in kpList)
            {
                // добавление КП в словарь по позывным
                string callNum = kpLogic.CallNum;
                if (!string.IsNullOrEmpty(callNum) && !kpCallNumDict.ContainsKey(callNum))
                {
                    kpCallNumDict.Add(callNum, kpLogic);
                }

                // установка соединения всем КП на линии связи
                kpLogic.Connection = udpConn;
            }

            // проверка поддержки режима работы канала связи подключенными КП
            CheckBehaviorSupport();
        }
Ejemplo n.º 4
0
 /// <summary>
 /// Выполнить действия после сеанса опроса КП или отправки команды
 /// </summary>
 public override void AfterSession(KPLogic kpLogic)
 {
     // очистка буфера неполностью считанной датаграммы, если сеанс опроса КП завершён с ошибкой
     if (kpLogic.WorkState == KPLogic.WorkStates.Error && Behavior == OperatingBehaviors.Master)
     {
         UdpConnection udpConn = kpLogic.Connection as UdpConnection;
         if (udpConn != null && udpConn.Connected)
         {
             udpConn.ClearDatagramBuffer();
         }
     }
 }
Ejemplo n.º 5
0
        /// <summary>
        /// Инициализировать канал связи
        /// </summary>
        public override void Init(SortedList<string, string> commCnlParams, List<KPLogic> kpList)
        {
            // вызов метода базового класса
            base.Init(commCnlParams, kpList);

            // инициализация настроек канала связи
            settings.Init(commCnlParams);

            // создание клиента и соединения
            UdpClient udpClient = new UdpClient(settings.LocalUdpPort);
            udpConn = new UdpConnection(udpClient, settings.LocalUdpPort, settings.RemoteUdpPort);

            foreach (KPLogic kpLogic in kpList)
            {
                // добавление КП в словарь по позывным
                string callNum = kpLogic.CallNum;
                if (!string.IsNullOrEmpty(callNum) && !kpCallNumDict.ContainsKey(callNum))
                    kpCallNumDict.Add(callNum, kpLogic);

                // установка соединения всем КП на линии связи
                kpLogic.Connection = udpConn;
            }

            // проверка поддержки режима работы канала связи подключенными КП
            CheckBehaviorSupport();
        }
Ejemplo n.º 6
0
 /// <summary>
 /// Конструктор
 /// </summary>
 public CommUdpLogic()
     : base()
 {
     settings = new Settings();
     udpConn = null;
     kpCallNumDict = new Dictionary<string, KPLogic>();
 }