Форум: "WinAPI";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];
ВнизРабота через модем в режиме ЗАПРОС-ОТВЕТ Найти похожие ветки
← →
novikova (2006-01-23 08:35) [0]Уважаемые Мастера.
Сейчас осваиваю премудрости работы через модем. задача следующая:
Дано: 2 компьютера.Каждый через модем подключен к своей телефонной линии.
Требуется: организовать дуплексный обмен между ними по принципу Запрос - ответ. То есть, ведущий компьютер выдает запрос в виде кадра (их может быть несколько разновидностей) через модем, а в ответ ведомый должен выдать тоже кадр - другой (в зависимости от типа запроса).
Все разновидности протоколов передачи данных для модемов не дают такой возможности.
Можно ли что-нибудь сделать, или это не лечится?
← →
Digitman © (2006-01-23 10:39) [1]
> это не лечится?
Не лечится.
Потому что это не болезнь.
> Можно ли что-нибудь сделать
Разработать и реализовать прикладной протокол информационного обмена между программами, работающими по разные стороны соединения.
← →
Anatoly Podgoretsky © (2006-01-23 11:00) [2]novikova (23.01.06 08:35)
Это вообще то симплекс.
Разрабатывай свой протокол обмена, на указаном принципе.
← →
novikova (2006-01-23 11:40) [3]Да протокол то есть, и без модема (через RS-232) он работает (обмен данными с аппаратурой), а вот как перенести его на модем - не знаю. Пугает пример протокола X-modem, где данные передаются только в одном направлении и эти символы ASC/NAC...
← →
novikova (2006-01-23 11:54) [4]Вообще, можно ли передавать свои данные (любые) и принимать их с удаленного модема просто так, без ухищрений или же модем требует обязательного оформления начало-конец, подтверждение?
← →
Digitman © (2006-01-23 11:57) [5]
> протокол то есть, и без модема ..он работает (обмен данными с аппаратурой),
Это не тот протокол.
Речь в дан.случае идет о протоколе инф.обмена между ПРОГРАММАМИ, одна из которых посредством модемного соединения управляет работой другой программы (той самой которая работает на компьютере, к которому подключена "аппаратура")
← →
novikova (2006-01-23 12:00) [6]Как же мне сделать этот фокус, чтобы программы "разговаривали" между собой через модемы. Подскажите, а то я совсем запуталась...
← →
Digitman © (2006-01-23 12:06) [7]
> можно ли передавать свои данные (любые) и принимать их с
> удаленного модема просто так, без ухищрений
Можно. Но смотря что считать "ухищрениями" ..
> модем требует обязательного оформления начало-конец, подтверждение
Это - транспортный уровень, он не имеет ничего общего с прикладным уровнем, по OSI-иерархии находящемся НАД транспортным.
На транспортном уровне драйверы обоих модемов "разговаривают" меж собой, нисколь не заботясь о содержимом данных, которые они "гоняют".
Самая первая задача транспортного уровня - с определенной долей гарантии доставить данные (неважно какого содержимого) партнеру по соединению и , возможно, получить подтверждение их доставки.
Первая же задача прикладного уровня - сформировать+отправить/принять+распознать некий набор неких конкретных данных при посредничестве низлежащего транспортного уровня.
← →
Digitman © (2006-01-23 12:11) [8]
> novikova (23.01.06 12:00) [6]
см. RAS API ... готовое решение всех низлежащих уровней, вплоть до транспортного включительно
При использовании RAS API проблемы организации "разговора" меж собой модемов не существует - они сами договорятся меж собой, как передавать принимать данные.
Твоим приложениям, использующим RAS API , остается лишь передавать для отправки / получать принятые данные, нимало не заботясь о том как это делают модемы "изнутри"
← →
novikova (2006-01-23 12:40) [9]Для компьютеров, может это и подойдет. Проблема в том, что на принимающей стороне будет не комп, а цифровое устройство, подсоединенное к модему, а там я не смогу реализовать RAS API (пока не знаю, что это такое)
← →
Reindeer Moss Eater © (2006-01-23 12:50) [10]Возьми пакет AsyncPro на SourceForge.net
Удовлетворит все твои потребности на 300 %
← →
novikova (2006-01-23 13:56) [11]
> Первая же задача прикладного уровня - сформировать+отправить/принять+распознать
> некий набор неких конкретных данных при посредничестве низлежащего
> транспортного уровня.
каким же образом, я не понимаю. можно пояснить это "на пальцах". как передать свой кадр через модем?
← →
Reindeer Moss Eater © (2006-01-23 14:10) [12]Вот так передавать
FileWrite(дескриптор порта,адрес буфера,длина буфера)
← →
novikova (2006-01-23 15:46) [13]То есть, я могу просто в модем передать свои данные через WriteFile и он их перекачает удаленному модему.Так?
← →
Reindeer Moss Eater © (2006-01-23 15:51) [14]Приблизительно так.
← →
wal © (2006-01-23 16:01) [15]
> [13] novikova (23.01.06 15:46)
После установки соединения, когда оба модема из командного режима перешли в режим данных. За исключением исключений, таких как XON-XOFF (если используется), +++, больше так на вскидку не вспоминается.
← →
Digitman © (2006-01-23 16:04) [16]
> То есть, я могу просто в модем передать свои данные через
> WriteFile и он их перекачает удаленному модему.Так?
Под тем что происходит в недрах ф-ции WriteFile() в дан.случае как раз и скрывается все то что лежит ниже прикладного протокола в иерархии протоколов.
Приложению, вызвавшему WriteFile(), начхать на то как используемый им модем передаст указанные данные другому модему на другом "конце Вселенной".
← →
Anatoly Podgoretsky © (2006-01-23 16:25) [17]Также наплевать, будет ли что ни будь подключено к порту.
← →
novikova (2006-01-23 16:26) [18]А в каком виде будет принят мой кадр на удаленном модеме, то есть что он передаст по RS-232 на подключенное к нему устройство. Функция ReadFile поможет только компу, а как быть с другими устройствами?
← →
ECM © (2006-01-23 16:33) [19]
> 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:35) [20]Я имела в виду, мои данные будут иметь обрамление, согласно выбранному протоколу(начало, конец, CRC) или еще что-нибудь. Как мне их расшифровывать?
← →
Digitman © (2006-01-23 16:36) [21]
> Функция ReadFile поможет только компу, а как быть с другими
> устройствами?
Фуннкция Read/WriteFile поможет не какому-то там "компу", а конкретно твоему приложению, т.е. тебе как программисту.
Они, эти самые ф-ции Read/WriteFile, абстрагированы до максимально возможного уровня - тебе ровным счетом наплевать, КАКОЕ КОНКРЕТНО устройство осуществляет инф.обмен с другим аналогичным устройством на другом конце света, будь то модем или каой-нть "лазерный глюкоид"...
> в каком виде будет принят мой кадр
в том же виде в каком он был передан
← →
novikova (2006-01-24 08:27) [22]А как "сказать" модему, что ESCAPE-последовательность в моем кадре являются данными, а не сигналом к переходу в командный режим?
← →
novikova (2006-01-24 08:30) [23]Уже нашла...
← →
Anatoly Podgoretsky © (2006-01-24 09:10) [24]novikova (24.01.06 08:27) [22]
См. ECM © (23.01.06 16:33) [19]
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2006.04.09;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.013 c