如何在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转换器来检测号码,否则您将收到响铃而不是号码。