C# CallerID检测:某些手机不起作用

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

当有人打电话时,我使用以下方法检测呼叫者ID

在表单加载时,我设置以下代码:

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
请注意,第二圈没有显示任何内容。

重要提示:

  • 政府电话确实支持来电显示,因为当电话线连接到电话设备时,号码就会显示出来
  • 上述代码成功地与私营公司的许多其他固定电话配合使用
--你知道为什么我不从BSNL手机上获取号码,尽管它们显示在来电显示屏幕上吗

编辑:我将以下初始化命令传递给调制解调器,以将其设置为DTMF接收模式

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信号时会发生什么