Слетает DrawServ при недостоверности канала с драйвером Type11 на версии 5.15(без SP1). 5.12 - нормально.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
На код драйвера можно взглянуть?
Posted by Kramarenko Stanislav (Участник № / Member № 119) on :
Отправил на hotline@adastra.ru t11s16.cpp и t11s16.h
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Получили, посмотрели, замечания по коду направили по E-mail.
Posted by Kramarenko Stanislav (Участник № / Member № 119) on :
Да, спасибо, замечания учли, но проблема осталась, причем проявилась и на других версиях ТМ, а не только на 5.15. Видимо проблема все-же в драйвере, но пока определить не можем.
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Берем таймаут на перепроверку.
Posted by Kramarenko Stanislav (Участник № / Member № 119) on :
Проблему обнаружили и устранили. В нашем драйвере были ошибки, которые приводили к тому, что устройство иногда нам не отвечало, в результате чего возникала недостоверность в канале. По моему проекту недостоверность должна была приводить к переинициализации портов, для чего я в канал RS-reinit посылал FF, надеясь переинициализировать их все, как ранее делал на МикроМРВ. Посылка в RS-reinit значения FF и приводит к краху DrawServ.
Posted by Kramarenko Stanislav (Участник № / Member № 119) on :
Вопрос - можно ли с целью ОДНОВРЕМЕННОЙ переинициализации нескольких портов использовать несколько каналов RS-reinit с разными значениями?
Posted by AdAstra Technical Support (Участник № / Member № 4) on :
Вы неправильно интерпретировали работу канала RS-reinit. Этот канал реинициализирует только один COM-порт, номер которого Вы задаете. Задавая 0xFF, Вы пытаетесь инициализировать 255-й порт. Ошибка объяснима. Создать 2 канала RS-reinit можно. Но при одновременной подаче в них команд на реинициализацию отработает только один из них. Поэтому смысла в создании нескольких таких каналов нет. Надо через один канал последовательно (с паузой, м.б., 1-2 секунды) подавать команды реинициализации для нужных COM-портов. В связи с этим есть смысл в Вашем драйвере определять, по какому порту пришла устойчивая недостоверность и реинициализировать только этот порт.