Я хочу использовать модем 56K для получения номера телефона того, кто звонит на домашний телефон. Есть ли способ добиться этого с помощью С#?
Как получить идентификатор вызывающего абонента в С#?
Ответы (3)
Не все модемы поддерживают определитель номера. А для тех, кто это делает, реализация зависит от производителя.
Идентификатор вызывающего абонента передается через последовательные данные, поэтому вам придется использовать библиотека TAPI (или Windows HyperTerminal для проверки). Идентификационный номер вызывающего абонента обычно появляется между первым и вторым звонком.
Вам нужно будет дать команду модему, чтобы активировать определитель номера. Обычно:
AT#CID=1
(orAT+VCID=1
)OK
Проверьте документацию для вашего модема.
При поступлении вызова модем получает строку вызова. Обычно:
RING
Затем придет текст идентификатора вызывающего абонента. Если я правильно помню, он будет в виде:
NMBR=XXXXXXXXXX
[Я ищу ссылку. Я опубликую ссылку, когда найду ее]
ОБНОВЛЕНИЕ: А, нашел. На этой странице вы найдете команды и строки подключения для различных модемов:
Как протестировать модем для поддержки определителя номера
Это возможно, но есть некоторые вещи, на которые следует обратить внимание:
- Вам по-прежнему необходимо иметь идентификатор вызывающего абонента, поддерживаемый вашим оператором связи/провайдером. Базовая линия POTS не будет включать эту информацию, если только оператор не проделал дополнительную работу по ее добавлению. Таким образом, вы не можете сделать это, чтобы не платить дополнительную плату за определение номера вызывающего абонента.
- Он не встроен в .Net. Вам придется вызвать базовую библиотеку TAPI. Сам я никогда не работал с этой библиотекой, так что это все, что я могу вам сказать.
серийныйПорт1.Открыть(); serialPort1.WriteLine("AT#cid=1" + System.Environment.NewLine); // где serialPort1 — это управление последовательным портом, подробнее см. следующую ссылку: http://www.itworld2.com/frmsCsharp.aspx