首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在c#.net中生成调用者id

如何在c#.net中生成调用者id
EN

Stack Overflow用户
提问于 2015-10-07 05:40:59
回答 2查看 7.2K关注 0票数 2

我知道这是答案的问题,但我想知道硬件需要和如何设置。

我正在试图建立一个外卖的交付系统,用户打电话,他们的电话号码被捕获到一个WINFORM。

我谷歌了一下,它说我需要使用TAPI API。这是好的,但我需要连接到个人电脑的任何东西,还是只使用TAPI工作?

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

但它也解释不了这个设置。所以请帮帮忙。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-23 20:43:23

第一件事

  • 查看您的硬件是否支持来电显示
  • 添加串行端口控件,将其设置为调制解调器上的任何通信端口,并监视来电者ID号,然后作出反应。

要查看您的调制解调器是否支持Caller,打开一个串行端口终端(我喜欢putty)并将其设置为调制解调器的com端口,然后拨打连接到该调制解调器的电话号码,您应该可以看到类似于5555555555 (其中5555555555是呼叫您的人的电话号码)。

您可能需要为该调制解调器打开来电者id (如果是的话)

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

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

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

4)点击“属性”按钮

5)单击“高级”选项卡

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

8)点击OK

9)重新启动计算机

下面是一些用于与c#中的串口交互的代码(如果您需要的话)

代码语言:javascript
复制
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-561 U

票数 3
EN

Stack Overflow用户

发布于 2015-12-23 21:06:46

如果您正在使用电话和传真调制解调器,只需插入您的电话线到调制解调器。

接下来,在windows窗体上拖放一个SerialPort控件并初始化它.

代码语言:javascript
复制
    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

代码语言:javascript
复制
    this.serialPort1.WriteLine("AT#cid=1" + System.Environment.NewLine);

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

代码语言:javascript
复制
     void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
     {
          richTextBox1.Text += this.serialPort1.ReadLine();          
     }

输出:

代码语言:javascript
复制
RING               //On 1st Ring
DATE = xxxxx       //On 2nd Ring
TIME = xxxx
NMBR = xxxxxxxxx

RING               //On 3rd Ring    
RING               //On 4th Ring

如果电话线以呼叫者ID的身份发送DTMF音调,那么需要DTMF到FSK转换器来检测号码,否则你会收到铃声而不是号码。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32984598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档