![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа через модем в режиме ЗАПРОС-ОТВЕТ [D6, WinXP]
novikova © (2006-01-23 08:35:00)Уважаемые Мастера.
Сейчас осваиваю премудрости работы через модем. задача следующая:
Дано: 2 компьютера.Каждый через модем подключен к своей телефонной линии.
Требуется: организовать дуплексный обмен между ними по принципу Запрос - ответ. То есть, ведущий компьютер выдает запрос в виде кадра (их может быть несколько разновидностей) через модем, а в ответ ведомый должен выдать тоже кадр - другой (в зависимости от типа запроса).
Все разновидности протоколов передачи данных для модемов не дают такой возможности.
Можно ли что-нибудь сделать, или это не лечится?
Anatoly Podgoretsky (2006-01-24 09:10:00) [1]novikova (24.01.06 08:27) [22]
См. ECM © (23.01.06 16:33) [19]
novikova (2006-01-24 08:30:00) [2]Уже нашла...
novikova (2006-01-24 08:27:00) [3]А как "сказать" модему, что ESCAPE-последовательность в моем кадре являются данными, а не сигналом к переходу в командный режим?
Digitman (2006-01-23 16:36:00) [4]
> Функция ReadFile поможет только компу, а как быть с другими
> устройствами?
Фуннкция Read/WriteFile поможет не какому-то там "компу", а конкретно твоему приложению, т.е. тебе как программисту.
Они, эти самые ф-ции Read/WriteFile, абстрагированы до максимально возможного уровня - тебе ровным счетом наплевать, КАКОЕ КОНКРЕТНО устройство осуществляет инф.обмен с другим аналогичным устройством на другом конце света, будь то модем или каой-нть "лазерный глюкоид"...
> в каком виде будет принят мой кадр
в том же виде в каком он был передан
novikova (2006-01-23 16:35:00) [5]Я имела в виду, мои данные будут иметь обрамление, согласно выбранному протоколу(начало, конец, CRC) или еще что-нибудь. Как мне их расшифровывать?
ECM (2006-01-23 16:33:00) [6]
> wal © (23.01.06 16:01) [15]
> За исключением исключений, таких как ...
> +++,
Точнее +++ три плюса тоже можно передавать в режиме данных (для выхода из режима нужны еще и паузы до и после) :
+++
This is the default escape sequence. Transfers the modem from data mode to command mode. Must be preceded by at least 1 second of no characters and followed by one second of no characters. O0 (ATO0 or ATO) returns the modem to data mode.
novikova (2006-01-23 16:26:00) [7]А в каком виде будет принят мой кадр на удаленном модеме, то есть что он передаст по RS-232 на подключенное к нему устройство. Функция ReadFile поможет только компу, а как быть с другими устройствами?
Anatoly Podgoretsky (2006-01-23 16:25:00) [8]Также наплевать, будет ли что ни будь подключено к порту.
Digitman (2006-01-23 16:04:00) [9]
> То есть, я могу просто в модем передать свои данные через
> WriteFile и он их перекачает удаленному модему.Так?
Под тем что происходит в недрах ф-ции WriteFile() в дан.случае как раз и скрывается все то что лежит ниже прикладного протокола в иерархии протоколов.
Приложению, вызвавшему WriteFile(), начхать на то как используемый им модем передаст указанные данные другому модему на другом "конце Вселенной".
wal (2006-01-23 16:01:00) [10]
> [13] novikova (23.01.06 15:46)
После установки соединения, когда оба модема из командного режима перешли в режим данных. За исключением исключений, таких как XON-XOFF (если используется), +++, больше так на вскидку не вспоминается.
Reindeer Moss Eater (2006-01-23 15:51:00) [11]Приблизительно так.
novikova (2006-01-23 15:46:00) [12]То есть, я могу просто в модем передать свои данные через WriteFile и он их перекачает удаленному модему.Так?
Reindeer Moss Eater (2006-01-23 14:10:00) [13]Вот так передавать
FileWrite(дескриптор порта,адрес буфера,длина буфера)
novikova (2006-01-23 13:56:00) [14]
> Первая же задача прикладного уровня - сформировать+отправить/принять+распознать
> некий набор неких конкретных данных при посредничестве низлежащего
> транспортного уровня.
каким же образом, я не понимаю. можно пояснить это "на пальцах". как передать свой кадр через модем?
Reindeer Moss Eater (2006-01-23 12:50:00) [15]Возьми пакет AsyncPro на SourceForge.net
Удовлетворит все твои потребности на 300 %
novikova (2006-01-23 12:40:00) [16]Для компьютеров, может это и подойдет. Проблема в том, что на принимающей стороне будет не комп, а цифровое устройство, подсоединенное к модему, а там я не смогу реализовать RAS API (пока не знаю, что это такое)
Digitman (2006-01-23 12:11:00) [17]
> novikova (23.01.06 12:00) [6]
см. RAS API ... готовое решение всех низлежащих уровней, вплоть до транспортного включительно
При использовании RAS API проблемы организации "разговора" меж собой модемов не существует - они сами договорятся меж собой, как передавать принимать данные.
Твоим приложениям, использующим RAS API , остается лишь передавать для отправки / получать принятые данные, нимало не заботясь о том как это делают модемы "изнутри"
Digitman (2006-01-23 12:06:00) [18]
> можно ли передавать свои данные (любые) и принимать их с
> удаленного модема просто так, без ухищрений
Можно. Но смотря что считать "ухищрениями" ..
> модем требует обязательного оформления начало-конец, подтверждение
Это - транспортныйуровень, он не имеет ничего общего с прикладнымуровнем, по OSI-иерархии находящемся НАД транспортным.
На транспортном уровне драйверы обоих модемов "разговаривают" меж собой, нисколь не заботясь о содержимом данных, которые они "гоняют".
Самая первая задача транспортного уровня - с определенной долей гарантии доставить данные (неважно какого содержимого) партнеру по соединению и , возможно, получить подтверждение их доставки.
Первая же задача прикладного уровня - сформировать+отправить/принять+распознать некий набор неких конкретныхданных при посредничестве низлежащего транспортного уровня.
novikova (2006-01-23 12:00:00) [19]Как же мне сделать этот фокус, чтобы программы "разговаривали" между собой через модемы. Подскажите, а то я совсем запуталась...
Digitman (2006-01-23 11:57:00) [20]
> протокол то есть, и без модема ..он работает (обмен данными с аппаратурой),
Это не тот протокол.
Речь в дан.случае идет о протоколе инф.обмена между ПРОГРАММАМИ, одна из которых посредством модемного соединения управляет работой другой программы (той самой которая работает на компьютере, к которому подключена "аппаратура")