информационная безопасность
без паники и всерьез
 подробно о проектеRambler's Top100
За кого нас держат?Все любят мед
BugTraq.Ru
Русский BugTraq
 Анализ криптографических сетевых... 
 Модель надежности двухузлового... 
 Специальные марковские модели надежности... 
 Microsoft Authenticator прекращает... 
 Очередное исследование 19 миллиардов... 
 Оптимизация ввода-вывода как инструмент... 
главная обзор RSN блог библиотека закон бред форум dnet о проекте
bugtraq.ru / форум / programming
Имя Пароль
если вы видите этот текст, отключите в настройках форума использование JavaScript
ФОРУМ
все доски
FAQ
IRC
новые сообщения
site updates
guestbook
beginners
sysadmin
programming
operating systems
theory
web building
software
hardware
networking
law
hacking
gadgets
job
dnet
humor
miscellaneous
scrap
регистрация





Легенда:
  новое сообщение
  закрытая нитка
  новое сообщение
  в закрытой нитке
  старое сообщение
Visual C++ 6.0. (Последовательный порт. Модемы. ) 16.11.01 09:49  
Автор: p2p Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Народ, подскажите где можно почитать о том,
как на Visual C++ 6.0 работать с модемами. Например, как
через последовательный порт посылать модему символы команд.
Последний раз с последовательными портами я работал
на ассемблере и на Borland C, и то в DOS-е. А как в Windows-e
с ними работать?
Visual C++ 6.0. (Последовательный порт. Модемы. ) 19.11.01 13:12  
Автор: yORiK Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Народ, подскажите где можно почитать о том,
> как на Visual C++ 6.0 работать с модемами. Например, как
> через последовательный порт посылать модему символы команд.
> Последний раз с последовательными портами я работал
> на ассемблере и на Borland C, и то в DOS-е. А как в
> Windows-e
> с ними работать?


Привет, Народ.
С интересом прочитал ваши рассуждения, т.к. сейчас сам столкнулся с этой проблемой. Заранее предупреждаю, что не являюсь спецом (пока).
Мне кажется, что гораздо проще было бы использовать прерывание БИОС (14h), т.к. в этом случае прога будет работать как под ДОС, так и под Винды любой версии.
В свою очередь имею вопрос к вам: "Каким образом выставить скорость порта больше 9600?". Нулевая функция БИОСа позволяет установить скорость максимум на 9600, или я ошибаюсь? Варианты можно предлагать любые, но только не использование прерываний ДОС.
Заранее благодарен.
Visual C++ 6.0. (Последовательный порт. Модемы. ) 20.11.01 04:09  
Автор: Sancho Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> > Народ, подскажите где можно почитать о том,
> > как на Visual C++ 6.0 работать с модемами. Например,
> как
> > через последовательный порт посылать модему символы
> команд.
> > Последний раз с последовательными портами я работал
> > на ассемблере и на Borland C, и то в DOS-е. А как в
> > Windows-e
> > с ними работать?
>
>
> Привет, Народ.
> С интересом прочитал ваши рассуждения, т.к. сейчас сам
> столкнулся с этой проблемой. Заранее предупреждаю, что не
> являюсь спецом (пока).
> Мне кажется, что гораздо проще было бы использовать
> прерывание БИОС (14h), т.к. в этом случае прога будет
> работать как под ДОС, так и под Винды любой версии.
> В свою очередь имею вопрос к вам: "Каким образом выставить
> скорость порта больше 9600?". Нулевая функция БИОСа
> позволяет установить скорость максимум на 9600, или я
> ошибаюсь? Варианты можно предлагать любые, но только не
> использование прерываний ДОС.
> Заранее благодарен.

Нормальная работа с COM портом сводится к его
1) инициализации (для этого можно использовать и 14h BIOS, но тогда нет возможности установить скорость больше 9600),
2) установке вектора прерывания (для приема и передачи - ЭТО САМЫЙ ПРИНЦИПИАЛЬНЫЙ МОМЕНТ, так как без данного вектора нет возможности СПОКОЙНО сидеть в резиденте)
3) контроле регистров порта (ЭТО ЕЩЕ БОЛЕЕ ПРИНЦИПИАЛЬНЫЙ МОМЕНТ , так как только приямое чтение регистров позволяет получать всю возможную информацию о состоянии порта. Простой пример. У нас есть нуль модемный кабель и мы конектим два порта. Две главные проблемы, которые встают в данном случае. Распайки нуль модема бывают нескольких вариантов, одни позволяют получать подтверждение передачи, а другие нет. Попробуйте использовать ДОС или BIOS для приема передачи с различными видами кабелей и Вы убедитесь, что можно соплями изойти прежде чем все переданное будет принято.
Второй момент в установке скорости - технический предел - это 115200 и с помощью BIOS он не устанавливается, а устанавливается прямой записью в базовый регистр (БР) и БР+1 двух значений делителся частоты - ЭТО в качестве ответа на вопрос (для более полной информации придется смотреть спец. литературу (практически любой справочник по асемблеру или Фролов "Аппаратное обеспечение" т. 33))) Интересно, что Windows позволяет устанавливать скорость порта (вплоть до 115200) , а вот котролировать его регистры нет.
Если упомянуть о проблеме, которая волнует меня - как в защищенном режиме миновать ограничения таблицы доступа к портам (как это технически правильно звучит я не знаю) или как получить уровень досупа "ядро".

