Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
2-1143045604
Fenix
2006-03-22 19:40
2006.04.09
Повернуть горизонтально TreeView


2-1143021945
Lexa11_2002
2006-03-22 13:05
2006.04.09
Динамические массивы


2-1142857616
id
2006-03-20 15:26
2006.04.09
Путь при запросе пароля


2-1143393140
Bogdan1024
2006-03-26 21:12
2006.04.09
Неудобная TChart


2-1143056917
49 Cent
2006-03-22 22:48
2006.04.09
Как сортировать по убыванию?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский