如何在c#.net中创建来电显示

我知道这是一个已回答的问题,但我想了解所需的硬件以及如何设置。

我正在尝试构建一个外卖的传送系统,其中用户呼叫并且他们的电话号码在WINFORM上被捕获。

我google了,它说我需要使用TAPI API。 这很好,但我需要将任何东西连接到PC或只使用TAPI工作吗?

此链接在VB.net中解释它。 我在c#.net中寻找它。 我也浏览了这里提供的链接。

但它无处解释设置。 所以请帮忙。

第一件事

  • 查看您的硬件是否支持来电显示
  • 添加串口控制,将其设置为调制解调器所在的任何通信端口,并观察CALLER ID号,然后做出反应

要查看您的调制解调器是否支持来电显示打开串口终端(我喜欢腻子)并将其设置为调制解调器的COM端口,然后拨打附加到该调制解调器的电话号码,您应该看到类似RING 5555555555(其中5555555555是给你打电话的人的电话号码)

您可能必须为该调制解调器打开来电显示(如果是)

1)打开“电话和调制解调器选项”控制面板

2)单击“调制解调器”选项卡

3)在列表中选择您的调制解调器(如果尚未选择)

4)单击“属性”按钮

5)单击“高级”选项卡

6)在“额外初始化命令”编辑框中键入“#CID = 1”注意:将“#CID = 1”替换为在调制解调器上启用呼叫者ID的命令不要包含命令的“AT”部分包括引号7)单击“确定”

8)单击“确定”

9)重启电脑

这是一些与c#中的串口交互的代码(如果你需要)

public SerialPort sp; string dataReceived = string.Empty; private delegate void SetTextDeleg(string text); private void FormLoad() { sp = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); this.sp.DataReceived += new SerialDataReceivedEventHandler(sp_DataReceived); sp.Open(); } void sp_DataReceived(object sender, SerialDataReceivedEventArgs e) { try { Thread.Sleep(500); string x = sp.ReadLine(); // will read to the first carriage return this.BeginInvoke(new SetTextDeleg(si_DataReceived), new object[] { x }); } catch { } } private void si_DataReceived(string data) { dataReceived = data.Trim(); // Do whatever with the data that is coming in. } 

此外,我只是搜索亚马逊的“来电显示调制解调器”,似乎有很多10至20美元(美国)支持这种确切的用途。 我推荐Trendnet TFM-561U

如果您使用的是电话和传真调制解调器,只需将电话线插入调制解调器即可。

接下来在Windows窗体上拖放一个SerialPort控件并初始化它。

  this.serialPort1.PortName = "COM3"; this.serialPort1.BaudRate = 9600; this.serialPort1.DataBits = 8; this.serialPort1.RtsEnable = true; this.serialPort1.DataReceived += serialPort1_DataReceived; this.serialPort1.Open(); 

将以下命令传递给调制解调器以激活Caller-ID

  this.serialPort1.WriteLine("AT#cid=1" + System.Environment.NewLine); 

处理其DataReceived事件并显示接收的数据

  void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e) { richTextBox1.Text += this.serialPort1.ReadLine(); } 

输出:

 RING //On 1st Ring DATE = xxxxx //On 2nd Ring TIME = xxxx NMBR = xxxxxxxxx RING //On 3rd Ring RING //On 4th Ring 

PS如果电话线发送DTMF音作为来电显示,那么您需要DTMF到FSK转换器来检测号码,否则您将收到响铃而不是号码。