2013-04-04 4 views
0

У меня есть режим GSMMM, подключенный к последовательному порту, и я использую его для отправки SMS-сообщений на определенные события.Проверить подключение к порту GSM-модема Состояние подключения

Поскольку это не Plug-and-Play, я смущен тем, как я узнаю его статус соединения. Win API, например, GetCommState, очевидно, не работают.

Я мог периодически отправлять пакеты данных и проверять, потребляются ли данные или нет, но я опасаюсь риска опроса по производительности и забивания буферов, которые могут быть использованы.

Итак, есть ли какой-либо другой метод или какая-либо функция, основанная на прерываниях, которую я мог бы использовать, чтобы проверить, все ли подключен через последовательный порт к моей системе?

Буду благодарен за любую помощь по этому вопросу.

Спасибо.

ответ

0

Начиная с Windows 7, используйте Windows Mobile Broadband API, чтобы получить информацию о GSM-модемом.

+0

Может быть, не просто Windows 7. Нужно работать и с Vista, и с XP. – user1173240

+0

AT-команды, как говорит HansPassant. Руководство по стандартным командам GSM AT находится по адресу http://www.3gpp.org/ftp/Specs/html-info/27007.htm. –

0

Последовательные порты - очень примитивные устройства связи, они датируются с самых первых дней вычислений. Это то, к чему вы подключили свой телеттип ASR-33, чтобы начать стучать в вашей программе Fortran. Единственная причина, по которой они все еще существуют, - , потому что они просты, аппаратные поставщики, подобные им, потому что им не нужно тратить деньги на разработку и поддержку пользовательского api для использования своего устройства.

Тем не менее, еще в шестидесятых годах компьютер нуждался в том, чтобы узнать, был ли установлен телетайп. Это делается с помощью аппаратных сигналов подтверждения. Сигнал DSR, готовый набор данных, включается устройством при его включении. Если вы используете класс .NET SerialPort, вы можете проверить этот сигнал с помощью свойства SerialPort.DsrHolding. Если вы используете winapi, используйте флаг GetCommModemStatus(), MS_DSR_ON.

Это еще только говорит вам, что устройство прилагается. Если вы хотите узнать, что это модем, на который вы написали свою программу, вы можете опросить его с помощью AT commands, протокола, характерного для модемов. Никакой поставщик не реализует этот точно так же, но вы можете рассчитывать на идентификацию модема с помощью команды ATI. Подробнее см. Руководство по программированию модема.

+0

Я попытался с 'GetCommModemSatus()', но, похоже, не может заставить его работать. Не могли бы вы дать мне пример того, как его использовать. И условие проверки. Он всегда возвращает нечетные переменные в моем случае. – user1173240

Смежные вопросы