我知道这是一个已回答的问题,但我想了解所需的硬件以及如何设置。
我正在尝试构建一个外卖的传送系统,用户呼叫并在WINFORM上捕获他们的电话号码。
我用谷歌搜索,它说我需要使用TAPI API。这很好,但是我需要将任何东西连接到PC还是只使用TAPI工作?
This Link在VB.net中解释。我在c#.net中寻找它。 我还浏览了here提供的链接。
但它没有解释设置。所以请帮忙。
答案 0 :(得分:3)
第一件事
要查看您的调制解调器是否支持来电显示打开串口终端(我喜欢putty)并将其设置为调制解调器的com端口,然后拨打附加到该调制解调器的电话号码,您应该会看到类似RING 5555555555的内容(其中5555555555是给您打电话的人的电话号码。
您可能必须为该调制解调器打开来电显示(如果是)
1)打开"电话和调制解调器选项"控制小组
2)点击"调制解调器"标签
3)在列表中选择您的调制解调器(如果尚未选择)
4)点击"属性"按钮
5)点击"高级"标签
6)输入"#CID = 1"进入"额外初始化命令"编辑框 注意:替换"#CID = 1"使用命令在调制解调器上启用来电显示 不要包括" 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.
}
此外,我只是在亚马逊上搜索了#34;来电显示调制解调器"似乎有很多10到20美元(美国)支持这种确切用途。我推荐Trendnet TFM-561U
答案 1 :(得分:3)
如果您使用的是电话和传真调制解调器,只需将电话线插入调制解调器即可。
接下来,在您的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();
将以下命令传递给调制解调器以激活来电显示
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
P.S。如果电话线发送DTMF音作为来电显示,那么您需要DTMF到FSK转换器来检测号码,否则您将收到响铃而不是号码。