HOẠT ĐỘNG GIAO TIẾP GIỮA ĐIỆN THOẠI VÀ
MÁY TÍNH
Yêu cầu của ứng dụng là chỉ cần tạo một phiên làm việc giữa máy tính và điện thoại
để có thể nhận được các mã DTMF và truyền tiếng nói tới người gọi. Với yêu cầu này, mọi
phiên bản TAPI cho ứng dụng 32-bit đều hỗ trợ nên em chọn phiên bản đầu tiên là TAPI
1.4 . Phiên bản này được thiết kế theo kiến trúc ngôn ngữ C++ nên khi lập trình trong
Visual Basic sẽ khó khăn hơn. Tuy nhiên, ứng dụng TAPI 1.4 sẽ có thể chạy trên mọi
phiên bản Windows 32-bit và không đòi hỏi cấu hình cao, trong khi ứng dụng TAPI 3 chỉ
chạy trên Windows 2000/XP.
Để sử dụng các hàm của TAPI, các hàm này phải được khai báo trước trong một
module giống như các hàm API khác của Windows. Sau đây là các bước để tạo một kết nối
với cuộc gọi tới :
I Khởi tạo đường truyền (line) :
Mọi hoạt động giao tiếp giữa điện thoại và máy tính muốn diễn ra thì trước hết cần
phải khởi tạo đường truyền giữa máy tính và điện thoại. Ở đây, modem sẽ là thiết bị trung
gian giữa máy tính và điện thoại. Vì thế, đường truyền mà ta cần quan tâm chính là
modem. Một máy tính có thể có gắn nhiều hơn một modem. Vì vậy, trước hết ta cần phải
sử dụng hàm lineInitialize() để lấy về tổng số đường truyền (line) mà nó phát hiện có
trong máy.
Cũng từ đây, ta sẽ chỉ định hàm nào sẽ tiếp nhận các sự kiện được sinh ra bởi các
hoạt động của TAPI (ví dụ như khi chuông reo, khi có mã DTMF được gửi tới, vv...). Hàm
này được gọi là lineCallBack() , do ta tự định nghĩa. Sau đó, ta sẽ lấy địa chỉ của hàm này
và đưa vào hàm lineInitialize() như là một tham số của hàm lineInitialize()
Sau khi đã khởi tạo thành công, lineInitialize() sẽ trả về một handle của TAPI đã nạp
vào bộ nhớ. Handle này sẽ được sử dụng trong suốt quá trình hoạt động của hệ thống.
I. Kiểm tra đường truyền (line) hợp lệ :
Vì mục đích của ta là lấy được các modem hiện có nên ta cần phải kiểm tra những line
nào thích hợp. Sau khi có được tổng số các line, ta duyệt qua từng line để tìm line thích
hợp bằng cách kết hợp gọi 2 hàm lineNegotiateAPIVersion() và lineGetDevCaps().
Ứng với mỗi line, hàm lineNegotiateAPIVersion() sẽ trả về con số phiên bản (version)
API mà tương thích với phiên bản của TAPI hiện đang sử dụng. Với con số phiên bản lấy
3 33
4 34
5 35
6 36
7 37
8 38
9 39
* 2A
# 23
VI. Kết thúc cuộc gọi :
Khi người gọi chọn yêu cầu “kết cầu thúc cuộc gọi” từ menu hoặc người gọi gác máy
bất kỳ lúc nào, ta phải gọi hàm lineDrop() để hủy cuộc gọi hiện tại đang kết nối và hàm
lineDeallocateCall() để giải phóng cuộc gọi khỏi bộ nhớ. Bây giờ hệ thống sẽ trở về trạng
thái chờ đợi cuộc gọi khác đến.
VII. Đóng line hiện tại :
Nếu muốn chọn modem khác để hoạt động, hoặc kết thúc hoạt động của hệ thống, ta
cần gọi hàm lineClose() để đóng line hiện tại đang được mở. Đây là điều nên làm vì nó sẽ
hoàn trả tài nguyên về cho máy.
VIII. Kết thúc TAPI :
Sau khi khởi tạo các line bằng hàm lineInitialize(), một số tài nguyên hệ thống sẽ bị
chiếm dụng suốt phiên làm việc của TAPI. Khi thoát chương trình, ta gọi hàm
lineShutdown() để kết thúc phiên làm việc đó, đồng thời giải phóng các tài nguyên hệ
thống.