如何在C#中获取来电者ID?

10

我想用56K调制解调器获取给家庭电话打来的号码。是否有办法用C#实现这一点?


1
真棒,每次电话响时只需弹出一个弹窗或类似提示。不足之处在于:现在谁还有座机呢... - tsilb
您应该说明调制解调器型号。启用来电显示在不同的调制解调器之间有所不同。USRobotoics调制解调器需要与Conexant调制解调器不同的AT命令。 - jww
3个回答

18

并非所有调制解调器都支持来电显示功能。而且,对于那些支持该功能的调制解调器,在不同的制造商之间实现方式也是不同的。

来电显示信息通过串行数据传输,因此您需要使用TAPI库(或Windows的HyperTerminal进行测试)才能获取到它。来电号码通常会在第一声响铃和第二声响铃之间出现。

您需要向调制解调器发送命令以激活来电显示功能。通常为:

AT#CID=1(或 AT+VCID=1

OK

请查看调制解调器的文档。

当有电话呼入时,调制解调器将接收到呼叫字符串。通常为:

RING

然后呼叫者ID文本将进来。如果我没记错的话,它的形式为:

NMBR=XXXXXXXXXX

[我正在寻找一个参考链接。我找到后会贴上链接]

更新:啊,找到了一个。请查看此页面以获取各种调制解调器的命令和连接字符串:

如何测试调制解调器是否支持来电显示功能


好的,我会在家里尝试一下,如果你能提供参考资料就太好了。谢谢。 - zer0w1dthspace
我爱你罗伯特!每个人都有AT#CID = 1,但它没有起作用。我尝试了AT + VCID = 1,它起作用了。 - Magood

5

这是可能的,但有一些关于它的事情你应该注意:

  • 你仍然需要由你的运营商支持的来电显示功能。基本的POTS线路不会包含这些信息,除非运营商进行了额外的工作来添加它。所以你不能通过这种方式避免支付额外的来电显示费用。
  • 它并没有内置在.Net中。你需要调用基本的TAPI库。我自己从未使用过这个库,所以这就是我能告诉你的全部。

我确定我的电话线支持来电显示,因为电话屏幕上显示了来电号码。我会继续使用TAPI,谢谢。 - zer0w1dthspace

3

serialPort1.Open(); // 打开串口 serialPort1.WriteLine("AT#cid=1" + System.Environment.NewLine); // 发送指令 "AT#cid=1" 到串口,其中 serialPort1 是串口控制器 更多细节请参考以下链接:http://www.itworld2.com/frmsCsharp.aspx


哦,我不知道你可以使用WriteLine方法添加那些字符串命令.. 谢谢(不过链接好像失效了) - Vasile Surdu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接