Название: Определение устройств... Отправлено: zoro86 от Август 30, 2010, 09:26 Если в Windows я подсоединяю на СОМ порт скажем принтер...(CUSTOM VKP-80). Определяет ли Windows где нить у себя какой это принтер или нет... или регистрирует где нибудь в реестре какой нить код...
Проста ща у меня стоит задача написать автоопределение устройств для терминала самообслуживания... какое устройство на каком Сом-е балтается, ищу более легкий путь... Который можно через QT реализовать.? есть более по сложнее.. Это отправка на каждый существующий порт статуса устройств ... поочередно... если какой нить откликнулся то прикручиваем устройство к порту... Название: Re: Определение устройств... Отправлено: Barmaglodd от Август 30, 2010, 09:45 Я подписываюсь на получение сообщений об изменении статуса устройств через RegisterDeviceNotification, потом в обработчике сообщений смотрю DevID через SetupDiGetDeviceInstanceId (это немного быстрее чем сразу ломиться к устройству), а потом всё равно стучусь к устройству и жду нужный ответ.
Но это всё для USB устройств, которые работают через виртуальный COM-порт. И естественно это только для винды, кроссплатформенного решения, вроде, нет, хотя может что-то есть в KDE-шном Solid'е. Название: Re: Определение устройств... Отправлено: zoro86 от Август 30, 2010, 10:40 Дело в том что мне нужна инфа с СОМ портов... коли такая есть в винде..(а именно ID устройства или еще какой параметр через которое можно определить что есть что) :-\
Название: Re: Определение устройств... Отправлено: Sancho_s_rancho от Август 30, 2010, 10:54 Дело в том что мне нужна инфа с СОМ портов... коли такая есть в винде..(а именно ID устройства или еще какой параметр через которое можно определить что есть что) :-\ События втыкания в COM порт какого-либо девайса нет.В нашем софте пользователь запускает программу и указывает порт вручную, при этом список доступных com портов можно получить из операционной системы. Далее на указанный порт программа шлет команду приветствия, ежели на команду девайс дает ответ - то это наш девайс, если молчит или выдает что-то невразумительное - то говорим пользователю: "вы ошиблись". Конечно можно во все порты послать приветствие, но это может навредить другим девайсам. Как-то так Название: Re: Определение устройств... Отправлено: Denjs от Август 30, 2010, 19:46 Проста ща у меня стоит задача написать автоопределение устройств для терминала самообслуживания... какое устройство на каком Сом-е балтается, ищу более легкий путь... Который можно через QT реализовать.? есть более по сложнее.. Это отправка на каждый существующий порт статуса устройств ... поочередно... если какой нить откликнулся то прикручиваем устройство к порту... Вот именно через посыл запроса состояния с перебором скоростей и параметров настройки компорта вы только и сможете найти устройство подключенное к ком-порту. У меня в проекте OTPD есть утилиты определения esc/pos принтера - перебор всех ком-портов, доступных скоростей и параметров сообщения (длиина и четность кажется). Для комовых устройств вы можете работать через файл. Есть как минимум 3 проекта которые реализуют кроссплатформенную работу с ком-портом. информацию о 2-х из них можно найти тут: http://www.prog.org.ru/index.php?topic=9537.msg63319#msg63319 (собственно ссылка на мой класс в топике проекта окторый делает аналогичный моему класс) Устройства которые реализуют последовательный интерейс на USB - для которых в винде нужен драйвер виртуального компорта, в линуксе автоматически определяются как устройства вида /dev/USBtty0 или аналогичного имени (у меня например таким образом без какихлибо драйверов обнаружился без каких-либо проблем девайс-переходник вида usb2com (к usb-порту подключаем com-устройство) - и проблем работы с ними не должно возникать - открываете этот файл как обычный файл последовательного устройства. (по крайней мере линукосвый драйвер модема после принудительного указания порта работал без каких-либо проблем.) имхо - работайте с COM-портом (виртуальным и реальным) как с файлом... ? Цитировать Определяет ли Windows где нить у себя какой это принтер или нет... или регистрирует где нибудь в реестре какой нить код... Автоматически - нет. COM-порт - это старый добрый "old-скульный" девайс без "плаг-и-плея". но по своей простоте работает всегда и везде.потому вы хотите поиметь виндовый драйвер принтера для ком-устройства - вы должны сделать все саим и руками - параметры подключения указать, и, фактически, подтвердить что "да - там такое устройство действительно есть")))) (но к слову, виндовые драйвера принтеров чеков печатают медленно. Потому что виндовый драйвер рендерит картинку и шлет её на устройство, что через ком-порт происходит очень медленно) Название: Re: Определение устройств... Отправлено: labview от Август 30, 2010, 21:02 Думаю можно жёстко припаять USB2Com к принтеру и зная DevId адаптера определять его. Иначе только перебором портов с отсылкой приветствия.
Вообще пока что не видел автоопределителя дивайса через ком-порт, обычно порт (и скорость baud) указывает пользователь. Название: Re: Определение устройств... Отправлено: Denjs от Август 30, 2010, 21:46 Думаю можно жёстко припаять USB2Com к принтеру и зная DevId адаптера определять его. Иначе только перебором портов с отсылкой приветствия. Смотрите все внешние комоненты/драйвера для работы с принтерами/фр/дисплеямиПокупателя для 1С)))Вообще пока что не видел автоопределителя дивайса через ком-порт, обычно порт (и скорость baud) указывает пользователь. там всегда есть "найти устройство". ( я по крайней мере не видел пока ещё ни одного такого , у которого этого нет ) Почему так? а потому что устройство может быть подключено на терминальном клиенте, например... Какой нафиг DevId адаптера? скажите спасибо если скорость перенастраивать не придется, потому что терминальный сервер может ещё не поддерживать ту, на которую настроено ваше устройство по умолчанию... ;) |