GSM-модемы
GSM-модемы, это небольшие устройства в виде флешки, подключаемые к USB-порту компьютера и способные передавать данные и голос через мобильные сети GSM.
Далеко не все модемы этого типа обладают возможностью выполнять голосовые звонки, кроме того, возможность выполнять голосовые звонки может быть заблокирована оператором связи, у которого вы приобрели модем. Поэтому наличие голосовых функций у GSM-модема следует уточнять перед покупкой модема.
Определение наличия голосовых функций модема
Для рассылки или приёма SMS наличие голосовых функций не имеет значения, однако для автоматического обзвона или для работы в качестве программного автоответчика GSM-модем должен иметь голосовые функции. Проанализировав журнал работы программы, можно определить наличие или отсутствие голосовых функций у модема.
Если в журнале присутствует строка
AT^DDSETEX?<cr> - <cr><lf>ERROR<cr><lf>
значит, модем не имеет голосовых функций.
Если же строка имеет вид:
AT^DDSETEX?<cr> - <cr><lf>OK<cr><lf>
значит, модем поддерживает приём и передачу голоса.
Программа DC-Unlocker пишет voice Enabled. Программа провайдера телефонной связи звонит через модем нормально
DC-Unlocker, во-первых, не всегда пишет правильно, а во-вторых, голос может быть разрешен, но отключен. В некоторых случаях его можно включить командой AT^CVOICE=0.
Стандартные программы провайдеров сотовой связи, устанавливающиеся вместе с модемом, звонят, используя возможности модема по передаче данных, а не голосовые функции. Так что это никак не говорит о доступности голосовых функций модема.
Получение баланса
Для получения баланса (функцией GetBalance) SIM-карты необходимо в строке открытия устройства указать USSD запрос на получение баланса вашего оператора связи. Например, для оператора Билайн запрос будет иметь вид:
BalanceQuery=*102#; Полная строка соединения будет выглядеть так: "Modem\\COM6;BalanceQuery=*102#;"
Помимо этого доступны еще ряд параметров:
- BalanceEncoding - кодировка USSD запроса, допустимы значения: None, 7bit, UCS2;
- BalanceDecoding - декодировка USSD запроса, допустимы значения: None, UCS2;
- BalanceExtract - регулярное выражение для извлечения значения баланса из USSD ответа. Регулярное выражение в формате регулярных выражений с++. Например: BalanceExtract={[0-9\.]*}р;