Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Несколько виртуальных COM-портов на основе одного реального  (Прочитано 15232 раз)
0 Пользователей и 1 Гость смотрят эту тему.
EugeneE
Гость
« : 04-02-2007 21:05 » 

Доброго времени суток

Есть устройство, подключаемое к COM-порту, которое на своем борту содержит несколько портов, переключаемых определенным пакетом.
Возможно ли написать драйвер, который бы подключался к существующему порту (например, COM1) и создавал несколько виртуальных (например, COM3, COM4 и т.д.), которые бы транслировались на COM1.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 05-02-2007 06:46 » 

EugeneE, как минимум нужно знать протокол работы с этим устройством.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
EugeneE
Гость
« Ответ #2 : 05-02-2007 12:59 » 

Это устройство является переключателем портов
На устройстве 4 своих порта.
Подключается оно к COM-порту компьютера и транслирует все передачи с компьютера на один из своих портов. Переключение портов на устройстве осуществляется передачей определенных пакетов через линии DTR и RTS.

Есть много старых программ, которые не поддерживают этот переключатель, и для них очень бы хотелось сделать несколько виртуальных COM-портов, чтобы программа не знала, что она работает через переключатель, а просто подключалась к порту, например, COM3 или COM5, а далее все передачи шли на COM1.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #3 : 05-02-2007 14:30 » 

Думаю, что можно.
Я бы пошел по такому пути. Написал бы программку-сервис (не драйвер) так как по сути задачи все дела можно делать как сервис не стоит лезть в железо.
Создаешь виртуальные порты, а затем просто при обращении к ним перекидываешь управление на сервис. В сервисе стандартно коннектишься к железному реальному порту и по принципу трубы передаешь туда данные.
Записан

А птичку нашу прошу не обижать!!!
EugeneE
Гость
« Ответ #4 : 05-02-2007 15:44 » 

Если можно, то хотелось бы поподробнее и с небольшим примером, чтобы понять в какую сторону копать.
Хочется увидеть хотя бы небольшой пример, как создать сервис и виртуальный порт, который бы все переадресовал на реальный.

Я программист задач более приближенных к пользователю и еще микроконтроллеры программирую.
И с такой задачей сталкиваюсь впервые, сейчас читаю про устройство двайверов в Windows, но непросто это дается.
Принципы более менее понятны, а с пониманием примеров туговато.
Записан
prottoss
Гость
« Ответ #5 : 08-02-2007 11:51 » 

Похоже ветка сдулась??? Я бы тоже с удовольствием почитал материал по данному вопросу. Может кинет кто ссылочкой?
Записан
zubr
Гость
« Ответ #6 : 08-02-2007 17:08 » 

Цитата
Это устройство является переключателем портов
На устройстве 4 своих порта.
Подключается оно к COM-порту компьютера и транслирует все передачи с компьютера на один из своих портов. Переключение портов на устройстве осуществляется передачей определенных пакетов через линии DTR и RTS.

Есть много старых программ, которые не поддерживают этот переключатель, и для них очень бы хотелось сделать несколько виртуальных COM-портов, чтобы программа не знала, что она работает через переключатель, а просто подключалась к порту, например, COM3 или COM5, а далее все передачи шли на COM1.
Не понимаю зачем вообще огород городить с виртуальными портами. В любом случае, как я понимаю, программа на компьютере общается с реальным COM-портом (пусть это будет COM1), к которому подключено некое устройство. Все что надо знать - это протокол обмена с этим устройством, как уже и сказал RXL.
Или я что то не так понял?
Записан
prottoss
Гость
« Ответ #7 : 08-02-2007 17:24 » 

Цитата
Это устройство является переключателем портов
На устройстве 4 своих порта.
Подключается оно к COM-порту компьютера и транслирует все передачи с компьютера на один из своих портов. Переключение портов на устройстве осуществляется передачей определенных пакетов через линии DTR и RTS.

Есть много старых программ, которые не поддерживают этот переключатель, и для них очень бы хотелось сделать несколько виртуальных COM-портов, чтобы программа не знала, что она работает через переключатель, а просто подключалась к порту, например, COM3 или COM5, а далее все передачи шли на COM1.
Не понимаю зачем вообще огород городить с виртуальными портами. В любом случае, как я понимаю, программа на компьютере общается с реальным COM-портом (пусть это будет COM1), к которому подключено некое устройство. Все что надо знать - это протокол обмена с этим устройством, как уже и сказал RXL.
Или я что то не так понял?
А что непонятного? Челу надо, чтобы несколько аппликух открыли порты, не подозревая, что физически порт один. Пакеты в/из устройств будет принимать сервис. Девайс будет принимать пакеты от сервиса и передавать их в нужный порт у него на борту.
Записан
zubr
Гость
« Ответ #8 : 09-02-2007 17:30 » 

Как создать сервис есть пример в MSDN, да и в сети полно. Как создать виртуальный COM-порт есть в книге Агурова "Практика программирования USB". Вроде видел эту книгу в сети в электронном виде.
Записан
EugeneE
Гость
« Ответ #9 : 09-02-2007 21:01 » 

Спасибо за информацию. Посмотрю, почитаю.
Однако, если кто может пример небольшой написать, буду очень благодарен.
Если у самого что-то получится и заработает, то обязательно отпишусь.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines