2009-07-29 27 views
9

Xin chào Tôi muốn sử dụng modem 56K để nhận số điện thoại của những người gọi điện thoại nhà, có cách nào để đạt được điều này với C#?Cách nhận ID người gọi trong C#?

+0

Ai đó có kiến ​​thức về chủ đề, vui lòng trả lời câu hỏi này? –

+1

Đó là khá tuyệt vời, chỉ cần có một popup hoặc một cái gì đó bất cứ khi nào điện thoại đổ chuông. Nhược điểm: Ai có một điện thoại cố định nữa ... – tsilb

Trả lời

17

Không phải tất cả modem đều hỗ trợ ID người gọi. Và đối với những người làm, việc triển khai thay đổi giữa các nhà sản xuất.

Có ID người gọi được chuyển qua dữ liệu nối tiếp, do đó bạn sẽ phải sử dụng TAPI library (hoặc HyperTerminal của Windows để kiểm tra). Số ID người gọi thường xuất hiện giữa vòng đầu tiên và vòng thứ hai.

Bạn sẽ cần đưa ra lệnh cho modem để kích hoạt ID người gọi. Điển hình là:

AT#CID=1 (hoặc AT+VCID=1)

OK

Kiểm tra tài liệu cho modem của bạn.

Khi có cuộc gọi đến, modem sẽ nhận được chuỗi cuộc gọi. Điển hình là:.

RING

Sau đó, các văn bản ID người gọi sẽ đến trong Nếu tôi nhớ chính xác, nó sẽ theo hình thức:

NMBR=XXXXXXXXXX

[Tôi đang tìm kiếm một tài liệu tham khảo. Tôi sẽ đăng liên kết khi tôi có thể tìm thấy nó]

CẬP NHẬT: Ah, tìm thấy. Hãy kiểm tra trang này để các lệnh và chuỗi kết nối cho cho modem khác nhau:

How to Test a Modem for Caller ID Support

+0

okay tôi sẽ thử nó ở nhà, nó sẽ rất tốt nếu bạn tìm thấy một reference.Thanks. – zer0w1dthspace

5

Có thể, nhưng có một số điều về nó, bạn nên lưu ý:

  • Bạn vẫn phải có ID người gọi hỗ trợ bởi hãng/nhà cung cấp của bạn. Dòng POTS cơ bản sẽ không bao gồm thông tin này trừ khi người vận chuyển đã thực hiện thêm một số công việc để thêm nó. Vì vậy, bạn không thể thực hiện việc này để tránh phải trả thêm phí ID người gọi.
  • Nó không được tích hợp vào .Net. Bạn sẽ phải gọi vào thư viện cơ bản TAPI. Tôi chưa bao giờ làm việc với thư viện này, vì vậy đó là nhiều như tôi có thể nói với bạn.
+0

Tôi chắc chắn rằng đường dây điện thoại của tôi hỗ trợ ID người gọi vì điện thoại đang hiển thị số người gọi trên màn hình của nó. Tôi sẽ tiếp tục với TAPI, cảm ơn. – zer0w1dthspace

3

serialPort1.Open(); serialPort1.WriteLine ("AT # cid = 1" + System.Environment.NewLine); // trong đó serialPort1 là điều khiển nối tiếp để biết thêm chi tiết, xem liên kết sau: http://www.itworld2.com/frmsCsharp.aspx

+0

heh, không biết bạn có thể thêm các chuỗi lệnh với phương thức writeline .. tnx (liên kết không hoạt động) –