Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Сети > Список поддерживаемых скоростей модема


Автор: Chow 17.1.2007, 11:22
Нашел лишь для обычного СОМ-порта.
Структура COMMPROP, там есть поле
Код

DWORD dwSettableBaud; // allowable baud rates

Где по каждому биту можна узнать поддерживается ли та или иная скорость...

Есть что-то подобное для модема?

Делаю некий модем-пулл (так называемое логическое устройство которое содержит набор физических модемов).
Так вот, дело в том, что модемы могут быть разных моделей, марок и т.д. в контексте одного лог. устройства.
И вот когда пользователь некотороему соеденению будет задавать тот или иной лог. девайс - то чтобы возможность задать скорость соеденения была только такая - которою поддерживают ВСЕ физ.устройства в контексте выбраного логического.
Иными словами надо создать некоторое логическое И-пересечение списка поддреживаемых скоростей.

Автор: BlackStar 18.1.2007, 12:30
Могу предположить что скорость модема можно получить какой-нибудь командой AT.

Автор: Chow 18.1.2007, 12:32
Цитата(BlackStar @  18.1.2007,  12:30 Найти цитируемый пост)
Могу предположить что скорость модема можно получить какой-нибудь командой AT.

Дело в том, что мне нужна не текущая (установленная скорость), а список скоростей, которые модем поддерживавет.

Автор: ptr 18.1.2007, 14:51
Цитата(Chow @  18.1.2007,  15:32 Найти цитируемый пост)
Дело в том, что мне нужна не текущая (установленная скорость), а список скоростей, которые модем поддерживавет.

Список скоростей зависит от стандарта, который поддерживает модем.

Автор: Chow 18.1.2007, 15:05
Цитата(ptr @  18.1.2007,  14:51 Найти цитируемый пост)
Список скоростей зависит от стандарта, который поддерживает модем.

Хорошо. Как узнать стандарт, который поддерживает модем?

Автор: ptr 22.1.2007, 07:39
Использовать AT-команды.

Автор: Chow 22.1.2007, 10:23
ptr, какие именно?!

Автор: dumb 22.1.2007, 12:23
Chow, ATIn, где n - число, которое у разных производителей отличается. а может и просто не быть такой инфы, где список скоростей выводится.
скорее всего, тебе придется делать обычную табличку "девайс-скорости"...

Автор: Chow 23.1.2007, 15:41
Код

AnsiString name = "\\\\.\\Standard  1200 bps Modem";
  HANDLE hand = CreateFile(name.c_str(), GENERIC_READ | GENERIC_WRITE,0,NULL,OPEN_EXISTING, 0, NULL);
  if (hand != INVALID_HANDLE_VALUE)
  {
    int size = sizeof(COMMPROP) + sizeof(MODEMDEVCAPS);
    COMMPROP *commStruct = (COMMPROP *)malloc(size);
    memset(commStruct, 0, size);
    commStruct->wPacketLength = size;
    commStruct->dwProvSpec1 = COMMPROP_INITIALIZED;
    if (GetCommProperties(hand, commStruct))
    {
      commStruct.dwProvSubType;  // тут PST_MODEM - нормально
      commStruct.dwSettableBaud; // тут 0x1006FFFF - ПЛОХО!!!
    }
  }


Как получить корректное значение dwSettableBaud?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)