Russian Qt Forum
Ноябрь 27, 2024, 08:47 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Определение устройств...  (Прочитано 7249 раз)
zoro86
Гость
« : Август 30, 2010, 09:26 »

Если в Windows я подсоединяю на СОМ порт скажем принтер...(CUSTOM VKP-80). Определяет ли Windows где нить у себя какой это принтер или нет... или регистрирует где нибудь в реестре какой нить код...

Проста ща у меня стоит задача написать автоопределение устройств для терминала самообслуживания... какое устройство на каком Сом-е балтается, ищу более легкий путь... Который можно через QT реализовать.?

есть более по сложнее..
Это отправка на каждый существующий порт статуса устройств ... поочередно... если какой нить откликнулся то прикручиваем устройство к порту...
Записан
Barmaglodd
Гость
« Ответ #1 : Август 30, 2010, 09:45 »

Я подписываюсь на получение сообщений об изменении статуса устройств через RegisterDeviceNotification, потом в обработчике сообщений смотрю DevID через SetupDiGetDeviceInstanceId (это немного быстрее чем сразу ломиться к устройству), а потом всё равно стучусь к устройству и жду нужный ответ.
Но это всё для USB устройств, которые работают через виртуальный COM-порт. И естественно это только для винды, кроссплатформенного решения, вроде, нет, хотя может что-то есть в KDE-шном Solid'е.
« Последнее редактирование: Август 30, 2010, 09:50 от Barmaglodd » Записан
zoro86
Гость
« Ответ #2 : Август 30, 2010, 10:40 »

Дело в том что мне нужна инфа с СОМ портов... коли такая есть в винде..(а именно ID устройства или еще какой параметр через которое можно определить что есть что) В замешательстве
Записан
Sancho_s_rancho
Гость
« Ответ #3 : Август 30, 2010, 10:54 »

Дело в том что мне нужна инфа с СОМ портов... коли такая есть в винде..(а именно ID устройства или еще какой параметр через которое можно определить что есть что) В замешательстве
События втыкания в COM порт какого-либо девайса нет.
В нашем софте пользователь запускает программу и указывает порт вручную, при этом список  доступных com портов можно получить из операционной системы.
Далее на указанный порт программа шлет команду приветствия, ежели на команду девайс дает ответ - то это наш девайс, если молчит или выдает что-то невразумительное - то говорим пользователю: "вы ошиблись".
Конечно можно во все порты послать приветствие, но это может навредить другим девайсам.
Как-то так
Записан
Denjs
Гость
« Ответ #4 : Август 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-скульный" девайс без "плаг-и-плея". но по своей простоте работает всегда и везде.
потому вы хотите поиметь виндовый драйвер принтера для ком-устройства - вы должны сделать все саим и руками - параметры подключения указать, и, фактически, подтвердить что "да - там такое устройство действительно есть"))))
(но к слову, виндовые драйвера принтеров чеков печатают медленно. Потому что виндовый драйвер рендерит картинку и шлет её на устройство, что через ком-порт происходит очень медленно)
« Последнее редактирование: Август 30, 2010, 20:02 от Denjs » Записан
labview
Гость
« Ответ #5 : Август 30, 2010, 21:02 »

Думаю можно жёстко припаять USB2Com к принтеру и зная DevId адаптера определять его. Иначе только перебором портов с отсылкой приветствия.
Вообще пока что не видел автоопределителя дивайса через ком-порт, обычно порт (и скорость baud) указывает пользователь.
Записан
Denjs
Гость
« Ответ #6 : Август 30, 2010, 21:46 »

Думаю можно жёстко припаять USB2Com к принтеру и зная DevId адаптера определять его. Иначе только перебором портов с отсылкой приветствия.
Вообще пока что не видел автоопределителя дивайса через ком-порт, обычно порт (и скорость baud) указывает пользователь.
Смотрите все внешние комоненты/драйвера для работы с принтерами/фр/дисплеямиПокупателя для 1С)))
там всегда есть "найти устройство". ( я по крайней мере не видел пока ещё ни одного такого , у которого этого нет )

Почему так? а потому что устройство может быть подключено на терминальном клиенте, например...  Какой нафиг DevId адаптера?
скажите спасибо если скорость перенастраивать не придется, потому что терминальный сервер может ещё не поддерживать ту, на которую настроено ваше устройство по умолчанию...  Подмигивающий
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.147 секунд. Запросов: 20.