Страница 1 из 1

Программирование под COM порт

СообщениеДобавлено: Ср фев 21, 2007 2:14 pm
Âèòàëèê
Вопрос программистам. Я уже задавал вопрос о gprs модемах, и на данный момент появилась проблема:
Необходимо открыть ком порт, набрать номер, а затем дать доступ к этому порту другой проге (DOS проге). Как из делфи открыть порт и расшарить доступ к нему? точнее, как открыть я знаю, команды модему проходят, но как открыть его не монопольно?
Дело в том, что дос прога не умеет набирать номер, а средства винды и другие проги, с помощью которых возможно набрать номер и установить соединение занимают порт и не дают к нему доступа. Как только закрываешь эту прогу - соединение разрывается... помогите плзз, кто сталкивался с этим

СообщениеДобавлено: Ср фев 21, 2007 2:44 pm
Fallman
Доступ к ком-портам под виндой осуществляется только в монопольном режиме. Для доступа другой проги надо закрыть порт. Не нравится? Пиши свой драйвер COM-порта, который сможет работать с разными хэндлами и структурами DCB для одного физ. девайса.

СообщениеДобавлено: Ср фев 21, 2007 3:00 pm
Âèòàëèê
Я так понял, из делфы никак нельзя открыть ком порт не в монопольном режиме? Может можно как-нить заюзать системные dll, или может ещё чё-нить? не верю что нету выхода... Драйвер сам я конечно написать не смогу, не дорос ещё... Но вот винда ведь умеет разные приложения юзать, когда к ком порту даже обычный мопед подключен и соединен с сервером интернет. Должны, наверное, быть какие-то API-шные функции, позволяющие это сделать... у меня уже неделю мозги кипят, я так ничего и не добился......

СообщениеДобавлено: Ср фев 21, 2007 3:39 pm
leave
а что, по

http://www.google.com/search?client=ope ... 8&oe=utf-8

ничего нет?

СообщениеДобавлено: Ср фев 21, 2007 3:51 pm
Âèòàëèê
даров =)

пасиба за ссылку, я её сохранил ещё вчера, тока не успел порыться там. сегодня полазю, но вопрос решил таки бросить здесь, авось быстрее будет =)

СообщениеДобавлено: Ср фев 21, 2007 6:04 pm
Fallman
$this->bbcode_second_pass_quote('Виталик', '')з делфы никак нельзя открыть ком порт не в монопольном режиме?

Причём здесь Дельфи? Это фича Windows. Не умеет винда раскидывать потоки данных в/из ком-порта на разные проги. Здесь должен быть отдельный менеджер каналов, обработчик ошибок, короче навёрнутый механизм, коего в винде просто нет и не предвидится. Ты сам прикинь, если на порту возникла ошибка, то в какой DCB она должна передаться или, другими словами, какая прога её будет обрабатывать? Яж тебе сказал, пиши отдельный коммуникационный слой, со своим API, заменяющий виндовзный и проги поддерживающие этот API и будет те счастье (ИМХО лет через пять)...

СообщениеДобавлено: Ср фев 21, 2007 7:41 pm
savely
Fallman прав.
Хм, в данном случае, я бы скорее играл из ДОС... Т.е. ДОС-прога набирает номер, а потом из себя стартует нужную прогу без разрыва соединения... Да и работа с NT-like и W9x - есть разница...
Хотя - темен, док не читал, в этой области никогда не программил...

Общая оценка - удаленно это решить сложно...

СообщениеДобавлено: Чт фев 22, 2007 4:33 pm
Âèòàëèê
Короче понял я, бросаю попытку расшарить порт из делфы, и пытаюсь чё-нить с дос прогой делать =)
Пасибо за ответ =)