簡體   English   中英

如何在C#.net中創建來電顯示

[英]How to make caller id in c#.net


我知道這是一個已回答的問題,但是我想知道所需的硬件以及如何設置。

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

我用谷歌搜索,並說我需要使用TAPI API。 很好,但是我需要將任何東西連接到PC還是僅使用TAPI就能工作?

該鏈接在VB.net中對此進行了解釋。 我在c#.net中尋找它。 我也瀏覽了這里提供的鏈接。

但是它無處解釋安裝。 所以請幫忙。

第一件事

  • 查看您的硬件是否支持來電顯示
  • 添加串行端口控件,將其設置為調制解調器打開的任何通訊端口,並注意CALLER ID號,然后做出反應

若要查看調制解調器是否支持呼叫者ID,請打開一個串行端口終端(我喜歡油灰)並將其設置為調制解調器的com端口,然后撥打該調制解調器的電話號碼,您應該看到類似RING 5555555555(其中5555555555是給您打電話的人的電話號碼)

您可能必須打開該調制解調器的呼叫者ID(如果有的話)

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

2)點擊“調制解調器”標簽

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

4)點擊“屬性”按鈕

5)點擊“高級”標簽

6)在“額外初始化命令”編輯框中鍵入“#CID = 1”注意:將“#CID = 1”替換為命令以啟用調制解調器上的呼叫者ID請勿在命令中包含“ AT”部分包括引號7)單擊確定

8)點擊確定

9)重啟電腦

這是一些與C#中的串行端口進行交互的代碼(如果需要的話)

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

我也剛在亞馬遜上搜索“ Caller ID Modem”,似乎有很多10到20美元(美國)的錢可以支持這種確切的用法。 我會推薦Trendnet TFM-561U

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

接下來,在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

PS如果電話線將DTMF音作為主叫方ID發送,則您需要DTMF到FSK轉換器來檢測該號碼,否則您將收到振鈴但沒有收到該號碼。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM