Начиная с версии 4.0 в ПО Legos, используется новый сервер оборудования.
Это наиболее ответственная часть системы, реализующая взаимодействие с контроллерами. Главные характеристики нового сервера оборудования:
Повышенная надежность:
Опрос контроллеров и обработка данных производится в отдельных процессах опроса (FlexPortHost.exe), по одному процессу на каждую линию контроллеров. Даже при возникновении необработанных исключений на уровне драйвера порта (например, при выдергивании USB-конвертера) аварийно завершает работу только процесс опроса, а не вся система, как раньше.
Основной процесс (FlexServer.exe) автоматически перезапускает процесс опроса — и система продолжает работу.
Запись ключей и любых других параметров в контроллеры производится с проверкой (т.е. сначала все пишется, потом все читается и проверяется соответствие). В случае обнаружения ошибок сообщение об этом отображается в состоянии контроллера, а также помещается в лог ошибок соответствующего контроллера. Это позволяет оперативно и однозначно определять факты выхода из строя памяти контроллеров и, кроме того, обезопаситься от любых проблем с линией связи.
Запись параметров гарантированно доводится до конца даже в случае временных потерь связи с контроллером. Не записавшиеся данные будут записаны в контроллер при восстановлении связи (если, конечно, процесс опроса не был перезагружен). Это в том числе обеспечивает надежную запись флагов антипассбека даже при плохой линии связи.
Код сервера переписан практически полностью, с учетом всех проблем, выявленных при работе старого сервера. Этим обеспечивается стабильная работа системы без перезагрузок в течение нескольких месяцев и логичное поведение системы в любых нештатных ситуациях.
Улучшенная производительность:
Извлечение данных из базы и их обработка при записи ключей и параметров производится на уровне процессов опроса. Основной процесс только дает команду "записать параметры", а процесс опроса производит все нужные действия. Это позволяет избавиться от зависания клиентских консолей даже при записи огромного количества ключей.
При переработке кода удалено множество избыточных команд опроса контроллеров. Изменение статусов устройств и поступление событий должно происходить быстрее.