来电显示检测:不适用于某些手机

Mar*_*hal 7 .net c# vb.net serial-port phone-call

当有人打电话时,我使用以下方法来检测来电显示.

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

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();

        }
Run Code Online (Sandbox Code Playgroud)

命令

this.serialPort1.WriteLine("AT#cid=1" + System.Environment.NewLine);
Run Code Online (Sandbox Code Playgroud)

给了我输出

OK
Run Code Online (Sandbox Code Playgroud)

这确保了调制解调器支持调制解调器ID并且正在工作.

我在我们国家(印度)试过一些私人电话线,它给出了预期的输出如下.

RING               //On 1st Ring
DATE = xxxxx       //On 2nd Ring
TIME = xxxx
NMBR = xxxxxxxxx

RING               //On 3rd Ring    
RING               //On 4th Ring
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用政府电话(印度的BSNL公司)时,它没有提供DATE,TIME和NMBR部分.它给出了以下输出.

RING               //On 1st Ring    
RING               //On 3rd Ring        
RING               //On 4th Ring
Run Code Online (Sandbox Code Playgroud)

请注意,在二环期间没有显示任何内容.

重要的提示:

  • 政府电话确实支持来电显示,因为当电话线连接到电话设备时,会显示号码.
  • 以上代码与私营公司的许多其他固定电话成功合作.

- 不知道为什么我不从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
Run Code Online (Sandbox Code Playgroud)

先感谢您.

Ale*_* K. 2

不幸的是,如果您使用通用调制解调器,则不能保证它可以在所有国家/地区的所有情况下工作;例如,美国使用 FSK 信令通过线路传递 CID,而印度似乎使用 DTMF 信令。

很可能 BSNL 使用调制解调器不支持的信令类型(如果只是未传递 CID,您仍然会看到一个空的NMBR=

我将使用您知道支持 DTMF 信号的调制解调器进行测试。

此外,如果政府在 PBX 后面的办公室打电话,那么可能会扰乱 CID 的发送方式。