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

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

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

Заранее благодарен за любую информацию.
Записан
Sashok
Молодой специалист

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

« Ответ #1 : 04-12-2003 06:30 » 

Не понял вопроса.
Ты имеешь ввиду STDIN и STDOUT на СОМ посадить? Так это от операционки зависит.
Записан

Если бы окружающие нас объекты содержали столько же ошибок, сколько программы, цивилизация обрушилась бы от первого порыва ветра...
-Barmaley-
Гость
« Ответ #2 : 04-12-2003 07:14 » 

Цитата: Sashok
Не понял вопроса.
Ты имеешь ввиду STDIN и STDOUT на СОМ посадить? Так это от операционки зависит.


В WinXP программы написаные под DOS лишаются возможности работать с портом напрямую. Вот и хотелось узнать можно ли перехватить обращение к COM порту и переадресовать это через API. Т.е. возможно ли создать мост между API и прямой работой с COM портом (в ХР), что бы проги написаные под DOS комфортно чуствовали себя в данной операционке.
Записан
RXL
Технический
Администратор

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

WWW
« Ответ #3 : 04-12-2003 08:51 » 

Переместил в "Windows" - ни какого отношения к ассемблеру не видно, а вопрос чисто по win.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Mouse
Молодой специалист

ru
Offline Offline

« Ответ #4 : 04-12-2003 10:34 » 

Цитата

Вот и хотелось узнать можно ли перехватить обращение к COM порту и переадресовать это через API. Т.е. возможно ли создать мост между API и прямой работой с COM портом (в ХР)

Т.е. надо средствами XP перехватывать события COM порта? Есть функция WaitCommEvent, может она поможет. Я сейчас как раз передачей данных занимаюсь, так что опиши подробнее, в чем проблема.
Записан
GlukSoft
Главный специалист

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

« Ответ #5 : 04-12-2003 10:56 » 

Archangel, WaitCommEvent в данном случае не поможет, т.к. она позволяет отслеживать события на COM порте (RX, TX, ...), а требуется поймать попытку DOS'овской программы обратится напрямую к порту (в XP это запрещено). Так что нужно лезть куда-то внутрь Windows.
Записан

Fatal error C1: Brain expected
-Barmaley-
Гость
« Ответ #6 : 05-12-2003 04:28 » 

Я согласен что нужно лезть внутрь операционки, но куда конкретно. Ведь XP все-таки эмулирует работу DOS программы с COM портом, она делает вид, что отсылает пытается принять только это полный муляж. Но XP же должен где то хранить обращение к COM порту (предположительно). Только где это "где" и как его достать?Не понял
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #7 : 05-12-2003 07:21 » 

D XP встроен режим совместимости со старыми ОС. Для того чтобы его задействовать, необходимо выбрать вкладку Compatibility в свойствах (properties) файла или ярлыка (shortcut) на файл. На этой вкладке можно указать: под видом какой ОС требуется запускать программу. Windows XP в режиме совместимости не просто рапортует программе, что она — это не она (по типу утилиты setver из MS-DOS), но и эмулирует структуру реестра Windows, свойственную той или иной версии ОС. Если нет желания лазать по свойствам файлов и ярлыков самостоятельно, можно воспользоваться Program Compatibility Wizard (Start – Programs – Accessories). Впрочем, не стоит ожидать от этого механизма чуда  Ага
Записан

I Have Nine Lives You Have One Only
THINK!
FoxVID
Гость
« Ответ #8 : 05-12-2003 07:40 » 

Дело в том, что если ваша DOS-овская программа пытается обратиться напрямую к регистрам портов - ничего не выйдет. Windows этого не позволит.
Записан
-Barmaley-
Гость
« Ответ #9 : 05-12-2003 07:45 » 

Цитата: HandKot
D XP встроен режим совместимости со старыми ОС. Для того чтобы его задействовать, необходимо выбрать вкладку Compatibility в свойствах (properties) файла или ярлыка (shortcut) на файл. На этой вкладке можно указать: под видом какой ОС требуется запускать программу. Windows XP в режиме совместимости не просто рапортует программе, что она — это не она (по типу утилиты setver из MS-DOS), но и эмулирует структуру реестра Windows, свойственную той или иной версии ОС. Если нет желания лазать по свойствам файлов и ярлыков самостоятельно, можно воспользоваться Program Compatibility Wizard (Start – Programs – Accessories). Впрочем, не стоит ожидать от этого механизма чуда  Ага


Я конечно благодарен за ответ, но я не User, и где задать режим совместимоти знаю.  В дополнение ко всему этот режим совместимости не решает моей заданного мной вопроса хоть какую ОС из предложенного списка не выбирай (DOS там нет)...
Записан
-Barmaley-
Гость
« Ответ #10 : 05-12-2003 08:05 » new

Цитата: FoxVID
Дело в том, что если ваша DOS-овская программа пытается обратиться напрямую к регистрам портов - ничего не выйдет. Windows этого не позволит.


Я заню, что ничего не выходит при этом. Но если она обращается к портам, то значит она куда-то пишет это обращение, а вот потом добрый WinXP гасит это.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines