JurasskPark

Ответы в темах

Просмотр 15 сообщений - с 16 по 30 (из 1,084 всего)
  • Автор
    Сообщения
  • в ответ на: Драйвер в режиме TcpServer #40791
    JurasskPark
    Участник

    Даже при свойстве у девайсов Неизвестно — клиенты по прежнему висят и не пропадают.
    Какие настырные 🙂

    А можно из драйвера клиента увидеть список клиентов и их убить?

    в ответ на: Драйвер в режиме TcpServer #40790
    JurasskPark
    Участник

    http://jurasskpark.ru/pubimg/up/1760683230a46f1bd.png

    
     #region Device Logic
     DeviceLogic deviceLogic = this;
     int address = driverClient.PasponseAddress(bufferReceiver);
    
     LogDriverDebug(@$"Отладка");
     LogDriverDebug(@$"Информация о количестве устройств = " + requestArgs.TargetDevices.Count);
     LogDriverDebug(@$"Информация о DeviceLogic:");
     LogDriverDebug(@$"Title:{deviceLogic.Title}");
     LogDriverDebug(@$"StrAddress:{deviceLogic.StrAddress}");
     LogDriverDebug(@$"StatusText:{deviceLogic.StatusText}");
     //LogDriverDebug(@$"PollingOptions.Period.Seconds:{deviceLogic.PollingOptions.Period.Seconds.ToString()}");
     //LogDriverDebug(@$":");
     //LogDriverDebug(@$":");
     //LogDriverDebug(@$":");
     //LogDriverDebug(@$":");
     //LogDriverDebug(@$":");
    
     if
     (
         connection.Connected == true &&
         connection.RemoteAddress == project.DeviceSettings.IP.ToString() &&
         address == (int)project.DeviceSettings.Address
     )
     {
         LogDriverDebug("Отладка");
         LogDriverDebug("Количество = " + requestArgs.TargetDevices.Count);
         LogDriverDebug("Адрес совпадает");
         currentConnection = connection;
         LineContext.GetDevice(address, out deviceLogic);
    
         deviceLogic.Connection = currentConnection;
         LogDriverDebug(deviceLogic.GetInfo());
         LogDriverDebug("Количество после = " + requestArgs.TargetDevices.Count);
     }
     else
     {
         if
         (
             deviceLogic.NumAddress != address &&
             address > 0 &&
             address < 32767
         )
         {
             LogDriverDebug("Отладка");
             LogDriverDebug("Количество = " + requestArgs.TargetDevices.Count);
             LogDriverDebug("Адрес = " + address.ToString());
    
             LineContext.GetDeviceByAddress(address, out deviceLogic);
             requestArgs.TargetDevices.Add(deviceLogic);
    
             LogDriverDebug("После добавления = " + requestArgs.TargetDevices.Count);
         }
     }
     #endregion Device Logic
    
     #region  Receive data
     bool connectionStatus = DataReceiver(connection, bufferReceiver, out logText);
     #endregion  Receive data
    
     #region Indicator
     indicatorReceivingSendingData = false;
     #endregion Indicator
    
     LogDriverDebug(@$"Информация о количестве устройств ПОСЛЕ = " + requestArgs.TargetDevices.Count);
    

    Что мне не понятно. Получается, что при выполнении requestArgs.TargetDevices.Count их там всегда 0, а хотя самое количество клиентов пишется 5…

    Еще нашел свойство у deviceLogic — Terminate >:D

    в ответ на: Драйвер в режиме TcpServer #40789
    JurasskPark
    Участник

    Проверил. Нет там статических переменных.
    Буду сейчас все переменные логировать…

    в ответ на: Управление мнемосхемами v6 #40788
    JurasskPark
    Участник
    в ответ на: Драйвер в режиме TcpServer #40776
    JurasskPark
    Участник

    А вот это очень может даже быть…
    Я же на Console код логики отрабатываю.

    в ответ на: Документация для разработчика #40775
    JurasskPark
    Участник

    https://disk.yandex.ru/i/BufFrE4WDATL2w
    Где у Михаила лежит — мы не знаем.

    в ответ на: Драйвер в режиме TcpServer #40770
    JurasskPark
    Участник

    А какая полезная информация вам и мне бы помогла?

    Самое интересное… Что там происходит:
    У одной установки 1 сессия, у второ сразу 2 сессии, потом у второй сразу 4 сессии появляется.

    А на другом сервере где тот же драйвер, но 1 установка, такой истории вообще нет. Как была, так и остаётся одна сессия.

    в ответ на: Драйвер в режиме TcpServer #40728
    JurasskPark
    Участник

    Не понял я как удаленной подключаться к серверу.
    Хотя RemoteDebuger VS 2022 установил, подключил.

    Но! Закомментировал код с
    LineContext.GetDeviceByAddress(address, out deviceLogic);
    requestArgs.TargetDevices.Add(deviceLogic);
    подключения всё равно растут.
    Вопрос. А можно как-то из LineContext принудительно очищать список сессий?
    Просто после 200 сессии драйвер уже нормально не отвечает…

    в ответ на: Драйвер в режиме TcpServer #40588
    JurasskPark
    Участник

    Неа.
    Также висят клиенты…
    При том что сейчас 14:38, а висят по времени 11:28:45 — штук 30…
    А всего 150…

    в ответ на: Драйвер в режиме TcpServer #40583
    JurasskPark
    Участник

    Косяк был в том, что я устройству не отдавал ответ по некоторым командам и они ждали его…

    в ответ на: Драйвер в режиме TcpServer #40584
    JurasskPark
    Участник

    Косяк был в том, что я устройству не отдавал ответ по некоторым командам и они ждали его…

    в ответ на: Драйвер в режиме TcpServer #40580
    JurasskPark
    Участник

    Какая часть кода меня беспокоит

    
    if (
                    deviceLogic.NumAddress != address &&
                    address != -1 && 
                    address > 32767
                   )
                {
                    LineContext.GetDeviceByAddress(address, out deviceLogic);
                    requestArgs.TargetDevices.Add(deviceLogic);
                }
    

    00.00.00.0A.FF.FF.00.00.00.05.00.07.54.9A.

    FF.FF. — 1
    Это команда прилетает с установки с адресом -1 с устройства с адресом 16011.
    Это команда на установки связи.

    00.00.00.1C.3E.8B.81.0D.00.00.00.07.55.2F.01.02.41.06.50.53.35.35.30.30.41.06.30.38.30.38.30.38.

    3E.8B. — 16011 (без последнего бита)
    Это команда прилетает с установки с адресом 16011 с устройства с адресом 16011.
    Это команда, где говорится, название и уже версии прошивки устройства.

    Получается, что вызываться
    LineContext.GetDeviceByAddress(address, out deviceLogic);
    requestArgs.TargetDevices.Add(deviceLogic);
    должно, если адрес не найден, так значение -1 никогда не будет найдено… получается, надо поставить первое условие, что если адрес -1, то в условие не заходить.

    в ответ на: Драйвер в режиме TcpServer #40571
    JurasskPark
    Участник

    [1601] STP-HSMSServer
    ———————
    Статус : норма
    Канал связи : TCP-сервер

    Подключенные клиенты (5)
    ————————
    *.*.*.3; [16010100] STP10; 6:34:43
    *.*.*.4; [16010110] STP11; 6:35:23
    *.*.*.3; [16010100] STP10; 6:35:23
    *.*.*.3; [16010100] STP10; 6:35:43
    *.*.*.3; [16010100] STP10; 6:35:23

    Устройства (3)
    —————
    [16010010] TRAINING_MACHINE : норма
    [16010100] STP10 : норма
    [16010110] STP11 : норма

    
                #region Device Logic
                DeviceLogic deviceLogic = this;
                int address = driverClient.PasponseAddress(bufferReceiver);
    
                if (
                    connection.Connected == true && 
                    connection.RemoteAddress == project.DeviceSettings.IP.ToString() &&
                    address == (int)project.DeviceSettings.Address
                    )
                {
                    currentConnection = connection;
                }
    
                if (
                    deviceLogic.NumAddress != address &&
                    address != -1 && 
                    address > 32767
                   )
                {
                    LineContext.GetDeviceByAddress(address, out deviceLogic);
                    requestArgs.TargetDevices.Add(deviceLogic);
                }
                #endregion Device Logic
    

    В параметрах линии указано, что Время неактивности = 60 сек.
    Вопрос. Почему список подключенных клиентов растёт и не исчезает. Доходит до 400 записей…
    Где искать ошибку в логике драйвера?

    в ответ на: Перенос проекта на Linux #40513
    JurasskPark
    Участник

    Такого (10002) 146% не дадут.

    Кто не даëт? Безопасность?
    Тогда пишите официальное письмо на имя, кто курирует ваш договор по работам, что выполнить работы не возможно по причине отказа «таких то сотрудников» предоставлять необходимый доступ.

    в ответ на: Обновление новых мнемосхем #40449
    JurasskPark
    Участник

    Спасибо! Будем изучать 🙂

Просмотр 15 сообщений - с 16 по 30 (из 1,084 всего)