Прямой доступ к модему в Windows Mobile - PullRequest
3 голосов
/ 15 июня 2009

По некоторым причинам мне нужно иметь доступ к внутреннему модему смартфона Windows Mobile (HTC s740 с WM версии 6.1). Я хочу иметь доступ к нему, как к последовательному порту, для подачи AT-команд.

У меня есть код, который использует интерфейс TAPI Line и lineGetID (), чтобы получить «дескриптор», с которым я должен иметь возможность выполнять ReadFile () / WriteFile (). К сожалению, я не получил его на работу.

Что я делаю в настоящее время:

  1. Инициализация TAPI с помощью lineInitializeEx ()

  2. Открыть строку с помощью lineOpen ()

  3. Перебирать каждое доступное устройство и получать информацию. В настоящее время я выбираю устройство "UNIMODEM" / "Hayes, совместимое с COM1". Но, может быть, мне стоит вместо этого выбрать «TAPI сотовая связь» / «Сотовая линия»? Я попробовал устройство "Сотовая линия" с тем же результатом.

  4. Используйте lineGetID () на выбранном устройстве, чтобы получить дескриптор.

  5. Выполните WriteFile ("AT \ r"), а затем непосредственно выполните ReadFile (), которое должно вернуть мне "OK", если это действительно был модем, к которому я обращался.

  6. Поймите, что это не работает, и раздражайтесь ...

Но до сих пор это было запрещено.

Кто-нибудь знает, как это сделать?

Я делаю это в Native WIN32 C ++ в Windows Mobile 6 SDK.

UPDATE: До сих пор мне удалось получить соединение для передачи данных между двумя телефонами, используя RIL, что дает мне дескриптор последовательного порта для записи и чтения. НО, я все еще хотел бы иметь возможность напрямую взаимодействовать с модемом для отправки AT-команд. Итак, награда, которую я начинаю, касается только получения прямого доступа к модему для предоставления AT-команд. Мои исследования пока показывают, что это было возможно в предыдущих версиях Windows Mobile (открыв COM2 и / или COM9 и убив RIL, или что-то подобное), но я еще не видел код, который работает на WM6.

Ответы [ 2 ]

1 голос
/ 11 апреля 2010

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

0 голосов
/ 16 июня 2009

Я не уверен, что вы можете использовать дескриптор из lineGetID с функциями WriteFile / ReadFile. Это низкоуровневые функции, которые (вероятно) нельзя использовать с TAPI.

Я бы попытался открыть COM-порт с помощью CreateFile, получить дескриптор и затем использовать функции WriteFile и ReadFile. В MSDN есть старая классическая статья ( Serial Communications в Win32 ), которая описывает эту технику.

Однако у меня нет опыта программирования на Windows Mobile, поэтому я не уверен, что он будет работать для вас.

...