2011-05-05 48 views
7

我使用以下方法在有人來電時檢測來電顯示。來電顯示檢測:不能使用某些電話

在窗體加載我把下面的代碼:

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公司在印度),但未能給予DATE,TIME和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 

在此先感謝您。

+0

這是來自BSNL或他們的呼叫?這是通過普通的老POTS調制解調器還是蜂窩? – 2011-05-14 15:40:26

+0

@亞歷克斯:這些是打給BSNL電話的電話。它使用電話和傳真調制解調器(型號:Smart Link 56K語音調制解調器) – Marshal 2011-05-16 05:57:08

回答

2

如果您使用通用調制解調器,不幸的是不能保證它可以在所有國家的所有情況下工作;例如美國使用FSK信令將CID傳遞給電線,而印度似乎使用DTMF信令。

這可能是BSNL使用的信令類型的調制解調器不支持的情況下(如果是,CID只是沒有被通過的情況下,你仍然會希望看到一個空NMBR=

我會用一個你知道支持DTMF信號的調制解調器進行測試。

此外,如果政府在PBX後面的辦公室打電話,那麼這可能會擾亂CID的發送方式。

+0

嗨,感謝您的投入。是的,你是對的,BSNL發送DTMF音作爲來電顯示。其次,參考Smart Link調制解調器的AT命令表,它表示它們支持DTMF音調發送和接收;爲此,我們只需要將適當的AT命令傳遞給調制解調器。我編輯了我的答案,以顯示我通過的命令 – Marshal 2011-05-16 11:25:48

+1

我懷疑這只是用於通話中的DTMF;即當一個按鍵被按下而不是CID信令時會發生什麼 – 2011-05-16 11:47:12