我知道這是回答問題,但我想知道所需的硬件以及如何設置。如何使c#.net中的來電顯示
我正試圖建立一個外賣的傳遞系統,其中用戶打電話,他們的電話號碼在WINFORM上被捕獲。
我用Google搜索,它說我需要使用TAPI API。這很好,但是我需要將任何東西連接到PC上,還是隻使用TAPI工作?
This Link在VB.net中解釋它。我在c#.net中查找它。 我也經歷了here提供的鏈接。
但它沒有解釋設置。所以請幫助。
我知道這是回答問題,但我想知道所需的硬件以及如何設置。如何使c#.net中的來電顯示
我正試圖建立一個外賣的傳遞系統,其中用戶打電話,他們的電話號碼在WINFORM上被捕獲。
我用Google搜索,它說我需要使用TAPI API。這很好,但是我需要將任何東西連接到PC上,還是隻使用TAPI工作?
This Link在VB.net中解釋它。我在c#.net中查找它。 我也經歷了here提供的鏈接。
但它沒有解釋設置。所以請幫助。
第一件事
要查看您的調制解調器是否支持來電顯示打開串口終端(我喜歡膩子)並將其設置爲調制解調器的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
如果您使用的是電話和傳真調制解調器,只需將電話線插入調制解調器即可。
接下來在您的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轉換器來檢測號碼,否則您將收到振鈴而不是號碼。
你真的可以只使用一個像串口調制解調器?剛剛寫了一個使用串口的程序,所以最近我一直在學習它。我不知道一個調制解調器是否像一個工作。你每天都會學到一些東西......哈哈。 – ProgrammingDude
是的,你可以。有一個虛擬COM端口用於與調制解調器通信。串行端口可以與實際的「串行端口」和「虛擬串口」進行通信 – Marshal
@ProgrammingDude抱歉太天真了,但是我還要寫'this.serialPort1.WriteLine(「AT#cid = 1」+ System.Environment.NewLine );'我的意思是事件 – mark
看看這篇文章:[TAPI 3.0應用程序開發使用C#.NET](http://www.codeproject.com/Articles/10994/TAPI-Application-development-using-C-NET) – Tim
[代碼](http://stackoverflow.com/questions/3128204/how-detect-caller-id-from-phone-line)這裏似乎有點相關,我的第一個擔心是硬件設置。 – mark
https://en.wikipedia.org/wiki/Telephony_Application_Programming_Interface請參閱硬件部分 –