Ответы в темах
-
АвторСообщения
-
JurasskParkУчастникДаже при свойстве у девайсов Неизвестно — клиенты по прежнему висят и не пропадают.
Какие настырные 🙂А можно из драйвера клиента увидеть список клиентов и их убить?
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
JurasskParkУчастникПроверил. Нет там статических переменных.
Буду сейчас все переменные логировать…
JurasskParkУчастник
JurasskParkУчастникА вот это очень может даже быть…
Я же на Console код логики отрабатываю.
JurasskParkУчастникhttps://disk.yandex.ru/i/BufFrE4WDATL2w
Где у Михаила лежит — мы не знаем.
JurasskParkУчастникА какая полезная информация вам и мне бы помогла?
Самое интересное… Что там происходит:
У одной установки 1 сессия, у второ сразу 2 сессии, потом у второй сразу 4 сессии появляется.А на другом сервере где тот же драйвер, но 1 установка, такой истории вообще нет. Как была, так и остаётся одна сессия.
JurasskParkУчастникНе понял я как удаленной подключаться к серверу.
Хотя RemoteDebuger VS 2022 установил, подключил.Но! Закомментировал код с
LineContext.GetDeviceByAddress(address, out deviceLogic);
requestArgs.TargetDevices.Add(deviceLogic);
подключения всё равно растут.
Вопрос. А можно как-то из LineContext принудительно очищать список сессий?
Просто после 200 сессии драйвер уже нормально не отвечает…
JurasskParkУчастникНеа.
Также висят клиенты…
При том что сейчас 14:38, а висят по времени 11:28:45 — штук 30…
А всего 150…
JurasskParkУчастникКосяк был в том, что я устройству не отдавал ответ по некоторым командам и они ждали его…
JurasskParkУчастникКосяк был в том, что я устройству не отдавал ответ по некоторым командам и они ждали его…
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, то в условие не заходить.
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 записей…
Где искать ошибку в логике драйвера?
JurasskParkУчастникТакого (10002) 146% не дадут.
Кто не даëт? Безопасность?
Тогда пишите официальное письмо на имя, кто курирует ваш договор по работам, что выполнить работы не возможно по причине отказа «таких то сотрудников» предоставлять необходимый доступ.
JurasskParkУчастникСпасибо! Будем изучать 🙂
-
АвторСообщения