Hình 4.3 – Cửa sổ ứng dụng định vị
Sau khi đã cài đặt và thiết lập cho Microsoft VS 6 C++, ta sẽ bắt đầu xây dựng ứng dụng để thu thập chỉ số RSSI từ thiết bị Bluetooth.
Các hoạt động dò tìm thiết bị (inquiry) của ứng dụng nằm trong lớp CBtIf. Do vậy ta cần khai báo:
Sau đó thêm vào các thƣ viện và header để giúp liên kết các thành phần trong chƣơng trình.
#include "btwlib.h" //Widcomm Stack
#pragma comment(lib, "version.lib") #pragma comment(lib, "Ws2_32.lib")
Đầu tiên, khi bắt đầu quá trình inquiry, ứng dụng sẽ gọi hàm virtual void StartInquiry(). Hàm này đƣợc thừa kế từ CBtIf và bắt đầu việc giả lập thiết bị trong tiến trình riêng của nó. Khi một thiết bị Bluetooth đƣợc dò thấy trong vùng lân cận, lớp cơ sở sẽ gọi một hàm ảo để thông báo về việc này:
virtual void OnDeviceResponded(BD_ADDR bda, DEV_CLASS devClass, BD_NAME bdName, BOOL bConnected);
Tham số đầu tiên là một mảng có 6 byte chứa địa chỉ của thiết bị. Tham số thứ hai là một mảng 3 byte chứa lớp của thiết bị. Tham số thứ ba là tên thiết bị đƣợc mã hóa nhƣ là một chuỗi ANSI (không phải là UNICODE) và cuối cùng là một giá trị Boolean chỉ ra thiết bị đã đƣợc kết nối hay chƣa.
Sau khi đã tìm thấy thiết bị ta gọi hàm
BOOL GetConnectionStats (BD_ADDR bd_Addr, tBT_CONN_STATS *p_conn_stats)
Để lấy thông tin kết nối. Trong đó tham số thứ nhất là địa chỉ thiết bị, tham số thứ hai là con trỏ tới cấu trúc tBT_CONN_STATS chứa giá trị RSSI.
Ta lƣu các giá trị này vào một file text để xây dựng một cơ sở dữ liệu giá trị RSSI.
FILE * f;
f = fopen("output.txt", "a+");
fprintf(f,"%i\n",p_conn_stats.Rssi); fclose(f);
Khi tất cả các thiết bị đã đƣợc tìm thấy, lớp cơ sở CBtIf sẽ gọi một hàm ảo khác để thông báo về ứng dụng :
virtual void OnInquiryComplete(BOOL bSuccess, short nResponses);
Thông số đầu tiên thông báo nếu tiến trình dò (inquiry) đã thành công và thông số thứ hai thông báo số lƣợng thiết bị tìm thấy.
đúng do nguyên nhân nào đó. [5].
4.3.Kết quả thực nghiệm và đánh giá
Các phép đo đƣợc thực hiện trong các điều kiện khác nhau. Trƣớc hết ta đo giá trị RSSI tại các khoảng cách đã biết. Dữ liệu RSSI đƣợc lấy mẫu 100 lần cho mỗi vị trí, sau đó ta lấy giá trị trung bình của mẫu đó để xây dựng một tập hợp dữ liệu biễu diễn mối tƣơng quan giữa RSSI và khoảng cách. Dữ liệu này sau đó sẽ đƣợc biễu diễn bằng đồ thị và dùng các hàm xấp xỉ để mô hình hóa.