Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие _ Создание сетевого подключения на PC

Автор: Make_Pic 31.8.2014, 9:51

Помогите пожалуйста. Как можно из программы, которую я пишу для фирмы в Qt4.8 сделать так, чтобы она (программа)создавала модемное сетевое подключение в системе WIN XP,7, а потом его запускала т.е. делала коннект (имитировало нажатие кнопки "Вызов") и прерывало его когда необходимо (кнопка "Отмена")? Можно посмотреть примеры такого приложения на Qt?
Возможно этоделается не так, а по другому - подскажите пожалуйста.
P.S. Используется виртуальный COM порт на PС. Мне поставили задачу, добавить в мою программу что то наподобие примитивного коннект менеджера 3G модема, подключенного чере USB виртуальный COM порт.

Автор: FireBlack 1.9.2014, 7:54

Цитата(Make_Pic @ 31.8.2014, 9:51) *
Помогите пожалуйста. Как можно из программы, которую я пишу для фирмы в Qt4.8 сделать так, чтобы она (программа)создавала модемное сетевое подключение в системе WIN XP,7, а потом его запускала т.е. делала коннект (имитировало нажатие кнопки "Вызов") и прерывало его когда необходимо (кнопка "Отмена")? Можно посмотреть примеры такого приложения на Qt?
Возможно этоделается не так, а по другому - подскажите пожалуйста.
P.S. Используется виртуальный COM порт на PС. Мне поставили задачу, добавить в мою программу что то наподобие примитивного коннект менеджера 3G модема, подключенного чере USB виртуальный COM порт.

Судя по всему Вам надо через COM порт подключиться к GPRS модему, установить соединение и дальше использовать обычное сетевое?!

Для работы с COM портом начиная с Qt 5.1 был введен класс QSerialPort. Но т.к. Вы используете Qt 4.8, то придется использовать другие, похожие библиотеки, например http://sourceforge.net/projects/qextserialport/.

Чтобы установить соединение необходимо использовать AT-команды, о которых можно почитать в интернете, например http://3ginfo.ru/page53.html или http://www.gprs-gsm.ru/gprs_tuning.php.
В общем случае, для Huawei модемов используется следующая последовательность команд:
посылаем ATE1
модем отвечает OK
посылаем AT+CGDCONT=1,"IP","internet"
модем опять отвечает OK
далее устанавливаем соединение командой ATD*99#
если модем отвечает CONNECT, значит соединение установлено.
(Конечно набор команд зависит от самого модема и используемого оператора. Я бы рекомендовал сначала, попробовать установить соединение вручную через терминал, а уж потом реализовывать все это в коде)

Ну а после установления соединения можно использовать обычный QtNetwork.

Автор: Make_Pic 4.9.2014, 4:58

Цитата(FireBlack @ 1.9.2014, 10:54) *
Ну а после установления соединения можно использовать обычный QtNetwork.

Как делать соединение на модеме я знаю, как работать с COM портом из Qt то же разобрался (только вопрос остался по Qt5 и встроенному в эту версию QtSerialport - Остался баг с подтрмаживанием обмена по COM порту при перемещении или изменении размеров окна?).
Вопрос мой был в другом, а именно Я ий Ot сделал AT командами соединение с интернетом в самом модеме 3G, но как теперь с COM порта перенаправить поток, подключение в PC WIN 7, так чтобы программы имели доступ в интернт, короче было нормальное подключение к интернету чере 3G модем? Через мастер подключений в самом WIN 7 это я делаю с модемом без проблем.

Автор: FireBlack 4.9.2014, 8:30

Цитата(Make_Pic @ 4.9.2014, 5:58) *
Остался баг с подтрмаживанием обмена по COM порту при перемещении или изменении размеров окна?

Это связано с тем, что судя по всему, у Вас работа с COM портом производится в основном потоке, где обрабатываются события интерфейса. И Вам следует создать специальный http://qt-project.org/doc/qt-5/qthread.html для работы с COM портом.

Цитата(Make_Pic @ 4.9.2014, 5:58) *
...чтобы программы имели доступ в интернт, короче было нормальное подключение к интернету чере 3G модем

Теоретически, после установления соединения должно появится новое сетевое подключение, через которое все программы и будут выходить в интернет.
Если его нет, то прошу прощения, значит мое предположение не верно. И Вам проще всего использовать дополнительное ПО для установления соединения. В Linux'е, я бы использовал http://en.wikipedia.org/wiki/WvDial. Под винду в интернете нашел:
http://www.codeproject.com/Articles/120638/G-Modem-Internet-Dialer - софтину с интерфейсом, в исходном коде которой можно посмотреть как это делается;
http://dotras.codeplex.com/ - библиотеку, которую можно использовать для установления соединения;
http://radekp.github.io/qtmoko/api/qtcellmodule.html - модуль для работы с телефонией;
и http://msdn.microsoft.com/en-us/library/aa384005.aspx - для программного создания соединения.
Что из этого подойдет не знаю, тут только пробовать надо.

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)