C# CallerID检测:某些手机不起作用
当有人打电话时,我使用以下方法检测呼叫者ID 在表单加载时,我设置以下代码:C# CallerID检测:某些手机不起作用,c#,.net,vb.net,serial-port,phone-call,C#,.net,Vb.net,Serial Port,Phone Call,当有人打电话时,我使用以下方法检测呼叫者ID 在表单加载时,我设置以下代码: this.serialPort1.PortName = "COM3"; this.serialPort1.BaudRate = 9600; this.serialPort1.DataBits = 8; this.serialPort1.RtsEnable = true; this.serialPort1.DataReceived += new SerialDataReceivedEventHandler(serial
this.serialPort1.PortName = "COM3";
this.serialPort1.BaudRate = 9600;
this.serialPort1.DataBits = 8;
this.serialPort1.RtsEnable = true;
this.serialPort1.DataReceived += new SerialDataReceivedEventHandler(serialPort1_DataReceived);
this.serialPort1.Open();
this.serialPort1.WriteLine("AT#cid=1" + System.Environment.NewLine);
void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
richTextBox1.Text += this.serialPort1.ReadLine();
//richTextBox1.Text += this.serialPort1.ReadExisting();
//richTextBox1.Text += this.serialPort1.ReadByte().ToString();
}
命令
this.serialPort1.WriteLine("AT#cid=1" + System.Environment.NewLine);
给了我输出
OK
确保调制解调器支持来电显示,且来电显示正常工作
我在我们国家(印度)尝试了一些私人电话线,它给出了如下预期输出
RING //On 1st Ring
DATE = xxxxx //On 2nd Ring
TIME = xxxx
NMBR = xxxxxxxxx
RING //On 3rd Ring
RING //On 4th Ring
但当我尝试使用政府电话(印度BSNL公司)时,它没有给出日期、时间和NMBR部分。它给出以下输出
RING //On 1st Ring
RING //On 3rd Ring
RING //On 4th Ring
请注意,第二圈没有显示任何内容。
重要提示:
- 政府电话确实支持来电显示,因为当电话线连接到电话设备时,号码就会显示出来
- 上述代码成功地与私营公司的许多其他固定电话配合使用
AT#CID=1 //Enable Caller ID (Verbose)
AT#VLS=0 //Voice Source--Telephone Line (Go on hook)
AT#VTD=3F,3F,3F //Enable DTMF Transmit, Receive and Voice Online
AT#CLS=8 //Sets Modem to Voice Mode
提前谢谢。如果您使用通用调制解调器,很遗憾,无法保证它在所有国家的所有情况下都能工作;例如,美国使用FSK信号将CID传递到线路上,而印度似乎使用DTMF信号 很可能是BSNL使用调制解调器不支持的信令类型(如果只是没有传递CID,您仍然会看到一个空的
NMBR=
)
我会用一个你们知道支持DTMF信号的调制解调器进行测试
此外,如果政府在PBX后面的办公室打电话,那么可能会影响CID的发送方式。这是来自BSNL还是给他们的电话?这是通过普通的老式POTS调制解调器还是手机?@Alex:这些电话是通过BSNL电话打的。它正在使用电话和传真调制解调器(型号:Smart Link 56K语音调制解调器)您好,谢谢您的输入。是的,你是对的,BSNL发送DTMF音调作为呼叫方ID。其次,参考智能链路调制解调器的AT命令表,它说它们支持DTMF音调发送和接收;为此,我们只需要将适当的AT命令传递给调制解调器。我编辑了我的答案,以显示我传递的命令,我怀疑这些命令只用于通话DTMF;即当按下一个键而不是CID信号时会发生什么