2015-10-07 15 views
0


我知道這是回答問題,但我想知道所需的硬件以及如何設置。如何使c#.net中的來電顯示

我正試圖建立一個外賣的傳遞系統,其中用戶打電話,他們的電話號碼在WINFORM上被捕獲。

我用Google搜索,它說我需要使用TAPI API。這很好,但是我需要將任何東西連接到PC上,還是隻使用TAPI工作?

This Link在VB.net中解釋它。我在c#.net中查找它。 我也經歷了here提供的鏈接。

但它沒有解釋設置。所以請幫助。

+0

看看這篇文章:[TAPI 3.0應用程序開發使用C#.NET](http://www.codeproject.com/Articles/10994/TAPI-Application-development-using-C-NET) – Tim

+0

[代碼](http://stackoverflow.com/questions/3128204/how-detect-caller-id-from-phone-line)這裏似乎有點相關,我的第一個擔心是硬件設置。 – mark

+0

https://en.wikipedia.org/wiki/Telephony_Application_Programming_Interface請參閱硬件部分 –

回答

2

第一件事

  • 看看你的硬件支持來電顯示
  • 添加串口控制,將其設置爲任何通訊端口調制解調器是上觀看的來電顯示號碼,隨即反應過來

要查看您的調制解調器是否支持來電顯示打開串口終端(我喜歡膩子)並將其設置爲調制解調器的com端口,然後撥打附加到該調制解調器的電話號碼,您應該看到類似RING 5555555555 (5555555555是其中的電話號碼給你打電話)的人)

您可能不得不轉入來電顯示上爲調制解調器(如果有的話)

1)打開「電話和調制解調器選項」控制面板

2單擊「調制解調器「標籤

3)在列表中選擇您的調制解調器(如果尚未選中)

4)單擊 」屬性「 按鈕

5)點擊ŧ他的「高級」選項卡

6)輸入「#CID = 1」變成了「額外的初始化命令」編輯框中 注:將「#CID = 1」命令對你的調制解調器 不啓用來電顯示包括「AT」命令的一部分 不包括引號 7)單擊OK

8)單擊OK

9)重新啓動計算機

這裏是一個串行交互一些代碼端口在C#(incse你需要)

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. 
} 

此外,我剛剛搜索亞馬遜的「來電顯示調制解調器」,似乎有很多支持這個確切的使用10至20美元(美國)。我會推薦Trendnet TFM-561U

+0

我跟着步驟,在步驟3,沒有調制解調器,所以我手動設置它。同樣在第6步,「額外的初始化命令」框未啓用,所以我點擊「常規」,然後進入「更改設置」,然後在提前我運行「#CID = 1」。重新啓動PC後,按照代碼,但沒有發生任何事情。我需要這個「來電顯示調制解調器」嗎?這些設置位於開發PC上,在客戶端我沒有看到COMM端口來安裝調制解調器,所以我錯過了什麼 – mark

+0

您是否在該計算機上安裝了物理調制解調器?你需要一個連接到電話線的設備才能工作 –

+0

我不這麼認爲,_Trendnet TFM-561U_會如何工作?並且我猜測要使用我需要一個電話分離器? – mark

2

如果您使用的是電話和傳真調制解調器,只需將電話線插入調制解調器即可。

接下來在您的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();  

傳遞以下命令到調制解調器,以激活呼叫者ID

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音頻作爲呼叫者ID發送,則需要DTMF到FSK轉換器來檢測號碼,否則您將收到振鈴而不是號碼。

+0

你真的可以只使用一個像串口調制解調器?剛剛寫了一個使用串口的程序,所以最近我一直在學習它。我不知道一個調制解調器是否像一個工作。你每天都會學到一些東西......哈哈。 – ProgrammingDude

+0

是的,你可以。有一個虛擬COM端口用於與調制解調器通信。串行端口可以與實際的「串行端口」和「虛擬串口」進行通信 – Marshal

+0

@ProgrammingDude抱歉太天真了,但是我還要寫'this.serialPort1.WriteLine(「AT#cid = 1」+ System.Environment.NewLine );'我的意思是事件 – mark

相關問題