Bảng 3.3 Mô tả các hàm truy vấn dịch vụ
Hàm Mô tả
1 –2 Sau khi người dùng chọn thiết bị muốn kết nối thì hàm RunL sẽ được gọi, lúc này biến trạng thái iState là EGettingService, và gọi hàm FindServiceL của đối tượng CMessageServiceSearcher để tìm Serial Port service record trong SDP database của thiết bị muốn kết nối . 3 –4 FindServiceL thiết lập một bộ lọc để chỉ nhận những Serial Port
service record bằng cách gọi hàm SetRecordFilter của đối tượng CSdpAgent. Sau đó NextRecordRequest được gọi để tìm Serial Port record trong SDP database của thiết bị muốn kết nối.
5 –6 Khi một record được tìm thấy, đối tượng CSdpAgent gọi hàm callback NextRecordRequestComplete, hàm này gọi hàm NextRecordRequestCompleteL của đối tượng
Finished 11: (..) : FrameWork EGettingService () RunL 1: (..) FindServiceL 2: (..) SetRecordFilterL 3: NextRecordRequest (..) 4: 5: NextRecordRequestComplete (..) AttributeRequestL (..) 6: () 7: AttributeRequestResult 8: AttributeRequestComplete (..) (..) NextRecordRequest 9: 10: NextRecordRequestComplete (..) 12: RequestComplete (..)
CMessageServiceSearcher, đến lượt mình hàm này lại gọi hàm AttributeRequestL của đối tượng CSdpAgent để yêu cầu thuộc tính đầu tiên của record.
7 Khi đối tượng CSdpAgent nhận được một thuộc tính nó gọi hàm callback AttributeRequestResult, đến lượt mình hàm này gọi hàm AttributeRequestResultL của đối tượng CMessageServiceSearcher. Một bộ phân tích sẽ phân tích các thuộc tính này. Nếu những thuộc tínhnày là Protocol Descriptor List, bộ phân tích sẽ lấy channel (port) và gán nó vào biến thành viên iPort của đối tượng
CMessageServiceSearcher.
8 –12 Khi tất cả các thuộc tính được tìm thấy, hàm AttributeRequestCompleteL sẽ được gọi và hàm này sẽ gọi hàm NextRecordRequest trong trường hợp có record Serial Port service khác trong SDP database. Nếu không có thêm record nào thì đối tượng CSdpAgent sẽ gọi hàm NextRecordRequestComplete và cờ EoF sẽ được thiết lập.Tiếp theo, hàm Finished sẽ được gọi và hàm này gọi hàm RequestComplete, hoàn tất hàm này hàm RunL của đối tượng CMessageClient sẽ được gọi.
-Kết nối vào cổng COM
Thay vì mở Socket để lắng nghe chờ kết nối như trên di động thì trên máy tính ta chỉ cần mở một cổng COM đã được driver của thiết bị định sẵn, là cổng COM mà thiết bị Bluetooth sẽ lắng nghe kết nối từ client. Việc này được thực hiện một cách đơn giản như sau:
sprintf(sCommPortBuf, "\\\\.\\%s", sCommPort); m_hBluetoothHandle = CreateFile(sCommPortBuf, GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, // no security OPEN_EXISTING,
0, // not overlapped I/O NULL);
sCommPort là kiểu chuỗi, ví dụ “COM5” m_hBluetoothHandle kiểu HANDLE Hàm CreateFile mở cổng COM với port là 5 và trả về Handle của cổng COM.
3.10.3.Thực hiện truyền và nhận dữ liệu :
Việc truyền và nhận dữ liệu của ứng dụng trên máy tính thực ra là việc đọc và ghi dữ liệu ra cổng COM mà ứng dụng kết nối vào. Để làm việc đó, ta sử dụng các hàm đọc và ghi dữ liệu sau :
BOOL ReadFile( HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, ); LPOVERLAPPED lpOverlapped BOOL WriteFile( HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped );
Tên tham số Mô tả
hFile HANDLE của cổng COM đã được mở với hàm
CreateFile như trên (m_hBluetoothHandle) lpBuffer Con trỏ trỏ tới buffer chứa dữ liệu để truyền đi
hoặc nhận được. nNumberOfBytesToRead,
nNumberOfBytesToWrite
Số byte dữ liệu sẽ nhận hoặc truyền lpNumberOfBytesRead,
lpNumberOfBytesWrite
Số byte thực tế nhận hoặc truyền đi được.
lpOverlapped Là một con trỏ trỏ tới cấu trúc OVERLAPPED, do cổng COM được mở với hàm CreateFile với tham số thứ 6 bằng 0 ( khơng sử dụng Overlapped) do đó tham số này bằng NULL.
3.11 Thiết bị y tế có kết nối bluetooth
3.11.1 MÁY ĐO HUYẾT ÁP BẮP TAY KẾT NỐI BLUETOOTH BEURER BM77· Tính năng nổi bật · Tính năng nổi bật
- Đồng bộ bằng Bluetooth với điện thoại thông minh thông qua phần mềm Beurer HealthManager để theo dõi báo cáo kết quả.
- Có 2 bộ nhớ người dùng với 60 lần lưu kết quả cho mỗi bộ nhớ - Dùng được cho các bệnh nhân máu nhiễm mỡ và xơ vữa động mạch - Màn hình cỡ lớn, sáng, dễ đọc
- Đo huyết áp tối đa (tâm thu), đo huyết áp tối thiểu (tâm trương), đo nhịp tim - Cảnh báo nhịp tim bất thường
- Tự động cảnh báo thao tác sai khi đo huyết áp
- Cảnh báo huyết áp bất thường theo vạch màu(theo chuẩn WHO) - Chu vi vịng bít: 24 - 40 cm
- Tự động tắt máy khi khơng sử dụng, màn hình tự tắt sau 3 phút khơng sử dụng - Tín hiệu báo thao tác sai
- Đạt tiêu chuẩn CHÂU ÂU - Đã được thử nghiệm lâm sàng