ЗЫ: гарантии, что работа через BIOS будет всегда поддерживаться Windows нет никакой.
Visual C++ 6.0. (Последовательный порт. Модемы. ) 16.11.01 17:02  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Народ, подскажите где можно почитать о том,
> как на Visual C++ 6.0 работать с модемами. Например, как
> через последовательный порт посылать модему символы команд.
> Последний раз с последовательными портами я работал
> на ассемблере и на Borland C, и то в DOS-е. А как в
> Windows-e
> с ними работать?

v Windows s ljubym ustrojstvom mozhno rabotat' kak s obychnym file-om, t.e. k primeru tebe nado otkryt' dostup k COM1 :
hFile = ::CreateFile("COM1", ....);
nado poslat' dannye :
::WriteFile(hFile, lpBuffer, ....);
nado poluchit' :
::ReadFile(hFile, lpBuffer, ....);

i t.d.....
takim zhe makarom mozhno rabotat' s LPT
eta tema tut mnogo raz obsuzhdalas', luchshe poishi v archive-ax, dumaju najdesh' xoroshuju informaciu.
[C++] Visual C++ 6.0. (Последовательный порт. Модемы. ) 16.11.01 21:53  
Автор: Sancho Статус: Незарегистрированный пользователь
<"чистая" ссылка>
Методика hFile = ::CreateFile("COM1", ....); предлагается в большинстве литературных источников (Дж. Рихтер "Windows для профессионалов") и, судя по-всему, является единственной документированной возможностью просто работать с COM.
Эта тема действительно уже обсуждалась на форуме, но дальше использования этой функции обсуждение не заходилою
Я пробовал работать с CreateFile, но мне это не подошло (велика потребность использовать прерывания). Я обошел проблему (в своем случае) тем, что напсал на Borland C обработчик прерывания (DOS) и использовал его в Win95 - для решения моей проблемы этого было достаточно. В ОС выше 95-х данный номер уже не проходит ,- там даже при чтении значения регистров неправильные выдаются (хотя в WinXP может быть что-то и снова заработает).
Лично я ничего более умного предложить не могу, но с удовольствием послушал бы человека объяснившего как особо не пыжась состряпать драйверок уровня ядра для портов или хотя бы описал интерфейс каких-нибудь существующих драйверов (функций).
[C++] Visual C++ 6.0. (Последовательный порт. Модемы. ) 16.11.01 23:41  
Автор: kabanchik Статус: Незарегистрированный пользователь
<"чистая" ссылка>
> Методика hFile = ::CreateFile("COM1", ....); предлагается в
> большинстве литературных источников (Дж. Рихтер "Windows
> для профессионалов") и, судя по-всему, является
> единственной документированной возможностью просто работать
> с COM.
> Эта тема действительно уже обсуждалась на форуме, но дальше
> использования этой функции обсуждение не заходилою
> Я пробовал работать с CreateFile, но мне это не подошло
> (велика потребность использовать прерывания). Я обошел
> проблему (в своем случае) тем, что напсал на Borland C
> обработчик прерывания (DOS) и использовал его в Win95 - для
> решения моей проблемы этого было достаточно. В ОС выше 95-х
> данный номер уже не проходит ,- там даже при чтении
> значения регистров неправильные выдаются (хотя в WinXP
> может быть что-то и снова заработает).
> Лично я ничего более умного предложить не могу, но с
> удовольствием послушал бы человека объяснившего как особо
> не пыжась состряпать драйверок уровня ядра для портов или
> хотя бы описал интерфейс каких-нибудь существующих
> драйверов (функций).

tvoi preryvania budut rabotat' tol'ko pod win95 i emu podobnyx. eto perezhitki DOS-a.
Ya uveren eto ne rabotaet pod NT, i ochen' nadejus' chto ne budet rabotat' pod XP....
ya pravda ne predstavljaju kakie u teby aser'eznye problemy, no dumaju esli ty poveduesh' o nix narodu, to oni tebe pomogut.
mozhet tebe driver pisat' nado, prichem v kernel mode, togda konechno CreateFile ne goditsya odnoznachno. no dlya bol'shinstva sluchaev - eto dovol'no udobnaya.
i vopros dazhe ne v dokumentacii, a v organizovannosti systemy. ona sama raspoznaet k kakomu ustrojstvu "stuchatsya". tebe zhe nuzhno tol'ko zadat' unikal'nye imena dlja tvoix I/O ustrojstv.

Postarajsya xorosho organizovat' svoju zadachu i napishi na dosku.

regards.
1




Rambler's Top100
Рейтинг@Mail.ru


  Copyright © 2001-2025 Dmitry Leonov   Page build time: 0 s   Design: Vadim Derkach