TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM
ĐẶNG MINH THẮNG – CHU NGUYÊN TÚ
XÂY DỰNG HỆ THỐNG ĐIỀU KHIỂN
MÁY TÍNH TỪ XA SỬ DỤNG
CÔNG NGHỆ BLUETOOTH
LUẬN VĂN CỬ NHÂN TIN HỌC
TP.HCM, NĂM 2004
TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HỒ CHÍ MINH KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ PHẦN MỀM
ĐẶNG MINH THẮNG - 0012091
CHU NGUYÊN TÚ - 0012120
XÂY DỰNG HỆ THỐNG ĐIỀU KHIỂN
MÁY TÍNH TỪ XA SỬ DỤNG
CÔNG NGHỆ BLUETOOTH
LUẬN VĂN CỬ NHÂN TIN HỌC
GIÁO VIÊN HƯỚNG DẪN
Th.S ĐỖ HOÀNG CƯỜNG
NIÊN KHÓA 2000 – 2004
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
NHẬN XÉT CỦA GIÁO VIÊN PHẢN BIỆN
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
..................................................................................................................................
LỜI CÁM ƠN
Chúng em xin bày tỏ lòng biết ơn chân thành nhất đến Thầy Đỗ Hoàng
Cường, người Thầy đã tận tâm hướng dẫn, giúp đỡ chúng em trong suốt thời gian
thực hiện luận văn này.
Chúng con xin gửi tất cả lòng biết ơn sâu sắc và sự kính trọng đến ông bà,
cha mẹ, cùng toàn thể gia đình, những người đã nuôi dạy chúng con trưởng thành
đến ngày hôm nay.
Chúng em cũng xin chân thành cám ơn quý Thầy cô trong Khoa Công nghệ
thông tin, trường Đại học Khoa học Tự nhiên Tp.Hồ Chí Minh đã tận tình giảng
dạy, hướng dẫn, giúp đỡ và tạo điều kiện cho chúng em thực hiện tốt luận văn này.
Xin chân thành cám ơn sự giúp đỡ, động viên và chỉ bảo rất nhiệt tình của
các anh chị và tất cả các bạn, những người đã giúp chúng tôi có đủ nghị lực và ý
chí để hoàn thành luận văn này.
Mặc dù đã cố gắng hết sức, song chắc chắn luận văn không khỏi những thiếu
sót. Chúng em rất mong nhận được sự thông cảm và chỉ bảo tận tình của quý Thầy
Cô và các bạn.
TP.HCM, 7/2004
Nhóm sinh viên thực hiện
Đặng Minh Thắng – Chu Nguyên Tú
LỜI NÓI ĐẦU
Hiện nay, công nghệ thông tin đang phát triển mạnh mẽ và trở thành một
ngành công nghiệp mũi nhọn ở nhiều quốc gia. Máy tính ngày càng trở nên phổ
biến, xuất hiện rất nhiều trong các gia đình và trở thành một công cụ không thể
thiếu của nhiều người. Máy tính phục vụ rất nhiều nhu cầu khác nhau của con
người, từ nhu cầu làm việc, học tập đến các nhu cầu giải trí như chơi game, xem
phim, nghe nhạc, v.v…
Với sự có mặt rộng rãi của máy tính trong đời sống, con người có nhu cầu
điều khiển máy tính từ xa giống như điều khiển các thiết bị gia dụng khác (tivi, đầu
máy, máy nghe nhạc, v.v…). Công cụ điều khiển máy tính từ xa là một trợ giúp đắc
lực cho con người, giúp ta có thể biến máy tính của mình thành một trung tâm giải
trí, đồng thời là một công cụ hỗ trợ tích cực cho những buổi thuyết trình có sử dụng
PowerPoint và các thao tác điều khiển máy tính từ xa khác.
Có nhiều giải pháp để thực hiện vấn đề trên: Microsoft phát triển Windows
XP thành hệ điều hành multimedia với một bộ điều khiển từ xa tích hợp, hoặc dạo
gần đây là phong trào gắn thêm “mắt” hồng ngoại vào máy tính kết hợp với chương
trình download tại http://www.girder.nl để có thể điều khiển máy tính thông qua bộ
điều khiển từ xa của tivi.
Bên cạnh sự phát triển mạnh mẽ của máy tính cá nhân, các công nghệ không
dây và thiết bị di động cũng không ngừng tự nâng cao khả năng của mình. Từ đó
xuất hiện thêm các giải pháp khác, trong đó sử dụng các công nghệ không dây trên
các thiết bị di động để điều khiển máy tính là giải pháp được nhiều người quan tâm.
Hiện nay đã có nhiều giải pháp điều khiển máy tính từ xa chạy trên các thiết bị di
động như Pocket PC, Palm Tungsten, Smartphone với sự hỗ trợ của nhiều công
nghệ không dây khác nhau và cả internet. Các công nghệ không dây có thể kể đến là
IrDA (hồng ngoại), Bluetooth, Wi-Fi, còn các thiết bị di động thì chạy trên các hệ
điều hành phổ biến như Symbian, WinCE, Palm OS. Mỗi công nghệ, mỗi hệ điều
hành đều có những ưu, khuyết điểm riêng của nó, trong đó nổi bật lên là cặp bài
trùng Bluetooth – Symbian. Symbian gần như chiếm lĩnh thị trường hệ điều hành
trên điện thoại di động thông minh và hầu hết các điện thoại chạy hệ điều hành
Symbian đều tích hợp sẵn Bluetooth.
Xuất phát từ các lý do trên, chúng em đã thực hiện đề tài “XÂY DỰNG
MỘT HỆ THỐNG ĐIỀU KHIỂN MÁY TÍNH TỪ XA SỬ DỤNG CÔNG
NGHỆ BLUETOOTH”. Trong đề tài này, chúng em xây dựng một chương trình
điều khiển máy tính từ xa trên các điện thoại Series 60 của hãng Nokia vốn hỗ trợ
cả Bluetooth lẫn Symbian.
Mục tiêu của đề tài là xây dựng một hệ thống điều khiển máy tính từ xa
thông qua các điện thoại Series 60 của hãng Nokia giúp người dùng có thể điều
khiển một số chương trình trên máy tính phục vụ mục đích giải trí, công việc, v.v…
Các nội dung chính của đề tài bao gồm:
• Tìm hiểu công nghệ Bluetooth
• Tìm hiểu hệ điều hành Symbian
• Tìm hiểu một số vấn đề về lập trình trên hệ điều hành Symbian
• Tìm hiểu lập trình giao tiếp với Bluetooth trên Symbian
• Xây dựng một ứng dụng chạy trên các điện thoại Series 60 của hãng
Nokia để điều khiển một số chương trình trên máy tính như: Chuột,
Powerpoint, Winamp, Windows Media Player; thực hiện các thao tác hệ
thống như shutdown, restart, logout, standby, hibernate, hẹn giờ tắt máy.
Nội dung của luận văn được chia làm 3 phần và 10 chương:
PHẦN I: BLUETOOTH
Chương 1. Tổng quan về công nghệ Bluetooth: Giới thiệu tổng quan về
công nghệ Bluetooth như khái niệm và lịch sử phát triển của Bluetooth.
Chương 2. Các tầng giao thức của Bluetooth: Mô tả chi tiết các tầng giao
thức, đặc điểm kĩ thuật và cách thức hoạt động của Bluetooth.
Chương 3. Ưu điểm và khuyết điểm của Bluetooth: Phân tích các ưu và
khuyết điểm của Bluetooth, so sánh Bluetooth với một số công nghệ không dây phổ
biến khác.
Chương 4. Tầm ứng dụng và tương lai của Bluetooth: Trình bày về khả
năng ứng dụng của Bluetooth trong thực tế và tương lai của công nghệ này.
PHẦN II: SYMBIAN
Chương 5. Tổng quan về hệ điều hành Symbian và Series 60: Giới thiệu
tổng quan về hệ điều hành Symbian cũng như kiến trúc hệ thống của nó. Giới thiệu
Series 60, một platform trên các điện thoại di động thông minh của hãng Nokia
dùng Symbian, môi trường của ứng dụng PC Remote Control
Chương 6. Một số vấn đề khi xây dựng ứng dụng trên Symbian: Trình
bày các điểm khác biệt, các vấn đề quan trọng cần lưu ý khi lập trình trên môi
trường Symbian.
Chương 7. Lập trình giao tiếp Bluetooth trên Symbian: Trình bày vấn đề
liên quan trực tiếp đến ứng dụng PC Remote Control: Lập trình giao tiếp với
Bluetooth trên Symbian.
PHẦN III: ỨNG DỤNG MINH HỌA
Chương 8. Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa:
Phân tích, thiết kế các chức năng của chương trình, thiết kế lớp, thiết kế màn hình,
thiết kế lưu đồ hoạt động và trình bày một số vấn đề quan trọng khác liên quan đến
việc xây dựng ứng dụng.
Chương 9. Cài đặt và thử nghiệm: Giới thiệu môi trường phát triển và cài
đặt ứng dụng, thử nghiệm ứng dụng vào thực tế.
Chương 10. Tổng kết: Trình bày những kết quả đạt được, hạn chế, những
vấn đề tồn tại, hướng phát triển trong tương lai.
MỤC LỤC Danh sách hình ........................................................................................................12
Danh sách bảng .......................................................................................................16
PHẦN I. BLUETOOTH .........................................................................................18
Chương 1 : Tổng quan về công nghệ Bluetooth .............................................19
1.1 Bluetooth là gì? ...............................................................................................19
1.2 Tại sao có tên Bluetooth?................................................................................19
1.3 Lịch sử phát triển của Bluetooth .....................................................................19
Chương 2 : Các tầng giao thức của Bluetooth ................................................21
2.1 Bluetooth Radio ..............................................................................................22
2.2 Baseband .........................................................................................................23
2.2.1 Network topology.....................................................................................23
2.2.2 Liên kết SCO và ACL ..............................................................................25
2.2.3 Địa chỉ thiết bị..........................................................................................25
2.2.4 Định dạng gói tin......................................................................................26
2.2.5 Quản lý trạng thái.....................................................................................26
2.2.6 Thiết lập kết nối .......................................................................................27
2.2.7 Các chế độ kết nối:...................................................................................28
2.2.8 Những chức năng khác của Baseband .....................................................28
2.3 Link Manager Protocol ...................................................................................29
2.4 Host Controller Interface ................................................................................29
2.4.1 Những thành phần chức năng của HCI ....................................................29
2.4.2 Các lệnh HCI............................................................................................31
2.4.3 Các sự kiện, mã lỗi, luồng dữ liệu HCI....................................................31
2.4.4 Host Controller Transport Layer..............................................................32
2.5 Logical link control and adaption protocol (L2CAP) .....................................32
2.5.1 Những yêu cầu chức năng của L2CAP ....................................................33
2.5.2 Những đặc điểm khác của L2CAP...........................................................33
2.6 RFCOMM Protocol.........................................................................................34
2.7 Service Discovery Protocol.............................................................................34
2.7.1 Thiết lập giao thức SDP ...........................................................................35
2.7.2 Các dịch vụ SDP ......................................................................................36
2.7.3 Tìm kiếm dịch vụ .....................................................................................36
2.7.4 Data element.............................................................................................37
Chương 3 : Ưu điểm và khuyết điểm của Bluetooth ......................................38
3.1 Ưu điểm...........................................................................................................38
3.2 Khuyết điểm ....................................................................................................38
3.3 So sánh Bluetooth với một số công nghệ không dây khác .............................39
3.3.1 Bluetooth và WiFi....................................................................................39
3.3.2 Bluetooth và Hồng ngoại .........................................................................42
Chương 4 : Tầm ứng dụng và tương lai của Bluetooth .................................45
4.1 Tầm ứng dụng .................................................................................................45
4.1.1 Thiết bị thông minh..................................................................................45
4.1.2 Thiết bị truyền thanh:...............................................................................46
4.1.3 Thiết bị truyền dữ liệu..............................................................................47
4.1.4 Các ứng dụng nhúng ................................................................................49
4.1.5 Một số ứng dụng khác..............................................................................50
4.2 Tương lai của Bluetooth..................................................................................51
4.2.1 Bluetooth sẽ thay thế cái gì? ....................................................................51
4.2.2 Chính phủ bảo trợ Bluetooth ? .................................................................52
4.2.3 Bluetooth là một công nghệ mở hay độc quyền.......................................52
4.2.4 Ai sẽ hưởng lợi từ Bluetooth ?.................................................................53
4.2.5 Tương lai của Bluetooth...........................................................................54
PHẦN II. SYMBIAN ..............................................................................................56
Chương 5 : Tổng quan về hệ điều hành Symbian và Series 60 .....................57
5.1 Khái niệm về Symbian ....................................................................................57
5.2 Lịch sử phát triển của Symbian.......................................................................57
5.3 Kiến trúc của hệ điều hành Symbian ..............................................................59
5.3.1 Symbian OS kernel ..................................................................................60
5.3.2 Middleware ..............................................................................................60
5.3.3 Application Engine...................................................................................60
5.3.4 User Interface framework .......................................................................61
5.3.5 Synchronization technology.....................................................................61
5.3.6 Java vitual machine implementation........................................................61
5.4 Giới thiệu Series 60.........................................................................................61
Chương 6 : Một số vấn đề khi xây dựng ứng dụng trên Symbian................65
6.1 C++ trên Symbian ...........................................................................................65
6.1.1 Các kiểu dữ liệu .......................................................................................65
6.1.2 Các qui ước đặt tên...................................................................................67
6.2 Quản lý bộ nhớ................................................................................................71
6.2.1 Các vấn đề về bộ nhớ cần biết khi lập trình trên các thiết bị di động......72
6.2.2 Cách quản lý, hạn chế lỗi “out of memory”.............................................73
6.2.3 Bài học cần nhớ........................................................................................80
Chương 7 : Lập trình giao tiếp Bluetooth trên Symbian...............................82
7.1 Tổng quan về Bluetooth API ..........................................................................82
7.1.1 Phân nhóm các hàm Bluetooth API .........................................................84
7.1.2 Quan hệ giữa các nhóm Bluetooth API ...................................................84
7.2 Bluetooth socket..............................................................................................85
7.2.1 Mở và cấu hình Bluetooth socket.............................................................86
7.2.2 Xây dựng Bluetooth server socket ...........................................................89
7.2.3 Xây dựng Bluetooth client socket............................................................93
7.2.4 Trao đổi dữ liệu thông qua Bluetooth socket...........................................95
7.3 Một số định nghĩa thông dụng liên quan đến Service Discovery Protocol
(SDP).....................................................................................................................97
7.4 Bluetooth Service Discovery Database...........................................................98
7.5 Bluetooth Service Discovery Agent..............................................................105
7.6 Bluetooth Security Manager .........................................................................108
7.7 Bluetooth Device Selection UI .....................................................................111
7.8 Cấu hình phần cứng Bluetooth cho máy ảo: .................................................115
7.8.1 Sự khác nhau giữa Bluetooth của máy ảo và thiết bị thật......................116
7.8.2 Cài đặt và cấu hình thiết bị Bluetooth....................................................117
PHẦN III. ỨNG DỤNG MINH HỌA .................................................................119
Chương 8 : Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa .....120
8.1 Khảo sát hiện trạng........................................................................................120
8.2 Phân tích và xác định yêu cầu.......................................................................121
8.3 Xây dựng mô hình Use-case .........................................................................122
8.3.1 Xác định Actor và Use case ...................................................................122
8.3.2 Mô hình Use-case...................................................................................125
8.4 Đặc tả Use case .............................................................................................129
8.4.1 Connect ..................................................................................................129
8.4.2 Turn off ..................................................................................................130
8.4.3 Control Mouse........................................................................................130
8.4.4 Control Media Player .............................................................................133
8.4.5 Control Power point ...............................................................................140
8.4.6 Sleep, Wakeup........................................................................................142
8.4.7 Shortcut Key...........................................................................................143
8.5 Thiết kế lớp ...................................................................................................145
8.5.1 Thiết kế lớp trên client ...........................................................................145
8.5.2 Thiết kế lớp trên server ..........................................................................147
8.6 Xây dựng client, server và thiết kế truyền, nhận dữ liệu ..............................148
8.6.1 Server side..............................................................................................150
8.6.2 Client side...............................................................................................151
8.6.3 Gởi và nhận dữ liệu................................................................................154
8.7 Lưu đồ hoạt động ..........................................................................................155
8.7.1 Connect ..................................................................................................155
8.7.2 Turn off ..................................................................................................156
8.7.3 Control Mouse........................................................................................157
8.7.4 Control Media Player .............................................................................163
8.7.5 Control Powerpoint ................................................................................179
8.7.6 Sleep, Wakeup........................................................................................183
8.7.7 Shortcutkey ............................................................................................183
8.8 Thiết kế màn hình..........................................................................................185
8.8.1 Thiết kế màn hình trên client .................................................................185
8.8.2 Thiết kế màn hình trên server ................................................................196
Chương 9 : Cài đặt và thử nghiệm.................................................................200
9.1 Cài đặt ...........................................................................................................200
9.2 Thử nghiệm ...................................................................................................200
Chương 10 : Tổng kết........................................................................................203
10.1 Kết luận .......................................................................................................203
10.1.1 Kết quả đạt được ..................................................................................203
10.1.2 Hạn chế.................................................................................................203
10.2 Hướng phát triển .........................................................................................204
Phụ lục A: Hướng dẫn sử dụng chương trình....................................................205
Phụ lục B: Hướng dẫn sử dụng emulator cho Series 60....................................214
Tài liệu tham khảo ................................................................................................221
0Danh sách hình
Danh sách hình
Hình 2-1 Chồng giao thức của Bluetooth ......................................................... 21
Hình 2-2 Frequency hopping ............................................................................ 22
Hình 2-3 Piconet ............................................................................................... 24
Hình 2-4 Scatternet ........................................................................................... 25
Hình 2-5 Định dạng gói tin Bluetooth .............................................................. 26
Hình 2-6 Host Controller Interface ................................................................... 30
Hình 2-7 Host controller transport layer........................................................... 31
Hình 4-3 Các thiết bị truyền thanh.................................................................... 46
Hình 4-5 Thiết bị truyền dữ liệu ....................................................................... 47
Hình 4-6 Adsl Router........................................................................................ 48
Hình 4-8 Các ứng dụng nhúng.......................................................................... 50
Hình 4-9 Quản lý phòng ban............................................................................. 51
Hình 5-1 Kiến trúc hệ điều hành Symbian........................................................ 59
Hình 5-2 Một số công nghệ được hỗ trợ trên Series 60.................................... 63
Hình 5-3 Màn hình của Series 60 ..................................................................... 63
Hình 5-4 Bàn phím của Series 60 ..................................................................... 64
Hình 7-1 Bluetooth protocol ............................................................................. 83
Hình 7-2 Quan hệ giữa các nhóm Bluetooth API ............................................. 85
Hình 7-3 Bluetooth socket ................................................................................ 87
Hình 7-4 Thiết lập server socket....................................................................... 89
Hình 7-6 Sequence diagram xây dựng server socket........................................ 91
Hình 7-7 Sequence diagram xây dựng client socket......................................... 94
Hình 7-8 Sequence diagram quảng bá dịch vụ ............................................... 103
Hình 7-9 Sự khác biệt giữa chồng giao thức Bluetooth trên thiết bị thật và trên
máy ảo .................................................................................................... 116
Hình 7-10 Bluetooth virtual COM port trên máy tính .................................... 117
Hình 7-11 Cấu hình Bluetooth COM port cho máy ảo................................... 118
Hình 8-1 Mô hình Use-case tổng quát ............................................................ 125
Hình 8-2 Mô hình Use-case Control Mouse ................................................... 126
12
0Danh sách hình
Hình 8-3 Mô hình Use-case Control Media player......................................... 127
Hình 8-4 Mô hình Use-case Control PowerPoint ........................................... 127
Hình 8-5 Mô hình Use-case SleepWakeUpShortcutKey................................ 128
Hình 8-6 Sơ đồ lớp của Client ........................................................................ 145
Hình 8-7 Sơ đồ lớp của Server........................................................................ 147
Hình 8-8 Sequence diagram Qui trình kết nối ................................................ 149
Hình 8-9 Sequence diagram Tìm thiết bị........................................................ 151
Hình 8-10 Sequence diagram Truy vấn dịch vụ ............................................. 152
Hình 8-11 Sequence diagram Gởi và nhận dữ liệu......................................... 154
Hình 8-12 Sequence diagram Connect ........................................................... 155
Hình 8-13 Collaboration diagram Connect..................................................... 156
Hình 8-14 Sequence diagram Use case Restart .............................................. 156
Hình 8-15 Collaboration diagram Restart....................................................... 157
Hình 8-16 Sequence diagram Mouse on......................................................... 157
Hình 8-17 Collaboration diagram Mouse on .................................................. 158
Hình 8-18 Sequence diagram Mouse speed.................................................... 159
Hình 8-19 Collaboration diagram SetMouseSpeed ........................................ 160
Hình 8-20 Sequence diagram Move left ......................................................... 161
Hình 8-21 Collaboration diagram Move left .................................................. 161
Hình 8-22 Sequence diagram Left click ......................................................... 162
Hình 8-23 Collaboration diagram Left click................................................... 162
Hình 8-24 Sequence diagram ControlWinamp............................................... 164
Hình 8-25 Collaboration diagram ControlWinamp ........................................ 165
Hình 8-26 Sequence diagram Browse............................................................. 166
Hình 8-27 Collaboration diagram Browse...................................................... 167
Hình 8-28 Sequence diagram AddToPlayList ................................................ 168
Hình 8-29 Collaboration diagram AddToPlayList ......................................... 169
Hình 8-30 Sequence diagram RefreshFileList................................................ 170
Hình 8-31 Collaboration diagram RefreshFileList ......................................... 171
Hình 8-32 Sequence diagram Open ................................................................ 172
Hình 8-33 Collaboration diagram Open ......................................................... 173
13
0Danh sách hình
Hình 8-34 Sequence diagram PlayList ........................................................... 174
Hình 8-35 Collaboration diagram PlayList..................................................... 175
Hình 8-36 Sequence diagram Play.................................................................. 177
Hình 8-37 Collaboration diagram Play ........................................................... 178
Hình 8-38 Sequence diagram Next ................................................................. 179
Hình 8-39 Collaboration diagram Next .......................................................... 180
Hình 8-40 Sequence diagram GotoSlide......................................................... 181
Hình 8-41 Collaboration diagram GotoSlide.................................................. 182
Hình 8-42 Sequence diagram ShortcutKey..................................................... 183
Hình 8-43 Collaboration diagram SettingShortcutKey .................................. 184
Hình 8-44 Màn hình chính trên client............................................................. 185
Hình 8-45 Màn hình Powerpoint .................................................................... 189
Hình 8-46 Hệ thống màn hình Player ............................................................. 190
Hình 8-47 Màn hình Browse........................................................................... 191
Hình 8-48 Màn hình Control........................................................................... 192
Hình 8-49 Màn hình Playlist........................................................................... 193
Hình 8-50 Màn hình thiết lập tốc độ chuột ..................................................... 195
Hình 8-51 Màn hình Server ............................................................................ 196
Hình A-1 Connect vào PC .............................................................................. 205
Hình A-2 Chọn thiết bị muốn kết nối ............................................................. 205
Hình A-3 Sử dụng menu chính ....................................................................... 206
Hình A-4 Khởi chạy Powerpoint lần đầu........................................................ 207
Hình A-5 Chức năng refresh list ..................................................................... 207
Hình A-6 Browse tập tin của Winamp / Windows Media Player................... 208
Hình A-7 Điểu khiển Winamp........................................................................ 209
Hình A-8 Thao tác với playlist ....................................................................... 210
Hình A-9 Hướng dẫn sử dụng màn hình chính của server ............................. 211
Hình A-10 Hướng dẫn sử dụng “Files to browse”.......................................... 211
Hình A-11 Hướng dẫn sử dụng COM port ..................................................... 212
Hình A-12 Thiết lập đường dẫn cho chương trình cần điều khiển ................. 212
Hình A-13 Hướng dẫn sử dụng Options ......................................................... 213
14
0Danh sách hình
Hình A-14 Màn hình “log” ............................................................................. 213
Hình A-15 Một số phím chức năng khác của server ...................................... 213
Hình B-1 Application Wizard......................................................................... 215
Hình B-2 New project ..................................................................................... 216
Hình B-3 Cấu trúc thư mục một project ......................................................... 217
Hình B-4 Tạo VC Workspace cho project...................................................... 217
Hình B-5 Mở VC Workspace cho project ...................................................... 218
Hình B-6 Thực thi một project........................................................................ 218
Hình B-7 Chọn ứng dụng................................................................................ 219
Hình B-8 Thực thi ứng dụng........................................................................... 220
15
0Danh sách bảng
Danh sách bảng
Bảng 3-1 So sánh giữa Wi-fi và Bluetooth....................................................... 42
Bảng 3-2 So sánh giữa Hồng ngoại và Bluetooth............................................. 44
Bảng 6-1 Các kiểu dữ liệu cơ bản trên Symbian .............................................. 66
Bảng 6-2 Qui ước đặt tên lớp............................................................................ 69
Bảng 6-3 Qui ước đặt tên dữ liệu...................................................................... 70
Bảng 6-4 Qui ước đặt tên hàm .......................................................................... 71
Bảng 7-1 Tham số hàm Open ........................................................................... 88
Bảng 7-2 Tham số hàm Bind ............................................................................ 89
Bảng 7-3 Tham số hàm Listen .......................................................................... 90
Bảng 7-4 Tham số hàm Accept......................................................................... 90
Bảng 7-5 Bảng mô tả các hàm xây dựng server soket...................................... 91
Bảng 7-6 Mô tả tham số hàm Connect.............................................................. 93
Bảng 7-7 Mô tả các hàm xây dựng client socket .............................................. 94
Bảng 7-8 Tham số hàm Read............................................................................ 95
Bảng 7-9 Tham số hàm write............................................................................ 95
Bảng 7-10 Tham số hàm Recv.......................................................................... 96
Bảng 7-11 Tham số hàm Send .......................................................................... 96
Bảng 7-12 Mô tả các hàm quảng bá dịch vụ................................................... 104
Bảng 7-13 Mô tả hàm xây dựng protocol descriptor list ................................ 105
Bảng 8-1 Xác định yêu cầu ............................................................................. 121
Bảng 8-2 Mô tả chức năng những lớp của Client ........................................... 147
Bảng 8-3 Mô tả chức năng những lớp của Server .......................................... 148
Bảng 8-4 Mô tả các hàm tìm thiết bị............................................................... 151
Bảng 8-5 Mô tả các hàm truy vấn dịch vụ ...................................................... 153
Bảng 8-6 Mô tả các hàm gởi và nhận dữ liệu ................................................. 154
Bảng 8-7: Menu màn hình chính .................................................................... 185
Bảng 8-8 Menu màn hình chính sau khi connect............................................ 186
Bảng 8-9 Menu Programs ............................................................................... 186
Bảng 8-10 Menu Mouse.................................................................................. 187
16
0Danh sách bảng
Bảng 8-11 Menu Turn off ............................................................................... 187
Bảng 8-12 Menu Timer................................................................................... 187
Bảng 8-13 Menu chính của các chương trình Powerpoint, Winamp, WMP .. 188
Bảng 8-14 Menu Switch ................................................................................. 188
Bảng 8-15 Menu màn hình Powerpoint .......................................................... 189
Bảng 8-16 Menu màn hình Browse ................................................................ 192
Bảng 8-17 Menu màn hình Control ................................................................ 193
Bảng 8-18 Menu màn hình Playlist ................................................................ 194
Bảng 8-19 Mô tả màn hình Server.................................................................. 199
Bảng A-1 Chức năng Menu của màn hình Browse ........................................ 208
Bảng A-2 Chức năng Menu của màn hình Control ........................................ 209
Bảng A-3 Chức năng menu của màn hình Playlist ......................................... 210
17
0PHẦN I. BLUETOOTH
PHẦN I. BLUETOOTH
Chương 1: Tổng quan về công nghệ Bluetooth
Chương 2: Các tầng giao thức của Bluetooth
Chương 3: Ưu điểm và khuyết điểm của Bluetooth
Chương 4: Tầm ứng dụng và tương lai của Bluetooth
18
Chương 1 :Tổng quan về công nghệ Bluetooth
Chương 1 : Tổng quan về công nghệ Bluetooth
1.1 Bluetooth là gì?
Bluetooth là một công nghệ không dây cho phép các thiết bị điện, điện
tử giao tiếp với nhau bằng sóng vô tuyến qua băng tần chung ISM (Industrial,
Scientific, Medical) .
1.2 Tại sao có tên Bluetooth?
Bluetooth là tên của một nhà vua Đan Mạch - Vua Harald Bluetooth,
người đã thống nhất Đan Mạch và Na Uy ở thế kỷ thứ 10. Harald Bluetooth trở
thành nhà vua Đan Mạch vào thời kỳ 940-981. Một trong những tài nghệ của
ông là làm cho mọi người có thể ngồi lại nói chuyện với nhau; có lẽ vì thế công
nghệ không dây này mang tên ông, điều này thể hiện mơ ước Bluetooth sẽ là
một chuẩn giao tiếp không dây chung cho các thiết bị di động.
1.3 Lịch sử phát triển của Bluetooth
• Năm 1994, lần đầu tiên Ericsson đề xướng việc nghiên cứu phát triển
một giao diện vô tuyến công suất nhỏ, rẻ tiền, sử dụng sóng radio
nhằm kết nối không dây giữa máy di động cầm tay và các bộ phận
thông tin, điện tử khác.
• Năm 1997, Ericsson tiếp xúc và thảo luận với một số nhà sản xuất
thiết bị điện tử cầm tay về việc nghiên cứu phát triển và thúc đẩy các
sản phẩm không dây cự ly ngắn.
• Năm 1998, 5 công ty nổi tiếng thế giới là Ericsson, IBM, Intel, Nokia
và Toshiba đã cùng nhau thành lập nhóm đặc biệt quan tâm đến
Bluetooth (gọi là SIG - Special Interest Group).
• Tháng 7/1999, các chuyên gia của SIG cho ra đời các chỉ tiêu và tính
năng kỹ thuật đầu tiên của Bluetooth - kỹ thuật Bluetooth 1.0.
• Năm 2000: SIG bổ sung thêm 4 thành viên mới là: 3Com, Lucent
Technologies, Microsoft và Motorola. Sản phẩm Bluetooth đầu tiên
19
Chương 1 :Tổng quan về công nghệ Bluetooth
được tung ra thị trường, từ đó các thế hệ sản phẩm Bluetooth liên tục
ra đời. Công nghệ không dây Bluetooth đã trở thành một trong những
công nghệ phát triển nhanh nhất của thời đại.
• Năm 2001: Bluetooth 1.1 ra đời cùng với bộ Bluetooth software
development kit-XTNDAccess Blue SDK, đánh dấu bước phát triển
chưa từng có của công nghệ Bluetooth trên nhiều lĩnh vực khác nhau
với sự quan tâm của nhiều nhà sản xuất mới. Bluetooth được bình
chọn là công nghệ vô tuyến hay nhất của năm.
• Tháng 7/2002, Bluetooth SIG thiết lập cơ quan đầu não toàn cầu tại
Overland Park, Kansas, USA. Năm 2002 đánh dấu sự đời các thế hệ
máy tính Apple hỗ trợ Bluetooth. Sau đó không lâu Bluetooth cũng
được thiết lập trên máy Macintosh với hệ điều hành Mac OS X.
Bluetooth cho phép chia sẻ tập tin giữa các máy Mac, đồng bộ hoá và
chia sẻ thông tin liên lạc giữa các máy Palm, truy cập internet thông
qua điện thoại di động có hỗ trợ Bluetooth (Nokia, Ericsson,
Motorola…).
• Tháng 5/2003, CSR (Cambridge Silicon Radio) cho ra đời 1 chip
Bluetooth mới với khả năng tích hợp dễ dàng và giá cả hợp lý hơn.
Điều này góp phần cho sự ra đời thế hệ Motherboard tích hợp
Bluetooth, giảm sự chênh lệch giá cả giữa các mainboard, cellphone
có và không có Bluetooth.. Tháng 11/2003 dòng sản phẩm Bluetooth
1.2 ra đời.
• Năm 2004, các công ty điện thoại di động tiếp tục khai thác thị trường
sôi nổi này bằng cách cho ra đời các thế hệ điện thoại di động đời mới
hỗ trợ Bluetooth (N7610, N6820, N6230). Motorola cho ra sản phẩm
Bluetooth đầu tay của mình. Các sản phẩm Bluetooth tiếp tục ra đời và
được xúc tiến mạnh mẽ qua chương trình “Operation Blueshock”
International Consumer Electronics Show (CES) tại Las Vegas ngày
9/1/2004
20
Chương 2 :Các tầng giao thức của Bluetooth
Chương 2 : Các tầng giao thức của Bluetooth
Các tầng giao thức của Bluetooth mô tả công nghệ Bluetooth làm việc
thế nào và những đặc điểm kĩ thuật của Bluetooth. Nó cung cấp những thông
tin cần thiết để tạo ra những sản phẩm dùng công nghệ bluetooth. Tuy nhiên
đặc tả không chỉ rõ những phần cứng, phần mềm cụ thể cũng như không mô tả
một phương pháp chính xác để xây dựng được sản phẩm.
Đặc tả Bluetooth do SIG phát triển và nội dung của nó lên đến hàng
ngàn trang (có thể coi thêm tại https://www.bluetooth.org/spec/ ) . Ở đây chúng
em xin giới thiệu một cách khái quát đặc tả của Bluetooth bao gồm chồng giao
thức (protocol stack) và mối quan hệ giữa các tầng của nó.
Chồng giao thức của Bluetooth:
Hình 2-1 Chồng giao thức của Bluetooth
Sau đây là từng thành phần của chồng giao thức
21
Chương 2 :Các tầng giao thức của Bluetooth
2.1 Bluetooth Radio
Tầng Bluetooth radio là tầng thấp nhất được định nghĩa trong đặc tả
Bluetooth. Nó định nghĩa những yêu cầu cho bộ phận thu phát sóng hoạt động
ở tần số 2.4GHz ISM (Industrial, Scientific, and Medical). Băng tần ISM là
băng tần không cần đăng kí được dành riêng để dùng cho các thiết bị không
dây trong công nghiệp, khoa học và y tế.
Nhờ giao tiếp bằng sóng radio mà dữ liệu Bluetooth có thể xuyên qua
các vật thể rắn và phi kim.
Sóng radio của Bluetooth được truyền đi bằng cách nhảy tần số
(frequency hopping), có nghĩa là mọi packet được truyền trên những tần số
khác nhau. Tốc độ nhảy nhanh giúp tránh nhiễu tốt. Hầu hết các nước dùng 79
bước nhảy, mỗi bước nhảy cách nhau 1MHz, bắt đầu ở 2.402GHz và kết thúc
ở 2.480GHz. Ở một vài nước, chẳng hạn như Pháp, Nhật, phạm vi của dải băng
tần này được giảm đi còn 23 bước nhảy.
Hình 2-2 Frequency hopping
Bluetooth được thiết kế để hoạt động ở mức năng lượng rất thấp. Đặc tả
đưa ra 3 mức năng lượng từ 1mW tới 100 mW
• Mức năng lượng 1 (100mW): Được thiết kế cho những thiết bị có
phạm vi hoạt động rộng (~100m)
22
Chương 2 :Các tầng giao thức của Bluetooth
• Mức năng lượng 2 (2.5mW): Cho những thiết bị có phạm vi hoạt
động thông thường (~10m)
• Mức năng lượng 3 (1mW): Cho những thiết bị có phạm vi hoạt động
ngắn (~10cm)
Những thiết bị có khả năng điều khiển mức năng lượng có thể tối ưu hóa
năng lượng bằng cách dùng những lệnh LMP (Link Manager Protocol).
2.2 Baseband
Baseband protocol nằm ở tầng vật lý của Bluetooth. Nó quản lý những
kênh truyền và liên kết vật lý tách biệt khỏi những dịch vụ khác như sửa lỗi,
chọn bước nhảy và bảo mật. Tầng Baseband nằm bên trên tầng radio trong
chồng giao thức của Bluetooth. Baseband protocol được cài đặt như là một
Link Controller. Nó cùng với Link Manager thực hiện những công việc ở mức
thấp như kết nối, quản lý năng lượng. Tầng Baseband cũng quản lý những kết
nối đồng bộ và không đồng bộ, quản lý các gói tin, thực hiện tìm kiếm và yêu
cầu kết nối đến các thiết bị Bluetooth khác.
2.2.1 Network topology
Hai hoặc nhiều thiết bị kết nối với nhau tạo thành một piconet. Các thiết
bị kết nối theo kiểu ad-hoc nghĩa là kiểu mạng được thiết lập chỉ cho nhu cầu
truyền dữ liệu hiện hành và tức thời, sau khi dữ liệu truyền xong, mạng sẽ tự
hủy. Trong một piconet, một thiết bị đóng vai trò là Master (thường là thiết bị
đầu tiên tạo kết nối), các thiết bị sau đó đóng vai trò là Slave. Một piconet chỉ
có duy nhất 1 Master, Master thiết lập đồng hồ đếm xung để đồng bộ các thiết
bị trong cùng piconet mà nó đóng vai trò là Master. Master cũng quyết định số
kênh truyền thông. Tất cả các thiết bị còn lại trong piconet, nếu không là
Master thì phải là Slave. Chú ý: không cho phép truyền thông trực tiếp giữa
Slave – Slave.
Vai trò Master trong 1 piconet không cố định, ví dụ khi Master không
đủ tài nguyên phục vụ cho piconet, nó sẽ giao quyền lại cho một Slave “giàu
có” hơn làm Master, còn nó làm Slave.
23
Chương 2 :Các tầng giao thức của Bluetooth
Hình 2-3 Piconet
Khi có 2 hay nhiều piconet kết hợp lại truyền thông với nhau, ta có một
scatternet. Có 2 loại scatternet:
• Một Slave trong piconet này cũng là Slave trong piconet kia. Khi này
các piconet độc lập với nhau và không đồng bộ. Khi có nhiều piconet
độc lập, có thể bị nhiễu trên một số kênh, một số packet sẽ bị mất và
được truyền lại. Nếu tín hiệu là tiếng nói (tín hiệu thoại ), chúng sẽ bị
bỏ qua.
• Một Slave trong piconet này là Master trong piconet khác. Khi này 2
piconet đồng bộ nhau về clock (xung nhịp) và hopping (khoảng nhảy
tần số) vì Slave đóng vai trò Master trong piconet mới sẽ mang theo
clock và hopping của piconet cũ, đồng bộ cho các Slave trong
piconet mới mà nó làm Master.
24
Chương 2 :Các tầng giao thức của Bluetooth
Hình 2-4 Scatternet
2.2.2 Liên kết SCO và ACL
Tầng Baseband quản lý 2 dạng kết nối:
SCO link (Synchronous Connection Oriented) là một kết nối đối xứng
point-to-point giữa một Master và một Slave trong 1 piconet. Kết nối SCO chủ
yếu dùng để truyền dữ liệu tiếng nói. Master có thể hỗ trợ tối đa 3 kết nối SCO
đồng thời. SCO packet không chứa CRC (Cyclic Redundancy Check) và không
bao giờ truyền lại. Liên kết SCO được thiết lập chỉ sau khi 1 liên kết ACL đầu
tiên được thiết lập.
ACL Link (Asynchronous Connectionless Link) là một kết nối point-to-
multipoint giữa Master và tất cả các Slave tham gia trong piconet. Chỉ tồn tại
duy nhất một kết nối ACL. Hầu hết các ACL packet đều có thể truyền lại.
2.2.3 Địa chỉ thiết bị
Có 4 loại địa chỉ khác nhau có thể gán cho một thiết bị Bluetooth:
BD_ADDR, AM_ADDR, PM_ADDR, AR_ADDR.
- BD_ADDR: Bluetooth Device Address. Là 48 bit địa chỉ MAC theo
tiêu chuẩn IEEE quy định (Giống như địa chỉ MAC trên mỗi card
mạng), xác định duy nhất 1 thiết bị Bluetooth trên toàn cầu, trong đó 3
byte cho nhà sản xuất thiết bị và 3 byte cho sản phẩm.
25
Chương 2 :Các tầng giao thức của Bluetooth
- AM_ADDR: Active Member Address. Nó còn gọi là địa chỉ MAC
(Media Access Control) của một thiết bị Bluetooth. Nó là một con số 3 bit dùng để phân biệt giữa các active slave tham gia trong 1 piconet. 23 =
8 nên có tối đa 7 Slave active trong 1 piconet, còn 000 là địa chỉ
Broadcast (truyền đến tất cả các thành viên trong piconet). Địa chỉ này
chỉ tồn tại khi Slave ở trạng thái active.
- PM_ADDR: Parked Member Address. Là một con số 8 bit, phân biệt
các parked Slave. Do đó có tối đa 255 thiết bị ở trạng thái parked. Địa
chỉ này chỉ tồn tại khi Slave ở trạng thái parked.
- AR_ADDR: Access Request Address. Địa chỉ này được dùng bởi
parked Slave để xác định nơi mà nó được phép gửi thông điệp yêu cầu
truy cập tới.
2.2.4 Định dạng gói tin
Mỗi gói tin bao gồm 3 phần là Access code (72 bits) , header (54 bits)
và payload (0-2745 bits)
Hình 2-5 Định dạng gói tin Bluetooth
Access code: Dùng để đồng bộ hóa, dùng trong quá trình tìm kiếm thiết
bị và yêu cầu kết nối. Có 3 loại khác nhau của Access code: Channel Access
Code (CAC), Device Access Code (DAC) and Inquiry Access Code (IAC).
CAC dùng để xác định một piconet duy nhất, DAC dùng để thực hiện yêu cầu
kết nối, IAC dùng để thực hiện tìm kiếm thiết bị.
Header: Chứa một số thông tin về packet như thứ tự của packet, địa chỉ
đích, kiểm lỗi, v.v…
2.2.5 Quản lý trạng thái
Có 4 trạng thái chính của một thiết bị Bluetooth trong một piconet:
• Inquiring device (inquiry mode): Thiết bị đang phát tín hiệu tìm
những thiết bị Bluetooth khác.
26
Chương 2 :Các tầng giao thức của Bluetooth
• Inquiry scanning device (inquiry scan mode): Thiết bị nhận tín
hiệu inquiry của inquiry device và trả lời
• Paging device (page mode): Thiết bị phát tín hiệu yêu cầu kết nối
với thiết bị đã inquiry từ trước.
• Page scanning device (page scan mode): Thiết bị nhận yêu cầu kết
nối từ paging device và trả lời.
2.2.6 Thiết lập kết nối 2.2.6.1 Hình thành piconet
Một piconet được tạo bằng 4 cách:
• Có Master rồi, Master thực hiện paging để kết nối với 1 Slave
• Một unit (Master hay Slave) lắng nghe tín hiệu mà thiết bị của nó
truy cập được (scaning)
• Khi có sự chuyển đổi vai trò giữa Master và Slave
• Khi có một unit chuyển sang trạng thái active
Để thiết lập một kết nối mới, tiến trình Inquiry và Paging sẽ bắt đầu.
Tiến trình Inquiry cho phép 1 unit phát hiện các units trong tầm hoạt động cùng
với địa chỉ và đồng hồ của chúng. Sau khi Inquiry, thiết bị thực hiện tiếp tiến
trình Paging để thiết lập kết nối, sau khi được page scanning device chấp nhận
kết nối mới thực sự được thiết lập.
Unit nào thiết lập kết nối sẽ phải thực hiện tiến trình paging và tự động
trở thành Master của kết nối.
Sau thủ tục paging (PAGE), Master thăm dò Slave bằng cách gởi packet
POLL thăm dò hay packet NULL rỗng.
Chỉ có Master gởi tín hiệu POLL cho Slave, ngược lại không có. Khi
thiết bị tạo paging muốn tạo các kết nối ở các tầng trên LM (link manager), nó
sẽ gởi yêu cầu kết nối host theo nghi thức LMP (Link Manager Protocol). Khi
unit quản lý host này nhận được thông điệp, nó thông báo cho host biết về kết
nối mới. Thiết bị từ xa có thể chấp nhận (gởi thông điệp chấp nhận theo nghi
thức LMP) hoặc không chấp nhận kết nối (gởi thông điệp không chấp nhận
theo nghi thức LMP). Sau đó 2 thiết bị có thể trao đổi dữ liệu với nhau.
27
Chương 2 :Các tầng giao thức của Bluetooth
2.2.6.2 Hình thành scatternet
Một Master/Slave của piconet này có thể thành Slave của piconet khác
nếu bị Master của piconet khác thực hiện tiến trình paging với nó. Có nghĩa là
bất kỳ unit nào cũng có thể tạo 1 piconet mới bằng cách paging một unit đã là
thành viên của một piconet nào đó.
Ngược lại, bất kỳ unit nào tham gia trong 1 piconet, đều có thể thực hiện
paging lên Master/Slave của piconet khác. Điều này có thể dẫn đến việc chuyển
đổi vai trò giữa Master và Slave trong kết nối mới này.
2.2.7 Các chế độ kết nối:
• Active mode: Trong chế độ này, thiết bị Bluetooth tham gia vào hoạt
động của mạng. Thiết bị master sẽ điều phối lưu lượng và đồng bộ
hóa cho các thiết bị slave.
• Sniff mode: là 1 chế độ tiết kiệm năng lượng của thiết bị đang ở
trạng thái active. Ở Sniff mode thiết bị slave lắng nghe tín hiệu từ
mạng với tần số giảm hay nói cách khác là giảm công suất. Tần số
này phụ thuộc vào tham số của ứng dụng. Đây là chế độ ít tiết kiệm
năng lượng nhất trong 3 chế độ tiết kiệm năng lượng.
• Hold mode: là 1 chế độ tiết kiệm năng lượng của thiết bị đang ở
trạng thái active. Master có thể đặt chế độ Hold mode cho slave của
mình. Các thiết bị có thể trao đổi dữ liệu ngay lập tức khi thoát khỏi
chế độ Hold mode. Đây là chế độ tiết kiệm năng lượng trung bình
trong 3 chế độ tiết kiệm năng lượng
• Park mode: là 1 chế độ tiết kiệm năng lượng của thiết bị vẫn còn
trong mạng nhưng không tham gia trong qua trình trao đổi dữ liệu
(inactive). Thiết bị ở chế độ Park mode bỏ địa chỉ MAC, chỉ lắng
nghe tín hiệu đồng bộ hoá và thông điệp broadcast của Master. Đây
là chế độ tiết kiệm năng lượng nhất trong 3 chế độ tiết kiệm năng
lượng.
2.2.8 Những chức năng khác của Baseband
• Sửa lỗi
28
Chương 2 :Các tầng giao thức của Bluetooth
• Quản lý lưu lượng dữ liệu: Baseband dùng cấu trúc dữ liệu FIFO
trong việc truyền và nhận dữ liệu
• Đồng bộ hóa
• Bảo mật
2.3 Link Manager Protocol
Link Manager (LM) thực hiện việc thiết lập kênh truyền, xác nhận hợp
lệ, cấu hình kênh truyền. Nó tìm kiếm những LM khác và giao tiếp với chúng
thông qua Link Manager Protocol. Để thực hiện được vai trò của mình, LM
dùng những dịch vụ do tầng Link Controller bên dưới cung cấp.
Về cơ bản, các lệnh LMP bao gồm các PDU (Protocol Data Unit – Xem
thêm trong phần SDP bên dưới) được gửi từ thiết bị này sang thiết bị khác.
2.4 Host Controller Interface
HCI cung cấp một giao diện cho phép các tầng bên trên điều khiển
Baseband Controller và Link Manager, đồng thời cho phép truy cập đến trạng
thái của phần cứng và các thanh ghi điều khiển. Về bản chất, giao diện này
cung cấp một phương thức duy nhất để truy cập đến những khả năng của băng
tần cơ sở. HCI tồn tại trong 3 phần: Host – Transport layer – Host controller.
Mỗi phần đóng một vai trò khác nhau trong hệ thống HCI.
2.4.1 Những thành phần chức năng của HCI
Về mặt chức năng, HCI được chia thành 3 phần riêng biệt là HCI
firmware, HCI driver và Host controller transport layer. Hình sau mô tả mô
hình hoạt động của các thành phần HCI.
29
Chương 2 :Các tầng giao thức của Bluetooth
Hình 2-6 Host Controller Interface
HCI firmware: nằm ở Host Controller (tức là nằm ở phần cứng của
Bluetooth). HCI firmware cung cấp các lệnh HCI cho phần cứng Bluetooth
bằng cách truy cập các lệnh ở tầng Baseband, Link Manager.
HCI driver: Nằm ở phần Host (tức là phần mềm) . Khi có sự kiện xảy
ra, một HCI event sẽ được gửi đến Host và Host sẽ phân tích gói tin nhận được
để xác định xem sự kiện nào đã xảy ra, sau đó nó sẽ chuyển các gói tin lên các
tầng bên trên.
Host controller transport layer: HCI driver và firmware giao tiếp với
nhau thông qua Host controller transport layer. Có nhiều loại transport layer
như: USB , UART và RS232. Nhờ vào Host controller transport layer mà phần
cứng và phần mềm có thể trao đổi dữ liệu mà không cần biết về cách thức dữ
liệu được trao đổi
30
Chương 2 :Các tầng giao thức của Bluetooth
Hình 2-7 Host controller transport layer
2.4.2 Các lệnh HCI
HCI cung cấp các lệnh cho phép truy cập tới phần cứng Bluetooth. Các
lệnh HCI Link cho phép phần Host khả năng điểu khiển việc kết nối đến các
thiết bị Bluetooth khác. Những lệnh này cần đến Link Manager để trao đổi các
lệnh LMP với các thiết bị Bluetooth khác.
2.4.3 Các sự kiện, mã lỗi, luồng dữ liệu HCI
Luồng dữ liệu
Luồng dữ liệu từ Host đến Host Controller được điều khiển để ngăn
ngừa việc bộ đệm của Host Controller bị tràn bởi dữ liệu ACL gửi đến các thiết
bị khác mà không có phản hồi. Phần Host sẽ quản lý bộ đệm của Host
Controller.
Các sự kiện HCI
31
Chương 2 :Các tầng giao thức của Bluetooth
Có nhiều sự kiện được định nghĩa cho tầng HCI. Các sự kiện này cung
cấp một phương thức để trả về các tham số và dữ liệu gắn với mỗi sự kiện. Cho
đến nay đã có 32 sự kiện HCI được cài đặt.
Mã lỗi HCI
Một số lượng lớn các mã lỗi đã được định nghĩa cho tầng HCI. Khi một
lệnh thất bại, các mã lỗi sẽ được trả về để cho biết nguyên nhân phát sinh lỗi.
Có 35 mã lỗi HCI khác nhau đã được định nghĩa.
2.4.4 Host Controller Transport Layer
UART Transport Layer
Mục tiêu của HCI UART Transport Layer là cho phép dùng Bluetooth
HCI thông qua giao diện serial giữa 2 UART. UART là viết tắt của từ
Universal Asynchronous Receiver – Transmitter. UART dùng để truyền và
nhận tín hiệu thông qua giao tiếp serial không đồng bộ.
RS232 Transport Layer
Mục tiêu của HCI RS232 Transport Layer là cho phép dùng Bluetooth
HCI thông qua giao diện RS232 giữa Bluetooth Host và Bluetooth Host
Controller. RS232 là một chuẩn công nghiệp về truyền nhận dữ liệu thông qua
cổng serial.
USB Transport Layer
Mục tiêu của HCI Universal Serial Bus (USB) Transport Layer là cho
phép dùng giao diện USB cho phần cứng Bluetooth.
2.5 Logical link control and adaption protocol (L2CAP)
L2CAP nằm bên trên giao thức băng tần cơ sở (Baseband protocol) và
nằm ở tầng Data Link. L2CAP cung cấp những dịch vụ hướng kết nối
(connection-oriented) và phi kết nối (connectionless) cho những tầng giao thức
bên trên. L2CAP có khả năng phân kênh (multiplexing), phân đoạn
(segmentation), tái tổ hợp (reassembly operation). L2CAP cho phép những giao
thức ở tầng cao hơn và những ứng dụng truyền, nhận những dữ liệu. Mỗi gói
dữ liệu L2CAP tối đa 64 kilobytes.
32
Chương 2 :Các tầng giao thức của Bluetooth
2.5.1 Những yêu cầu chức năng của L2CAP
Phân kênh giao thức (Protocol Multiplexing)
L2CAP phải hỗ trợ phân kênh giao thức bởi vì Baseband Protocol không
hỗ trợ việc xác định các giao thức ở tầng cao hơn. L2CAP phải có khả năng
phân biệt những giao thức ở tầng bên trên như Service Discovery Protocol,
RFCOMM, Telephony Control.
Phân đoạn và tái tổ hợp
So với những phương tiện truyền thông dùng dây khác thì những gói dữ
liệu được định nghĩa bởi Baseband Protocol bị giới hạn kích thước. Những gói
tin lớn phải được L2CAP chia nhỏ thành nhiều gói tin Baseband trước khi được
truyền đi. Tương tự, những gói tin Baseband nhận được sẽ được tái tổ hợp
thành một gói tin duy nhất kèm theo việc kiểm tra toàn vẹn dữ liệu. Chức năng
phân đoạn và tái tổ hợp thật sự cần thiết để hỗ trợ những giao thức dùng những
gói tin lớn hơn gói tin được hỗ trợ bởi Baseband.
2.5.2 Những đặc điểm khác của L2CAP
Định dạng gói tin
Các gói tin L2CAP được truyền dẫn dựa trên “kênh” (channel). Một
kênh đại diện cho một luồng dữ liệu. Các kênh có thể là hướng kết nối
(connection-oriented) hoặc phi kết nối (connectionless). Tất cả các gói tin được
lưu trữ dưới dạng Little Endian.
Các tùy chọn tham số cấu hình
Các tùy chọn là cơ chế để mở rộng khả năng điều phối các yêu cầu kết
nối. Các tùy chọn được truyền đi dưới dạng một tập hợp những thành phần bao
gồm kiểu tùy chọn, độ dài tùy chọn, và dữ liệu.
Các dịch vụ
Nhiều dịch vụ được cung cấp bởi L2CAP. Chúng bao gồm các phần:
Connection: Thiết lập, cấu hình, hủy kết nối
Data: Đọc, ghi
Group: Tạo, đóng, thêm thành viên, hủy thành viên
Information: Ping, lấy thông tin
33
Chương 2 :Các tầng giao thức của Bluetooth
Connetion-less traffic: Cho phép, ngăn cấm
2.6 RFCOMM Protocol
Giao thức RFCOMM cho phép giả lập cổng serial thông qua giao thức
L2CAP. Giao thức này dựa trên chuẩn ETSI TS 07.10. Chỉ có một phần của
chuẩn TS 07.10 được dùng và được chỉnh sửa cho phù hợp với Bluetooth.
RFCOMM hỗ trợ tối đa 60 kết nối cùng một lúc giữa 2 thiết bị
Bluetooth. Số kết nối tối đa tùy thuộc vào nhà sản xuất. Đối với RFCOMM,
một kết nối bao gồm 2 ứng dụng chạy trên 2 thiết bị riêng biệt (2 thiết bị đầu
cuối).
Loại thiết bị: Về cơ bản, RFCOMM cung cấp cho 2 loại thiết bị:
• Loại thiết bị 1 là những đầu cuối như máy tính hay máy in.
• Loại thiết bị 2 là những thành phần dùng để truyền dữ liệu, chẳng
hạn modem.
Tín hiệu điều khiển: RFCOMM giả lập 9 mạch của chuẩn RS232, 9
mạch đó là:
Pin Circuit Name
102 Signal Common
103 Transmit Data (TD)
104 Received Data (RD)
105 Request to Send (RTS)
106 Clear to Send (CTS)
107 Data Set Ready (DSR)
108 Data Terminal Ready (DTR)
109 Data Carrier Detect (CD)
125 Ring Indicator (RI)
Nhiều cổng nối tiếp giả lập: 2 thiết bị Bluetooth dùng RFCOMM trong
giao tiếp giữa chúng có thể mở nhiều cổng nối tiếp (serial port). RFCOMM hỗ
trợ tối đa 60 cổng, tuy nhiên số cổng có thể dùng trong một thiết bị tùy thuộc
vào nhà sản xuất.
2.7 Service Discovery Protocol
SDP cho phép các ứng dụng tìm kiếm những dịch vụ và thuộc tính của
các dịch vụ có trong một thiết bị Bluetooth. SDP. Điều này rất cần thiết bởi vì
34
Chương 2 :Các tầng giao thức của Bluetooth
các dịch vụ mà một thiết bị Bluetooth cung cấp sẽ thay đổi tùy theo mỗi thiết
bị.
2.7.1 Thiết lập giao thức SDP
SDP là một giao thức đơn giản với những yêu cầu tối thiểu về việc
truyền dẫn bên dưới. SDP dùng mô hình request / response với mỗi giao tác
bao gồm một request protocol data unit (PDU) và một response PDU. Client sẽ
gửi yêu cầu đến server, và server sẽ trả lời ngược lại client.
Định dạng PDU: Mỗi PDU bao gồm 1 PDU header, theo sau là các
tham số PDU. Phần header bao gồm 3 trường:
• PDU ID: Xác định loại PDU cho biết ý nghĩa của nó và nó chứa loại
tham số nào.
• Transaction ID: Dùng để xác định duy nhất một request PDU và
dùng để ánh xạ giữa response PDU và request PDU.
• Parameter length: Cho biết độ dài (tính bằng byte) của tất cả tham số
chứa trong PDU.
Partial response và continuation state: Vài request PDU có thể yêu
cầu các phản hồi có kích thước lớn hơn 1 response PDU. Trong trường hợp
này, SDP server sẽ phát sinh các partial response chứa một phần của phản hồi,
đồng thời kèm theo mỗi partial response là một continuation state cho biết phản
hồi đó còn nhiều phần nữa.
35
Chương 2 :Các tầng giao thức của Bluetooth
Quản lý lỗi: Trong trường hợp request PDU gửi đến server bị lỗi thì
server sẽ phản hồi bằng một error PDU.
2.7.2 Các dịch vụ SDP
Service record: Tất cả các thông tin về một dịch vụ được chứa trong
một service record. Service record chứa một danh sách các thuộc tính của dịch
vụ (service attribute)
Service attribute: Mỗi service attribute mô tả một thuộc tính của dịch
vụ. Mỗi service attribute bao gồm 2 thành phần: attribute ID và attribute value.
Attribute ID là một số nguyên không dấu 16 bit xác định duy nhất một thuộc
tính trong một service record. Attribute value có độ dài không cố định chứa giá
trị của thuộc tính. Trong giao thức SDP, attribute value được thể hiện bằng một
phần tử dữ liệu (data element).
Service class: Mỗi dịch vụ là một thể hiện của một lớp dịch vụ (service
class). Lớp dịch vụ cung cấp các định nghĩa cho tất cả thuộc tính chứa trong
service record. Mỗi định nghĩa thuộc tính cho biết giá trị của attribute ID, mục
đích sử dụng của attribute value, định dạng của attribute value. Mỗi lớp dịch vụ
được gán một con số định danh duy nhất, được gọi là UUID (Universal Unique
Indentifier).
2.7.3 Tìm kiếm dịch vụ
Nhiệm vụ chính của SDP là cho phép một thiết bị Bluetooth tìm kiếm
xem các thiết bị Bluetooth khác có cung cấp những dịch vụ nào. SDP cho phép
làm điều này bằng nhiều cách: Searching, tìm kiếm một dịch vụ cụ thể, hoặc
Browsing, lấy những dịch vụ đang được cung cấp.
2.7.3.1 Tìm kiếm dịch vụ cụ thể (Searching for Service)
Phiên tìm kiếm dịch vụ cho phép một client tìm được Service record cụ
thể trên server dựa trên các giá trị của thuộc tính trong những record này.
Client không có khả năng tìm service record dựa trên các thuộc tính có
giá trị tùy tiện. Nói đúng hơn là Client chỉ có thể tìm các thuộc tính dựa trên
Universally Unique Identifers (UUIDs). Một mẫu tìm kiếm dịch vụ thường so
36
Chương 2 :Các tầng giao thức của Bluetooth
sánh với một danh sách các UUIDs (những thuộc tính của dịch vụ) để tìm ra
dịch vụ mà nó cần.
2.7.3.2 Duyệt dịch vụ (Browsing for service)
Tiến trình này lấy tất cả các dịch vụ mà nó được phép duyệt. Trong
SDP, Client dựa trên một thuộc tính được tất cả các lớp dịch vụ chia sẻ. Thuộc
tính này được gọi là BrowseGroupList. Giá trị của các thuộc tính này gồm một
danh sách các UUIDs, mỗi UUID đại diện cho một BrowseGroup dùng cho
mục đích duyệt service.
Khi Client duyệt lướt qua các dịch vụ của SDP Server, nó tạo một mẫu
tìm dịch vụ chứa các UUID đại diện cho BrowseGroup. Tất cả các dịch vụ
được duyệt có giá trị UUID giống với giá trị của thuộc tính trong
BrowseGroupList.
2.7.4 Data element
Trong giao thức SDP, một thuộc tính được xem như là một phần tử dữ
liệu (data element). Một phần tử dữ liệu bao gồm 2 trường: trường header và
trường dữ liệu. Trường header gồm 2 phần: phần mô tả kiểu và phần mô tả kích
thước. Trường dữ liệu có kích thước và kiểu như đã được mô tả trong phần
header.
37
Chương 3 :Ưu điểm và khuyết điểm của Bluetooth
Chương 3 : Ưu điểm và khuyết điểm của Bluetooth
3.1 Ưu điểm
• Sóng radio sử dụng băng tần không cần đăng ký.
• Có khả năng xuyên qua vật thể rắn và phi kim.
• Khả năng kết nối point-point, point-multipoint.
• Sử dụng ít năng lượng.
• Sử dụng “frequency hopping” giúp giảm đụng độ tối đa.
• Có khả năng hỗ trợ 3 kênh thoại và 1 kênh dữ liệu.
• Có khả năng bảo mật từ 8(cid:198)128bit.
• Thiết bị nhỏ gọn.
• Giá rẻ.
• Thiết lập cài đặt dễ dàng.
• Được đỡ đầu bởi 9 tập đoàn khổng lồ.
3.2 Khuyết điểm
• Do sử dụng mô hình adhoc (cid:198) không thể thiết lập các ứng dụng thời
gian thực.
• Khoảng cách kết nối còn ngắn so với các công nghệ mạng không dây
khác.
• Số thiết bị active, pack cùng lúc trong một piconect còn hạn chế.
• Tốc độ truyền không phải là một thế mạnh của Bluetooh.
38
Chương 3 :Ưu điểm và khuyết điểm của Bluetooth
3.3 So sánh Bluetooth với một số công nghệ không dây khác
Công nghệ không dây không phải là một ý tưởng mới, trong thời đại
công nghệ hiện nay, nhu cầu phát triển các hệ thống không dây ngày càng
nhiều trên những lĩnh vực khác nhau. Vấn đề là công nghệ nào sẽ thích hợp
trong lĩnh vực nào, trường hợp nào, điều này phụ thuộc vào phạm vi hoạt động,
khả năng bảo mật, băng thông, tốc độ, giá cả, cách truyền tín hiệu, khả năng kết
nối giữa các thiết bị, năng lượng và tính dễ sử dụng của công nghệ đó. Có công
nghệ cho phép kết nối không dây ở khoảng cách xa, nhưng lại đắt (Wi-Fi), có công nghệ có giá rẽ nhưng khoảng cách lại quá ngắn (IrDA1), có những thiết bị
mà năng lượng là nguồn sống còn thì vấn đề tiết kiệm năng lượng được đặt lên
hàng đầu. Bluetooth là một công nghệ dung hòa giữa vấn đề sử dụng năng
lượng, khoảng cách, giá cả, bảo mật và tính dễ sử dụng. Để hiểu rõ thêm về đặc
tính của Bluetooth ta hãy xem những so sánh dưới đây.
3.3.1 Bluetooth và WiFi
WiFi là một công nghệ không dây mới có một số tính năng hơn hẳn
Bluetooth. Vậy liệu WiFi và Bluetooth có cùng bắt tay nhau trên con đường
chinh phục thế giới không dây không? Hay chúng ta phải chia tay với
Bluetooth tại đây?
Trong kỹ thuật mạng LAN không dây (WLAN2), 802.11b, chuẩn mạng
của Wi-Fi, là một thành viên trong gia đình gồm 3 thành viên 802.11, 802.11a,
802.11b, đây là chuẩn do Institute of Electrical and Electronics Engineers
(IEEE) phát triển.
802.11b là chuẩn áp dụng cho mạng LAN không dây kiểu Ethernet3,
hoạt động trong vùng sóng radio 2.4 GHz. Tốc độ truyền dữ liệu từ 5.5 Mbps
đến 11 Mbps, và có thể lên đến 20 Mbps. 802.11b hỗ trợ mạng nhiều điểm
(multipoint networking) những kiểu truyền dữ liệu như các gói tin broadcast,
multicast, unicast. Chuẩn này cho phép tại một điểm truy cập (access point) có
1 Infrared data association 2 Wireless Local Area Networking 3 Ethernet dùng kỹ thuât thâm nhập nhiều mối bằng cảm nhận sóng mang có dò xung đột ( CSMA/CD) để đề phòng trục trặc cho mạng khi có hai thiết bị đồng thời cùng cố thâm nhập vào mạng
39
Chương 3 :Ưu điểm và khuyết điểm của Bluetooth
thể từ 10(cid:198)20 client, nhưng địa chỉ MAC được đánh trong mỗi thiết bị cho
phép thiết lập một số lượng thiết bị không giới hạn ảo để giao tiếp với nhau
trong mạng. Kỹ thuật Carrier Sense Multiple Access và Collision Avoidance
(CSMA/CA) đựơc sử dụng để điều khiển các kênh chung và tránh xung đột
(avoid collision)
40
Chương 3 :Ưu điểm và khuyết điểm của Bluetooth
Bảng dưới đây thể hiện sự so sánh giữa Wi-Fi và Bluetooth
802.11b (Wi-Fi) Bluetooth
Thay thế cho cáp của Phiên bản không dây Tầm hoạt động
thiết bị cá nhân của chuẩn Ethernet .
Truy cập mạng không Truy cập mạng không
dây khoảng cách trung dây với khoảng cách dài
bình
1 Mbps, chia sẻ 11 Mbps, chia sẻ Băng thông
Băng thông hiệu quả
Tối thiểu từ 2 (cid:198) 3 Mbps với WEP4
Các thiết bị sử dụng sóng Các thiết bị sử dụng Nhiễu
radio khác, các vật liệu, sóng radio khác, các vật
thiết bị xây dựng. liệu, thiết bị xây dựng.
Không bảo mật bằng Không an toàn nếu Bảo mật
wifi. Mức độ liên kết không được bảo mật tốt.
được thiết lập sẵn là Mức độ liên kết WEP
“Authorized”. được cài sẵn dễ bị bẻ
Khó đụng độ hơn khi gẫy. Có thể tin tưởng
trong trạng thái sniffing. vào các ứng dụng phân
Vẫn yêu cầu các ứng quyền và được mã hoá
dụng có phân quyền và
mã hoá.
Thấp hơn nhiều Rất cao Năng lượng tiêu thụ
Có 3 chế độ Standby Cần rất nhiều năng
modes: Sniff, Hold, lượng để duy trì kết nối.
Park để giảm năng
lượng duy trì kết nối.
Được lắp đặt sẵn trong Được lắp đặt sẵn trong Thiết bị hỗ trợ
4 Wired Equivalent Privacy
41
Chương 3 :Ưu điểm và khuyết điểm của Bluetooth
các laptop hiện đại, hoặc các laptop hiện đại, hoặc
các thiết bị yêu cầu: các thiết bị yêu cầu:
external H/W card external H/W card
Yêu cầu kiến thức về Yêu cầu biết thiết lập Những bước truy cập
thiết lập mạng access point vào mạng LAN
100 m 10 m Khoảng cách
$25 $5 Giá thành
TCP/IP TCP/IP, OBEX Ứng dụng hỗ trợ
Không Không Phải kết nối theo
đường thẳng
Nhiều, chia sẻ Tối đa 8, chia sẻ Số thiết bị có thể truy
cập đồng thời
Bảng 3-1 So sánh giữa Wi-fi và Bluetooth
3.3.2 Bluetooth và Hồng ngoại
IrDA là tổ chức quốc tế phát triển chuẩn truyền dữ liệu bằng kết nối
Hồng ngoại. Hồng ngoại đã được khai thác sử dụng từ lâu và được sử dụng rất
phổ biến trong các thiết bị di động hiện nay. Việc tích hợp các thiết bị hồng
ngoại trên các sản phẩm rất dễ dàng. Một thiết bị hồng ngoại chỉ khoảng 1$ và
chỉ tốn thêm chi phí là 1$ để tích hợp hồng ngoại lên các thiết bị khác, tức là
chỉ với 2$ đã có thể trang bị thêm một thiết bị hồng ngoại, cũng chính vì thế mà
Bluetooth chưa thể chiếm lĩnh thị trường và phát triển rộng rãi như hồng ngoại.
Bluetooth là một sự bổ sung hiệu quả cho hồng ngoại ở kỹ thuật truyền tiếng
nói. Vì thế một số thiết bị có trang bị cả Bluetooth lẫn hồng ngoại sẽ cung cấp
những giải pháp không dây trong khoảng cách ngắn hiệu quả hơn. Một số thiết
bị khác có sự chọn lựa giữa việc trang bị hồng ngoại hay Bluetooth, việc này
phụ thuộc vào mô hình sử dụng của thiết bị đó. Vậy Hồng ngoại có gì khác so
với Bluetooth ?
42
Chương 3 :Ưu điểm và khuyết điểm của Bluetooth
Bảng dưới đây thể hiện sự so sánh giữa Hồng ngoại và Bluetooth
Hồng ngoại (Wi-Fi) Bluetooth
Thay thế cho cáp của Infrared data association Tầm hoạt động
thiết bị cá nhân (IrDA) thay thế cáp của
Truy cập mạng không các thết bị cá nhân.
dây khoảng cách trung Truy cập mạng không
bình dây với khoảng cách
ngắn
4Mbit/s (cid:198) 16 Mbit/s 1 Mbps, chia sẻ Băng thông
Băng thông hiệu quả
Không Các thiết bị sử dụng sóng Nhiễu
radio khác, các vật liệu,
thiết bị xây dựng.
Bản thân Hồng ngoại đã Mức độ liên kết được Bảo mật
thiết lập bảo mật sẵn. thiết lập sẵn là
“Authorized”.
Vẫn yêu cầu các ứng
dụng có phân quyền và
mã hoá.
Trung bình Rất thấp Năng lượng tiêu thụ
Được lắp đặt sẵn trong Được khẳng định trên Thiết bị hỗ trợ
các laptop hiện đại, hoặc phạm vi toàn thế giới với
các thiết bị yêu cầu: hơn 150 triệu thiết bị hỗ
external H/W card trợ cùng với phần cứng
và nhiều phần mềm cơ
sở khác.
Đơn giản Yêu cầu biết thiết lập Những bước truy cập
access point vào mạng LAN
43
Chương 3 :Ưu điểm và khuyết điểm của Bluetooth
1 m 10 m Khoảng cách
$1 $5 Giá thành
OBEX TCP/IP, OBEX Ứng dụng hỗ trợ
Không phải kết nối theo Tầm hoạt động trong Phải kết nối theo
đường thẳng và có thể đường thẳng
xuyên qua phi kim một hình nón có mà góc ở chóp là 300 và không
thể xuyên vật cản
1 Tối đa 8, chia sẻ Số thiết bị có thể truy
cập đồng thời
Bảng 3-2 So sánh giữa Hồng ngoại và Bluetooth
44
Chương 4 :Tầm ứng dụng và tương lai của Bluetooth
Chương 4 : Tầm ứng dụng và tương lai của Bluetooth
4.1 Tầm ứng dụng
Do những đặc thù về công nghệ truyền dẫn nên Bluetooth cho phép duy
trì đa kết nối với những loại packet khác nhau nhằm tối ưu hoá trong việc
truyền âm thanh hoặc truyền dữ liệu bằng 2 giao thức liên kết: ACL và SCO.
Bluetooth là một công nghệ tuyệt vời cho việc thay thế cáp dẫn trong phạm vi
vừa phải. Các ứng dụng của Bluetooth sẽ xoay quanh những vấn đề về truyền
âm thanh, truyền dữ liệu, mạng đa liên kết, đồng bộ hóa dữ liệu. Bluetooth
cũng có thể dùng cho các game nhiều người chơi hoặc dùng trong các hệ thống
điều khiển. Dựa trên những đặc điểm trên người ta chia những ứng dụng
Bluetooth thành nhiều dạng.
4.1.1 Thiết bị thông minh
Các thiết bị thông minh gồm: PC, PDA, cellphone …
Hình 4-1 Điện thoại di động
Điện thoại di động: Sony-Ericsson P800, P900, Nokia 7650, Nokia
3650, Nokia 6600, Nokia 7610 v.v. Công nghệ Bluetooth gắn sẵn trên các thiết
bị di động nên nó có thể kết nối với các thiết bị khác mà không dùng cáp. Ví dụ
kết nối với tai nghe Bluetooth, camera kỹ thuật số hay máy tính. Các điện thoại
này có một thiết bị hỗ trợ làm máy chụp hình kỹ thuật số tí hon. Chúng được
kết nối với nhau nên vừa chụp hình vừa gửi nhận hình ảnh dưới dạng ảnh VGA
với các máy điện thoại và máy tính cá nhân khác thông qua công nghệ
Bluetooth. Sử dụng e-mail ngay cả khi máy tính cầm tay vẫn còn nằm trong
cặp đựng. Khi máy tính của bạn nhận được một e-mail, bạn sẽ nghe được một
45
Chương 4 :Tầm ứng dụng và tương lai của Bluetooth
tiếng chuông báo hiệu từ chiếc điện thoại di động của mình. Bạn cũng có thể
duyệt các e-mail nhận được từ chiếc điện thoại của mình.
Palm Tungsten W: Một trung tâm dữ liệu cầm tay
cung cấp một sự kết hợp tinh vi của công nghệ thư điện tử
không dây, thông điệp SMS, các chức năng của điện thoại,
các ứng dụng kinh doanh và phần mềm quản lý thông tin
cá nhân của Palm. Với 3 băng tần 900-1800-1900Mhz,
Palm Tungsten W được chế tạo với một trong những sóng
vô tuyến nhanh nhất hiện nay cho các mạng GSM/ GPRS;
vì thế, bạn có thể dùng nó như một chiếc điện thoại với tai Hình 4-2 Máy Palm nghe Bluetooth. Palm Tungsten W không sử dụng SIM, và
nó có thể được dùng với bất kỳ nhà cung cấp dịch vụ nào.
4.1.2 Thiết bị truyền thanh:
Các thiết bị truyền thanh gồm: Tai nghe, loa, các trạm thu âm thanh….
Hình 4-3 Các thiết bị truyền thanh
Tai nghe Nokia HDW-2 (113 Euro): Chiếc
tai nghe này được trang bị công nghệ kết nối không
dây tương thích đặc tả Bluetooth 1.1. Nó làm việc
được với hầu hết các điện thoại và thiết bị có sử
dụng Bluetooth. Nó giúp ta thực hiện dễ dàng các
thao tác cơ bản của 1 cuộc điện thoại ngay cả khi
chiếc điện thoại vẫn còn nằm trong túi xách. Tai
Hình 4-4 Tai nghe nghe Bluetooth giúp các tài xế vẫn có thể dán mắt
Bluetooth vào con đường trong khi nhận, nghe cuộc gọi. Tại
46
Chương 4 :Tầm ứng dụng và tương lai của Bluetooth
châu Âu cũng như tại một số thành phố của Mỹ, luật không cho phép các tài xế
sử dụng điện thoại di động trong khi điều khiển xe. Từ khi có kết nối Bluetooth
thì việc tài xế dùng điện thoại trong khi lái xe trở nên phổ biến.
Bộ dụng cụ không dây cho xe hơi của Sony-Ericsson (248 Euro): Nó
phép bạn gọi hay nhận cuộc gọi một cách dễ dàng và
an toàn khi đang lái xe. Nó kết nối với Bluetooth car
handsfree của bạn không cần cáp và cho phép điều
khiển cuộc gọi mà không cần chạm vào điện thoại. Lái
xe với công nghệ Bluetooth thì hoàn toàn nhàn hạ. Tất
cả được thay thế một cách tiện lợi bằng 5 nút điều
khiển để kích hoạt cuộc gọi, tăng – giảm âm lượng, trả
lời hay hủy bỏ cuộc gọi. Sony-Ericsson HCB-30 hoạt
động với các loại điện thoại có tính năng Bluetooth của Sony Ericsson hay của
các hãng khác
4.1.3 Thiết bị truyền dữ liệu
Các thiết bị truyền dữ liệu như: Chuột, bàn phím, joystick, camera, bút
kỹ thuật số, máy in, LAN access point….
Hình 4-5 Thiết bị truyền dữ liệu
Với hơn 2000 công ty gia nhập SIG, Bluetooth có mức ứng dụng vô
cùng rộng lớn. Tất cả các thiết bị tin học hóa thường được tìm thấy trong các
văn phòng hiện đại hay ở gia đình mà không sử dụng một phương thức truyền
47
Chương 4 :Tầm ứng dụng và tương lai của Bluetooth
thông đồng bộ nào đều có thể được làm cho tương thích với Bluetooth, ví dụ
như : máy fax, máy in, modem, thiết bị truy cập mạng LAN (hub, switch…),
chuột và bàn phím, bộ tai nghe, joystick…
Bluetooth wireless ADSL router: Chỉ cần một bộ định tuyến cho tất cả
các thiết bị như máy PDA, máy PC, điện thoại, laptop, máy hát MP3, máy in,
máy hát đĩa v.v…
Hình 4-6 Adsl Router
Thực tế bất kỳ thiết bị số nào cũng có thể là một phần của hệ thống
Bluetooth. Công nghệ sóng vô tuyến Bluetooth có thể cung cấp một chiếc cầu
nối vạn năng tới các mạng dữ liệu đang tồn tại, một giao diện ngoại vi, và một
cơ chế để hình thành những nhóm nhỏ phi thể thức của các thiết bị được kết
nối, cách xa những cơ sở hạ tầng mạng cố định. Tính năng kết nối động của
Bluetooth làm nó trở nên chấp nhận được để thay thế USB (Universal Serial
Bus), và là một cải tiến trên hệ thống Plug – and – Play (cắm và chạy), nơi mà
hệ điều hành phải khởi động lại để cài đặt các thiết bị kết nối vào.
48
Chương 4 :Tầm ứng dụng và tương lai của Bluetooth
3Com Bluetooth PC Card (91.69 Euro):
Chiếc thẻ này tạo ra một sự kết nối giữa máy tính và
các thiết bị Bluetooth khác. Nó cho phép chia sẻ tập
tin một cách an toàn với các máy tính Bluetooth
khác, kết nối vào mạng LAN thông qua điểm truy
cập Bluetooth, hoặc quay số lên mạng với điện thoại Hình 4-7 Bluetooth card đi động. 3Com Bluetooth PC Card là cách thức đơn
giản để kết nối với thế giới.
Chuột Bluetooth: Có thể sử dụng khi ở xa màn hình hoặc trong khi di
chuyển khắp phòng.
Bàn phím Bluetooth: cũng thế. Ngoài ra, chúng còn giúp giảm bớt sự
mỏi mắt cho những người bị viễn thị và giảm bớt sự ảnh hưởng của bức xạ điện
từ của màn hình máy tính.
Một doanh nhân có thể yêu cầu chiếc máy tính xách tay của mình tìm
giúp một chiếc máy in phù hợp ngay khi anh ta bước vào tiền sảnh một khách
sạn và gửi dữ liệu cần in tới chiếc máy in đó khi nó được tìm thấy. Kết nối
không dây giữa máy in và máy fax, giữa máy quay phim kỹ thuật số và máy
chiếu video…. Các modem Bluetooth có chức năng quay số vào mạng và tự
động gửi, nhận e-mail….
4.1.4 Các ứng dụng nhúng
Các ứng dụng nhúng gồm: điều khiển nguồn năng lượng trong xe hơi,
các loại nhạc cụ, trong công nghiệp, y tế….
Tại châu Âu mật độ sử dụng Bluetooth trong xe hơi gần như là dày đặc,
và nó tạo thêm những cơ hội cho các điều khiển tự động như giao tiếp giữa
máy tính và xe hơi sử dụng Bluetooth, giữa xe hơi và garage, dùng điện thoại
di động mở, đóng xe…. Những loại xe được trang bị sẵn Bluetooth là BMW,
Lexuse, Lincolns, Toyota, Jeep Grand Cherokee, AcuraTL…
49
Chương 4 :Tầm ứng dụng và tương lai của Bluetooth
Hình 4-8 Các ứng dụng nhúng
4.1.5 Một số ứng dụng khác
Có thể nói, do có nhiều ưu điểm nên số lượng các công ty về công nghệ
thông tin tham gia vào SIG ngày càng nhiều. Chính vì vậy mà số lượng sản
phẩm sử dụng công nghệ Bluetooth và phạm vi ứng dụng của nó cũng ngày
càng gia tăng. Một trong những ứng dụng có giá trị của Bluetooth là dự án
Mạng bệnh viện không dây (Wireless Networks for Hospital). Sử dụng công
nghệ Bluetooth, mạng Bệnh viện có thể giải quyết các yêu cầu sau:
• Sự truy cập nhanh chóng thông tin của bệnh nhân tại các “Điểm
chăm sóc” (Point of Care) gần bên giường bệnh.
• Tự động truyền đến và nhận thông tin từ các thiết bị y tế
• Định vị và theo dõi tài sản, thiết bị trong khu vực bệnh viện.
• Bằng cách sử dụng các dạng máy trợ lý kỹ thuật số cá nhân (PDA)
có hỗ trợ Bluetooth, các bác sĩ có thể truy cập vào các mục thông tin
của bệnh nhân được cập nhật hằng giờ để theo dõi, điều trị mà không
cần phải đi khắp các giường bệnh. Tất nhiên nó cũng bao gồm việc
bảo mật thông tin bệnh án của từng bệnh nhân, tránh mất mát, sai
lệch. Nếu xảy ra rò rỉ hoặc sai lệch thông tin có thể gây ra những hậu
quả nghiêm trọng.
Bluetooth cung cấp một giải pháp tự nhiên cho việc theo dõi các thiết bị
di động. Các điểm truy cập sẽ định kỳ nhập vào một kiểu quét, mỗi báo cáo về
thiết bị Bluetooth trong phạm vi nó bao phủ. Những dấu hiệu nghe và nhìn thấy
có thể được báo về cho người quản lý các trường hợp bất thường. Có hai mức
quản lý các thiết bị Bluetooth này. Mức thấp (low-resolution) dựa trên các
50
Chương 4 :Tầm ứng dụng và tương lai của Bluetooth
điểm truy cập mỗi phân khu; mức cao (high-resolution) thì quản lý dựa trên các
phòng ban như hình minh họa sau:
Hình 4-9 Quản lý phòng ban
Là một công nghệ tiên tiến, nhiều ưu điểm, Bluetooth hứa hẹn sẽ mang
lại nhiều ứng dụng to lớn hơn nữa cho loài người trong tương lai không chỉ
trong lĩnh vực tin học, mà còn góp phần vào giáo dục, y tế, giải trí v.v…
4.2 Tương lai của Bluetooth
Với những đặc thù riêng về mặt công nghệ cũng như một chỗ đứng
vững vàng trên thương trường, vậy công nghệ này sẽ đi đến đâu?
4.2.1 Bluetooth sẽ thay thế cái gì?
Bluetooth tương đối mới phát triển vì thế nó chưa thể thay thế ngay
nhiều công nghệ không dây khác mà chỉ là đang dần thay thế. Các đối thủ cạnh
tranh trong lĩnh vực mạng không dây là Hồng ngoại, Wi-fi (802.11b wireless).
Kết nối Hồng ngoại được thiết lập trong khoảng cách ngắn và trong
phạm vi là hình chóp. Giá của các sản phẩm hồng ngoại rất rẻ. Hồng ngoại
không hỗ trợ các mức độ liên kết bảo mật (link-level security), nhưng bảo mật
của bản thân hồng ngoại thì rất cao, bởi vì kết nối trong khoảng cách ngắn, và
là mạng point-to-point. Năng lượng sử dụng của hồng ngoại thấp, bởi vì nó
không duy trì 1 kết nối, điều này cho phép năng lượng được tiết kiệm rất nhiều.
Wi-fi chỉ thích hợp cho những mạng lớn không yêu cầu về hiệu quả sử
dụng năng lượng và có giá thành khá đắt. Ở nước ta đã có những điểm truy cập
Internet bằng Wi-fi.
51
Chương 4 :Tầm ứng dụng và tương lai của Bluetooth
4.2.2 Chính phủ bảo trợ Bluetooth ?
Không có sự bảo trợ từ chính phủ là mối quan tâm hàng đầu của
Bluetooth. Tuy nhiên từ khi Bluetooth sử dụng tần số radio để làm việc, nó
buộc phải làm việc trên tần số 2.4 GHz, là một băng tần quốc tế cho phép sử
dụng không cần đăng ký. 802.11b wireless LANs, và các thiết bị khác như bộ
kiểm tra sóng radio nhỏ (baby monitor) và cửa garage cũng sử dụng băng tần
này.
(cid:198) Bluetooth có một lợi thế rất lớn là sử dụng băng tần không cần đăng
kí và được phép sử dụng trên toàn cầu.
4.2.3 Bluetooth là một công nghệ mở hay độc quyền
Không công ty nào tuyên bố là sở hữu Bluetooth một mình. Bluetooth là
thành quả nghiên cứu của nhiều công ty và được phát triển bởi nhóm SIG
(Bluetooth Special Interest Group), một tổ chức tình nguyện chính phát triển
Bluetooth. Tuy nhiên có những đẳng cấp khác nhau giữa các công ty, điều này
phụ thuộc vào sự quan tâm cũng như trình độ phát triển Bluetooth tại công ty
đó. Những mức độ này có thể là: nhà sáng chế (promoter), nhà cộng tác Gold
hoặc Silver (associate), Adopter.
Nhà sáng chế: Bluetooth được bảo hộ bởi các tập đoàn khổng lồ sau:
- 3Com
- Ericsson Technology Licensing AB
- IBM Corporation
- Intel Corporation
- Microsoft Corporation
- Motorola, Inc.
- Nokia
- Toshiba Corporation
- Agere Systems
Những công ty này chịu trách nhiệm về chiến lược và kỹ thuật phát triển
của Bluetooth. Ngoài ra, những thành viên từ những công ty này còn làm việc
cho The Bluetooth Qualification Review Board cũng như trong các nhóm kỹ
52
Chương 4 :Tầm ứng dụng và tương lai của Bluetooth
thuật phát triển Bluetooth. Những công ty khác có thể chỉ trở một thành viên
của nhóm sáng chế nếu được sự đồng ý của tất cả 9 công ty trên.
(cid:198) Có thể nói 9 tập đoàn đồ sộ trên là cha đỡ đầu của công nghệ
Bluetooth.
Các nhà cộng tác: Các công ty được công nhận quyền sử dụng các bản
thiết kế chi tiết kỹ thuật và có khả năng làm việc với các nhà cộng tác và nhà
sáng chế khác. Điều này cho phép họ làm việc trong các phần về chi tiết kỹ
thuật lõi của công nghệ.
Có 2 mức độ cho các nhà cộng tác đó là Gold và Silver. 2 mức độ này
chỉ sự khác nhau ở chỗ thành viên Silver không được giảm lệ phí hằng năm.
Adopter member: Thành viên có thể sử dụng phần chi tiết kỹ thuật
Bluetooth và sử dụng thương hiệu Bluetooth SIG nhưng không có bất kỳ đóng
góp gì trong kỹ thuật Bluetooth.
Bất cứ công ty nào muốn sử dụng Bluetooth trong sản phẩm của mình ít
nhất là phải trở thành Adopter member. Cái giá phải trả để trở thành Adopter là
“nothing”.
Trong khi nhóm Bluetooth SIG ra sức giới thiệu về những cách sử dụng
Bluetooth sao cho hiệu quả thì không phải thành viên nào cũng thật sự quan
tâm. Thường thì từng thành viên sẽ có những ý tưởng, những hướng đi riêng.
4.2.4 Ai sẽ hưởng lợi từ Bluetooth ?
Những ứng dụng Bluetooth có thể được dùng khá rộng rãi từ điện thoại
di động đến các nhà máy, khách sạn, sân bay, Bluetooth cung cấp những giải
pháp và sản phẩm hỗ trợ bất cứ ai.
Thường thì Bluetooth được tích hợp trong các sản phẩm trong nhà như:
tai nghe cho điện thoại, bàn phím không dây kết nối với laptop hoặc PDA.
Trong khi đó một số lượng lớn các công ty cũng trang bị Bluetooth để hạ giá
thành cho việc đi dây các thiết bị giám sát, đồng thời tạo nên một giá trị thẩm
mỹ nhất định.
(cid:198) Đối tượng phục vụ của Bluetooth là bất cứ ai thường xuyên thao tác
với các thiết bị điện, điện tử trong các lĩnh vực thương mại, du lịch, dịch vụ,
sản xuất, cũng như những tiện ích cá nhân dùng trong gia đình.
53
Chương 4 :Tầm ứng dụng và tương lai của Bluetooth
4.2.5 Tương lai của Bluetooth
Những công ty sử dụng kỹ thuật Bluetooth trong các sản phẩm của mình
lúc nào cũng tìm tòi những phương cách để cải tiến tính ứng dụng cho các sản
phẩm Bluetooh. Những hãng hàng không cũng được trang bị Bluetooth để
khách hàng có thể mua vé thông qua điện thoại di động của họ, hay có thể truy
vấn các thông tin của chuyến đi từ ghế ngồi của mình trên các phương tiện giao
thông như còn bao xa/lâu nữa thì đến nơi, hoặc có thể bật tắt hay điều chỉnh loa
trong các rạp hát, dĩ nhiên là cũng có thể làm tương tự với loa ở nhà mà không
cần dây nhợ gì cả.
Tương lai cho Bluetooth trở nên rõ ràng hơn khi giá của kỹ thuật này rất
rẽ so với lợi nhuận mà nó mang lại, những gì chúng ta có được từ những sản
phẩm có hỗ trợ Bluetooth.
Một báo cáo nghiên cứu cho thấy rằng tổng cộng 70 “hotspot” không
dây được hoạch định trong nhiều lĩnh vực như: Nhà hàng, trung tâm mua sắm
và trong lĩnh vực hàng không.
Trong năm 2003 khoảng 2.2 triệu các thiết bị cầm tay hỗ trợ Bluetooth
được tiêu thụ chiếm khoảng 2.8% thị trường các thiết bị cầm tay được bán, và
1.4% các thuê bao di động hiện nay trên thế giới (Zelos Group). Theo tính toán
của các nhà chuyên môn thì khoảng 7.8 triệu các thiết bị Bluetooth cầm tay
được bán chiếm khoảng 9.4% trên tổng các thiết bị cầm tay và khoảng 5.1%
thuê bao di động. Dự tính đến năm 2008, sản phẩm Bluetooth sẽ chiếm khoảng
60% các thiết bị cầm tay trên thị trường (Theo McAteer).Trong tương lai,
Bluetooth sẽ được chuẩn hoá trong trong khoảng 10 triệu điện thoại di động,
PC, laptop và hàng loạt các thiết bị điện tử khác. Kết quả là thị trường sẽ cần
những ứng dụng mang tính sáng tạo, tăng giá trị dịch vụ, những giải pháp triệt
để và nhiều những nhu cầu khác. Với những tiềm năng như thế, Bluetooth bắt
đầu trở thành một công nghệ được chấp nhận nhanh nhất trong lịch sử.
Tổ chức IEEE ( Institute of Electrical and Electronics Engineers) đánh
giá cao sự cần thiết của kết nối không dây giữa những mạng cá nhân ( Personal
Area Networks PANs), nên họ thành lập một nhóm nghiên cứu để phát triển
một chuẩn IEEE (IEEE Standard) lấy cơ sở từ Bluetooth technology.
54
Chương 4 :Tầm ứng dụng và tương lai của Bluetooth
IEEE 802.15 là nhóm phát triển mạng cá nhân không dây (Wireless
Personal Area Networks WPANs). Nhóm này đang phát triển các chuẩn cho
WPAN với khoảng cách ngắn giữa các thiết bị cầm tay như mày tính cầm tay
(handheld), máy tính bỏ túi (pocket computer), PDAs, điện thoại di động và các
thiết bị nhỏ khác.
Tương lai của công nghệ không dây Bluetooth là vô hạn. Những nhà
phát triển và sản xuất đang xúc tiến những chiến lược nhằm khéo léo thuyết
phục khách hàng về sự cần thiết tháo gỡ những dây cable thay vào đó là công
nghệ không dây Bluetooth ở bất cứ lĩnh vực nào có thể.
Các nhà báo và các nhà phân tích trên khắp thế giới thường xuyên đưa
ra những báo cáo về lợi ích của công nghệ không dây Bluetooth vì thế tiềm
năng cũng như tương lai của Bluetooth ngày càng được củng cố.
55
0PHẦN II. SYMBIAN
PHẦN II. SYMBIAN
Chương 5: Tổng quan về hệ điều hành Symbian và Series 60
Chương 6: Một số vấn đề khi xây dựng ứng dụng trên Symbian
Chương 7: Lập trình giao tiếp Bluetooth trên Symbian
56
Chương 5 :Tổng quan về hệ điều hành Symbian và Series 60
Chương 5 : Tổng quan về hệ điều hành Symbian và Series 60
5.1 Khái niệm về Symbian
Hệ điều hành Symbian bắt nguồn từ EPOC, vốn được phát triển ban đầu
bởi hãng Psion. Ngày nay, Symbian là một hệ điều hành được sử dụng rộng rãi
trên các thiết bị di động và được phát triển bởi các công ty như Sony Ericson,
Nokia, Motorola, Psion, Panasonic, Samsung. Symbian là hệ điều hành đa
nhiệm 32 bit viết bằng C++, được thiết kế theo phương pháp hướng đối tượng
và kiến trúc client – server, điều này giúp cho Symbian dễ mở rộng và phát
triển. Từ thuở ban đầu, Symbian đã được thiết kế để dành riêng cho những thiết
bị tiêu thụ ít năng lượng cùng với khả năng giao tiếp không dây. Những mục
tiêu thiết kế của Symbian bao gồm:
• Hiệu năng – Symbian được thiết kế sao cho yêu cầu rất ít năng lượng
• Đa nhiệm – Nhiều ứng dụng có thể hoạt động cùng lúc
• Chuẩn – Dùng các công nghệ đã được chuẩn hóa
• Hướng đối tượng – Symbian được thiết kế theo phương pháp hướng
đối tượng
• Quản lý bộ nhớ - Bộ nhớ được tối ưu, thích hợp cho các môi trường
nhúng
• Bảo mật - Cho phép trao đổi dữ liệu an toàn
• Hỗ trợ Unicode
5.2 Lịch sử phát triển của Symbian
• Năm 1988 đánh dấu sự ra đời của SIBO (sixteen bit organizer), tiền
thân của Symbian, ban đầu SIBO được phát triển bởi công ty Psion
Computers, chủ yếu thiết kế cho các thiết bị nhỏ. Máy tính đầu tiên
sử dụng SIBO là MC laptop và gặt hái được một số thành công nhất
định.
57
Chương 5 :Tổng quan về hệ điều hành Symbian và Series 60
• Năm 1991 Psion cho ra đời Series 3, màn hình được thiết kế vừa vặn
cho một máy tính bỏ túi.
• Năm 1996 đánh dấu sự ra đời của Series 3c với khả năng giao tiếp
hồng ngoại
• Năm 1998 với Series 3mx tốc độ xử lý được cải thiện, hơn hẳn các
thế hệ trước đó và 3 tính năng nổi trội sau: Quản lý tốt nguồn năng
lượng, hỗ trợ các hiệu ứng về ánh sáng cho các ứng dụng, vận hành
dễ dàng trên nhiều loại máy tính khác nhau. Vào giữa cuối những
năm 1990 Psion tung ra một hệ điều hành mới 32 bit với EPOC
kenel release 1, hỗ trợ màn hình cảm ứng, sử dụng đa phương tiện,
mở rộng nhiều khả năng giao tiếp. Hệ điều hành mới này được thiết
kế theo hướng đối tượng, cho phép dễ mang chuyển cho những kiến
trúc và thiết bị khác nhau. Nó bắt đầu cho nhiều tính năng cơ sở của
hệ điều hành Symbian về sau.
• Do những tính năng vượt trội trên, tháng 6 năm 1998 Psion và các
nhà lãnh đạo của những công ty mobile lớn như Nokia, Ericsson,
Motorola liên kết với nhau cùng nhau phát triển EPOC đánh dấu sự
ra đời của hệ điều hành Symbian (Symbian OS).
• Năm 1999 Matsushita (Panasonic) gia nhập vào hội những nhà phát
triển Symbian OS
• Năm 2000 Lần đầu tiên Symbian dành cho điện thoại ra đời, chạy
trên chiếc Ericsson R380 Smartphone, vào năm đó Sony và Sanyo
được cấp bản quyền Symbian OS.
• Năm 2001 Fujitsu, Siemens được cấp bản quyền Symbian OS, và
Symbian OS v6.1 cho điện thoại di động (2.5 G) được công bố, điện
thoại 2.5 G đầu tiên sử dụng Symbian OS là Nokia 7650.
• Năm 2002 Symbian OS v7.0 được công bố tại 3GSM World
Congress. Samsung được cấp bản quyền Symbian OS.
• Năm 2003 Symbian OS v7.0 được công bố rộng rãi, Nokia 6600 là
điện thoại đầu tiên sử dung Symbian 7.0 và tiếp theo là hàng loạt
những thành công khác với hệ điều hành mới này trên các thiết bị di
58
Chương 5 :Tổng quan về hệ điều hành Symbian và Series 60
động: Foma 2102v, Motorola A920, Nokia 7700, Sendo X, Siemens
SX1, Sony Ericsson P900….
• Công ty IDC dự đoán rằng 64 triệu điện thoại thông minh sẽ được
bán cho khách hàng vào năm 2005. Con số này lớn hơn tất cả các
thiết bị di động khác cộng lại. IDC cũng dự đoán rằng vào năm 2005,
Symbian sẽ chiếm lĩnh thị trường hệ điều hành cho điện thoại di
động thông minh.
5.3 Kiến trúc của hệ điều hành Symbian
Hệ điều hành Symbian được cấu thành bởi 6 thành phần sau:’
• Symbian OS kernel
• Middleware
• Synchronization Technology
• Application Engine
• User Interface Framework
• Java Virtual Machine Implementation
Hình 5-1 Kiến trúc hệ điều hành Symbian
Kernel thuộc về phần nhân của Symbian (Symbian core operating
system), middleware thuộc về phần system layer. Các thành phần này kết hợp
59
Chương 5 :Tổng quan về hệ điều hành Symbian và Series 60
với nhau tạo thành 1 phần mềm điều khiển hoạt động của các thiết bị từ máy
tính cầm tay cho đến điện thoại di động.
5.3.1 Symbian OS kernel
Là một chương trình chạy suốt từ khi mở đến khi tắt máy làm nhiệm vụ
quản lý các dịch vụ (services) hỗ trợ người dùng và quản lý các bảng dữ liệu
(data tables) của Symbian OS. Kernel của Symbian OS là một lõi điều hành hệ
thống gồm: Tập hợp những drivers, bảng dữ liệu (data tables) và một số
chương trình cho phép người dùng giao tiếp với phần cứng, do đó kernel cần
được trở nên nhỏ và hiệu quả. Những chức năng hoạt động thường xuyên thì
được đặt trong kernel, những chức năng khác được đặt trong middleware hay
application engine. Thiết kế này làm cho kernel thêm chặt chẽ và module hoá
kiến trúc và hoạt động của Symbian OS.
Ngay từ lúc hình thành Symbian OS đã được thiết kế hướng đối tượng
với một cấu trúc nhỏ gọn và hiệu quả. Đây là một OS 32 bit hỗ trợ multitasking
và multithreadding. Cấu trúc module của nó hỗ trợ giao tiếp component, cho
phép thêm các component để phù hợp với những thiết bị và những công nghệ
khác.
5.3.2 Middleware
Middleware là tập hợp các thư viện, kho dữ liệu và chương trình thực
hiện các chức năng hệ thống nhưng không cần thiết đặt trong kernel như: Quản
lý dữ liệu, giao tiếp, đồ hoạ.
Bằng việc tạo một tầng mới (middleware), các nhà thiết kế Symbian OS
dễ dàng thiết kế các dịch vụ hệ thống mới hoặc nâng cấp các dich vụ cũ mà
không cần phải viết lại kernel. Middleware tồn tại để hỗ trợ nhiều dịch vụ hệ
thống như: Hệ thống cửa sổ, giao tiếp mạng, cổng serial và hồng ngoại,
Bluetooth, quản lý đa phương tiện và cơ sở dữ liệu.
5.3.3 Application Engine
Application Engine cung cấp khả năng truy cập đến những tài nguyên
không quan trọng của hệ thống. Các application engine quản lý những dữ liệu
60
Chương 5 :Tổng quan về hệ điều hành Symbian và Series 60
và dịch vụ không liên quan đến hệ thống. Các ứng dụng mức người dùng tương
tác với application engine và application engine sẽ tương tác với middleware.
5.3.4 User Interface framework
Từ khi Symbian OS được sử dụng nhiều trên những thiết bị cầm tay thì
vấn đề thiết kế giao diện người dùng là cực kì quan trọng. Giao diện phải được
thiết kế sao cho dễ sử dụng, dễ thay đổi và dễ lập trình. Hơn thế nữa do nhiều
thiết bị được thiết kế khác nhau nên giao diện phải phù hợp với từng thiết bị. Vì
những ràng buộc trên các nhà thiết kế Symbian OS đã xây dựng một
framework giao diện người dùng như là một phần lõi của hệ điều hành.
Hiện tại có 2 loại Framework giao diện người dùng đó là Uikon và
Standard Eikon.Uikon là một framework lớn gồm tất cả các thiết kế dùng để
tham khảo.Standard Eikon chứa những module thường được sử dụng.
5.3.5 Synchronization technology
Đây là kỹ thuật cho phép đồng bộ hoá dữ liệu với những máy tính khác.
Kỹ thuật này gồm 3 phần:
- Quản lý kết nối: Một tiến trình do người dùng khởi tạo chạy trên
Symbian, phát hiện và đồng bộ hoá kết nối khi có một thiết bị khác
yêu cầu kết nối.
- Thực hiện dịch vụ khi kết nối: Gồm các dịch vụ khác nhau như duyệt
tập tin, sao lưu, phục hồi.
- Chuyển định dạng tập tin: Chuyển đổi các định dạng tập tin khác
nhau giữa các ứng dụng như rich text sang html
5.3.6 Java vitual machine implementation
Symbian OS hỗ trợ Java đầy đủ với bộ J2ME (Java 2 Micro Edition)
framework. J2ME do SunMicrosystems phát triển để lập trình Java các thiết bị
cầm tay.
5.4 Giới thiệu Series 60
Do ứng dụng PC Remote Control của chúng em được viết để chạy trên
Series 60, cho nên chúng em sẽ giới thiệu đôi nét về platform này.
61
Chương 5 :Tổng quan về hệ điều hành Symbian và Series 60
Sự ra đời của các thế hệ điện thoại thông minh đã tạo ra một môi trường
phát triển phần mềm mới. Môi trường mới này tạo điều kiện cho các nhà phát
triển phần mềm thiết kế những ứng dụng di động mang tính sáng tạo trong một
thị trường phát triển mạnh mẽ.
Series 60 cùng với những công cụ phát triển phần mềm kèm theo nó
được Nokia xây dựng để tham gia vào thị trường điện thoại cầm tay đầy sôi
động. Series 60 là platform chạy trên các loại điện thoại di động của Nokia như
7650, 3650, N-Gage, 6600, 7610 v.v… Series 60 gồm một giao diện đồ họa
người dùng và một bộ các ứng dụng, tất cả đều xây dựng dựa trên hệ điều hành
Symbian. Các thế hệ điện thoại 7650, 3650, N-Gage, … sử dụng hệ điều hành
Symbian 6.1, còn các thế hệ điện thoại mới nhất hiện nay như 6600, 7610, …
sử dụng hệ điều hành Symbian 7.0. Series 60 cung cấp các bộ Software
Development Kit (SDK) giúp cho các nhà phát triển phần mềm có thể tự xây
dựng những ứng dụng trên Series 60 bằng Java hoặc C++. SDK cho Series 60
từ phiên bản 1.2 trở về trước dùng cho các điện thoại chạy hệ điều hành
Symbian 6.1, còn phiên bản SDK mới nhất hiện nay là 2.0 dùng cho các điện
thoại chạy hệ điều hành Symbian 7.0. Ngoài ra Series 60 còn hỗ trợ rất nhiều
công nghệ khác như WAP 2.0 / XHTML, MMS, SyncML, Bluetooth, GPRS
v.v…
62
Chương 5 :Tổng quan về hệ điều hành Symbian và Series 60
Hình 5-2 Một số công nghệ được hỗ trợ trên Series 60
Màn hình của Series 60 có kích thước 176x208 pixel, bàn phím gồm có
1 bàn phím 12 phím (12-key numeric keypad), 2 phím để nghe và kết thúc cuộc
gọi (“send” and “end” keys), 2 softkey, 4 phím di chuyển (4-way navigation
key), 1 phím OK, 1 phím để vào giao diện ứng dụng (app launch key), 1 phím
xóa (clear key) và 1 phím để chuyển qua lại giữa các chế độ nhập liệu (alpha
toggle key).
Hình 5-3 Màn hình của Series 60
63
Chương 5 :Tổng quan về hệ điều hành Symbian và Series 60
Hình 5-4 Bàn phím của Series 60
Với cách bố trí các phím chức năng như vậy, Series 60 cho phép người
dùng thao tác dễ dàng chỉ bằng 1 tay, đây là một điểm mạnh của điện thoại di
động so với các thiết bị PDA khác, vốn yêu cầu thêm 1 cây bút hoặc một bàn
phím, và phải dùng cả 2 tay để thao tác.
64
Chương 6 :Một số vấn đề khi xây dựng ứng dụng trên Symbian
Chương 6 : Một số vấn đề khi xây dựng ứng dụng trên Symbian
6.1 C++ trên Symbian
Ứng dụng trên Symbian có thể phát triển bằng C++ hoặc Java. Trong
phạm vi luận văn của mình, chúng em chỉ xin giới thiệu về C++ và lập trình
hướng đối tượng trên Symbian.
Symbian được xây dựng bằng ngôn ngữ C++ cho nên tất cả hàm API
trên Symbian đều sẵn dùng cho lập trình viên C++. Tuy nhiên C++ dùng trong
Symbian có nhiều điểm khác biệt so với C++ trên các môi trường khác. Do đó
trước khi đi vào lập trình trên môi trường Symbian, ta cần tìm hiểu một số điểm
đặc thù của nó.
6.1.1 Các kiểu dữ liệu
Các kiểu dữ liệu của C++ trên Symbian có từ khóa khác với các kiểu dữ
liệu thông thường của C++ chuẩn. Đặc biệt trên Symbian có một khái niệm
mới, đó là descriptor sẽ được mô tả trong phần sau.
6.1.1.1 Kiểu dữ liệu cơ bản
Sau đây là danh sách các kiểu dữ liệu cơ bản trên Symbian:
Kiểu dữ liệu Kiểu dữ liệu Mô tả không dấu có dấu
TInt8 TUint8 Số nguyên 8 bit có dấu và không dấu
TInt16 TUint16 Số nguyên 16 bit có dấu và không dấu
TInt32 TUint32 Số nguyên 32 bit có dấu và không dấu
Tint TUint Số nguyên có dấu và không dấu: Trong thực
tế, đây chính là số nguyên 32 bit
TReal32 TReal64 Số dấu chấm động tương đương với float và
double
Treal Tương đương với TReal64
65
Chương 6 :Một số vấn đề khi xây dựng ứng dụng trên Symbian
TText8 TText16 Kiểu dữ liệu kí tự, tương đương với unsigned
char và unsigned short int
Tbool Kiểu dữ liệu logic đúng/sai . Nhận 1 trong 2
giá trị là ETrue hoặc EFalse
Tany Tương đương với void
Bảng 6-1 Các kiểu dữ liệu cơ bản trên Symbian
Đối với các số nguyên, kiểu dữ liệu TInt được dùng thông dụng nhất.
Đối với các kiểu dữ liệu số chấm động, ta nên hạn chế dùng vì tốc độ tính toán
trên số chấm động chậm hơn các kiểu dữ liệu khác. Đối với số chấm động, kiểu
dữ liệu TReal được dùng thông dụng nhất.
6.1.1.2 Kiểu dữ liệu chuỗi và descriptor
Khái niệm chuỗi trong Symbian có nhiều điểm khác biệt so với các môi
trường khác. Trong C, việc xử lý chuỗi và quản lý bộ nhớ khá bất tiện cùng với
những rắc rối về bộ nhớ. Trong Java, việc xử lý chuỗi đơn giản hơn, Java cung
cấp một lớp String với những thao tác thuận tiện và việc quản lý bộ nhớ cũng
hiệu quả hơn. Trong Symbian, chuỗi được thể hiện bởi descriptor. Descriptor
cung cấp một cơ chế an toàn và thích hợp để xử lý các vấn đề với cả chuỗi và
dữ liệu nhị phân.
Tuy nhiên, Symbian không dùng cùng một phương pháp như Java hay C
bởi vì việc quản lý bộ nhớ rất quan trọng trong Symbian. Người dùng phải đặc
biệt lưu ý đến vấn đề quản lý bộ nhớ khi sử dụng descriptor.
Trước khi tìm hiểu về chuỗi, ta sẽ sơ lược qua về bộ nhớ bởi vì chuỗi có
liên quan đến bộ nhớ. Về cơ bản, có 3 loại bộ nhớ:
• Dữ liệu nhị phân. Trong ROM, DLL và trong các file .exe, dữ liệu
nhị phân là hằng số và không thay đổi. Các chuỗi mà chúng ta biên
dịch vào trong chương trình của chúng ta trở thành dữ liệu nhị phân.
• Stack. Loại này thích hợp cho những đối tượng có kích thước cố
định và chúng được giải phóng cùng với hàm tạo ra chúng. Những
đối tượng dùng stack trong Symbian không nên quá lớn.
66
Chương 6 :Một số vấn đề khi xây dựng ứng dụng trên Symbian
• Heap. Vùng nhớ cho đối tượng được cấp phát trên heap. Heap được
dùng cho những đối tượng (bao gồm chuỗi) có kích thước lớn không
thích hợp để trong stack hoặc thời gian tồn tại của chúng không phụ
thuộc vào hàm tạo ra chúng.
Dựa vào 3 khái niệm bộ nhớ như vậy, trong Symbian có nhiều cách tạo
ra chuỗi, tùy thuộc vào chuỗi đó chứa trong chương trình, trong stack hay trong
heap.
Ta có 3 lớp descriptor tương ứng với 3 loại bộ nhớ khác nhau:
• Pointer descriptor TPtr, TPtrC. Pointer descriptor chứa một con
trỏ tới dữ liệu. Kiểu dữ liệu TPtr tương tự như khái niệm char* , cho
phép truy cập và thay đổi nội dung của chuỗi. Kiểu dữ liệu TPtrC
tương tự như khái niệm const char * , chỉ cho phép truy cập đến nội
dung của chuỗi. Tuy nhiên ta có thể thay đổi nội dung của dữ liệu
được trỏ tới bởi TPtrC bằng cách dùng toán tử gán “=” (operator
“=”) của lớp này.
• Buffer descriptor TBuf, TBufC. Kiểu dữ liệu này chứa dữ liệu và
độ dài của chính nó. Khái niệm này tương tự như khái niệm char[].
TBuf cho phép truy cập và thay đổi nội dung, còn TBufC chỉ cho
phép truy cập. Tuy nhiên nội dung của TBufC có thể thay đổi bằng
cách dùng toán tử gán “=” (operator “=”) của lớp này.
• Heap descriptor HBuf, HBufC. Heap Descriptor chiếm một vùng
nhớ trên heap chứa dữ liệu và độ dài của dữ liệu (tương tự như TBuf,
TBufC) được trỏ tới bởi con trỏ HBuf* hoặc HBufC*. Khái niệm
này tương tự như vùng nhớ được cấp phát bằng hàm malloc().
Tất cả những descriptor trên đều dẫn xuất từ lớp TDes hoặc TDesC. Hai
lớp này cung cấp cho ta nhiều hàm thao tác với chuỗi.
6.1.2 Các qui ước đặt tên
Cũng giống như những môi trường lập trình khác, Symbian cũng dùng
các qui ước đặt tên để thể hiện ý nghĩa, vai trò và tầm quan trọng. Các qui ước
đặt tên giúp cho việc lập trình và việc hiểu mã nguồn trở nên đơn giản, hiệu
67
Chương 6 :Một số vấn đề khi xây dựng ứng dụng trên Symbian
quả. Việc hiểu được các qui ước này cũng giúp ta sử dụng các lớp, các hàm
API do Symbian cung cấp dễ dàng hơn, tiếp cận với việc lập trình trên
Symbian nhanh chóng hơn.
Nhận xét rằng đa số các qui ước đặt tên trong Symbian đều có liên quan
mật thiết đến việc quản lý tài nguyên (bộ nhớ, file, v.v…). Điều này là bởi vì
tài nguyên trong Symbian rất hạn chế, do đó việc quản lý các nguồn tài nguyên,
đặc biệt là bộ nhớ, đóng một vai trò vô cùng quan trọng trong việc phát triển
ứng dụng trên Symbian. Ta sẽ xem xét kĩ vấn đề quản lý bộ nhớ ở mục 6.2
6.1.2.1 Qui ước đặt tên lớp
Lớp trong Symbian dùng một kí tự đầu tiên để chỉ tính chất của lớp đó.
Sau đây là bảng mô tả chi tiết:
Loại Ví dụ Mô tả
Lớp bắt đầu TDesC, TPoint, Các lớp bắt đầu bằng chữ T không
bằng chữ T TFileName có hàm hủy. Nó giống như các
kiểu dữ liệu xây dựng sẵn (built-
in). Các lớp này cũng thường dùng
thay cho struct.
Lớp bắt đầu CConsoleBase, CActive, Bất cứ lớp nào dẫn xuất từ lớp
bằng chữ C CBase CBase đều bắt đầu bằng chữ C.
Các lớp này luôn được cấp phát
vùng nhớ trên heap.
Lớp bắt đầu RFile, RTimer, Bất cứ lớp nào thao tác với các tài
bằng chữ R RWriteStream, RWindow nguyên (file, time, v.v…) đều bắt
đầu bằng chữ R (viết tắt của từ
Resource). Hầu hết các lớp này đều
dùng hàm Close() để giải phóng
nguồn tài nguyên mà nó sở hữu.
Lớp, giao MGraphicsDeviceMap, Một giao diện gồm nhiều hàm ảo
diện bắt đầu MEikMenuObserver và không có dữ liệu. Các lớp bắt
bằng chữ M đầu bằng chữ M chỉ nên được dùng
68
Chương 6 :Một số vấn đề khi xây dựng ứng dụng trên Symbian
trong đa kế thừa.
Các lớp User, Math, Mem, Một lớp chỉ chứa toàn hàm static.
static ConeUtils Các lớp này thích hợp dùng chứa
các hàm thư viện
Struct SEikControlInfo Kiểu dữ liệu struct thường bắt đầu
bằng chữ S. Tuy nhiên, sau này
trong Symbian người ta không
dùng kiểu struct nữa mà thay vào
đó là dùng các lớp bắt đầu bằng
chữ T.
Bảng 6-2 Qui ước đặt tên lớp
Sự khác nhau giữa các lớp T, C, R rất quan trọng, đặc biệt trong việc cấp
phát, quản lý và giải phóng vùng nhớ vì mỗi lớp có một cách sở hữu vùng nhớ
khác nhau.
6.1.2.2 Qui ước đặt tên dữ liệu
Bảng sau đây mô tả các qui tắc đặt tên dữ liệu, ngoại trừ các kiểu dữ liệu
đã được trình bày:
Loại Ví dụ Mô tả
Kiểu enum EMonday, ESolidBrush Các hằng trong kiểu enum thường
bắt đầu bằng chữ E và tên của
enum thì bắt đầu bằng chữ T,
chẳng hạn EMonday là thành phần
của enum TDayOfWeek
Hằng số KRgbWhite, Các hằng số thường bắt đầu bằng
KMaxFileName chữ K
Biến thành iDevice, iSize Biến thành viên của một lớp bắt
viên đầu bằng chữ “i” . Chữ “i” là viết
tắt của từ “instance”
Tham số aDevice, aSize Các tham số bắt đầu bằng chữ “a”.
Chữ “a” là viết tắt của từ
69
Chương 6 :Một số vấn đề khi xây dựng ứng dụng trên Symbian
“argument”
Các biến device, size, x, y Các biến automatic là các biến mà
“automatic” việc quản lý vùng nhớ do Symbian
thực hiện tự động. Người dùng
không cần cấp phát vùng nhớ khi
khai báo và không hủy khi sử dụng
xong.
Bảng 6-3 Qui ước đặt tên dữ liệu
6.1.2.3 Qui ước đặt tên hàm
Đối với tên hàm, kí tự cuối cùng đóng vai trò quan trọng
Loại Ví dụ Mô tả
Hàm “none- Foo(), Draw() Các hàm “none-leaving” bắt đầu
leaving” bằng kí tự hoa và là động từ. Để
biết về hàm “none-leaving”, xin
xem mô tả về hàm “leaving” ở
dưới.
Hàm CreateL(), NewL(), Các hàm “leaving” kết thúc bằng
“leaving” AllocL() kí tự L. Một hàm “leaving” là một
hàm có cấp phát bộ nhớ, mở file,
v.v…, nói chung là thực hiện
những thao tác liên quan đến tài
nguyên mà có thể không thành
công do thiếu tài nguyên hoặc do
những điều kiện về môi trường
(không phải lỗi do lập trình). Khi
ta gọi một hàm “leaving”, ta phải
xem xét cả 2 trường hợp là hàm đó
thực hiện thành công hay thất bại
và ta phải quản lý được cả 2 trường
hợp đó, không để dẫn tới sụp đổ
70
Chương 6 :Một số vấn đề khi xây dựng ứng dụng trên Symbian
chương trình. Để biết thêm về việc
quản lý vùng nhớ, xin xem chi tiết
ở mục 6.2
Hàm LC AllocLC(), CreateLC(), Cấp phát vùng nhớ cho một đối
OpenLC(), NewLC() tượng và đưa đối tượng vào
cleanup stack. Để biết thêm về
cleanup stack và việc quản lý vùng
nhớ, xin xem chi tiết ở mục 6.2
Hàm lấy dữ Size(), Device(), Các hàm này thường là danh từ và
liệu GetTextL() dùng để truy cập đến các biến
private trong một lớp. Các hàm
truy cập dữ liệu có liên quan đến
tài nguyên (bộ nhớ, file, v.v…)
thường kết thúc bằng chữ L và bắt
đầu bằng chữ Get.
Các hàm SetSize(), SetDevice(), Các hàm này thường bắt đầu bằng
thiết lập SetTextL() chữ Set và dùng để gán giá trị cho
một thuộc tính, thông thường là
thuộc tính private trong một lớp.
Các hàm có liên quan đến tài
nguyên thường kết thúc bằng chữ
L.
Bảng 6-4 Qui ước đặt tên hàm
6.2 Quản lý bộ nhớ
Ngày nay một desktop computer sở hữu ít nhất là 64MB RAM, bộ nhớ
ảo swapping 4GB và có thể lớn hơn tuỳ thuộc vào ổ cứng, trong môi trường
này việc “out of memory” hiếm khi xảy ra, nếu ta có lỡ quên giải phóng một
vùng nhớ nào đó thì cũng không phải là vấn đề quá lớn, nó sẽ tự động huỷ khi
71
Chương 6 :Một số vấn đề khi xây dựng ứng dụng trên Symbian
đóng chương trình, hoặc khởi động lại máy tính. Vì thế ta có thể ung dung về
việc quản lý bộ nhớ và tài nguyên trong thế giới desktop.
Mặt khác, các thiết bị di động sở hữu một vùng nhớ hạn hẹp hơn nhiều,
khoảng 4MB RAM hoặc không hơn 16MB RAM gồm vùng nhớ chứa hệ điều
hành, RAM để nạp các ứng dụng và các thiết bị này ít được khởi động lại
thường xuyên.
Trong mỗi hệ điều hành đều tồn tại một trình quản lý bộ nhớ, tuỳ vào sự
đáp ứng về phần cứng khác nhau mà mức độ chặt chẽ trong quản lý bộ nhớ có
khác nhau. Đối với thiết bị di động, một thiết bị eo hẹp về RAM, ổ cứng, kích
thước màn hình, việc quản lý bộ nhớ là một nhiệm vụ sống còn của hệ điều
hành. Quản lý càng chặt chẽ, càng hiệu quả, càng hạn chế lãng phí bộ nhớ thì
càng nâng cao hiệu năng của hệ điều hành và trình ứng dụng.
Symbian quản lý bộ nhớ rất chặt chẽ thông qua bộ công cụ quản lý lỗi
“out of memory” và các qui định cực kỳ khắc nghiệt khi cấp phát, sử dụng, giải
phóng bộ nhớ.
6.2.1 Các vấn đề về bộ nhớ cần biết khi lập trình trên các thiết bị di động
• Tối ưu hoá, cân nhắc việc cấp phát vùng nhớ, không sử dụng RAM
nếu không thực sự cần.
• Giải phóng tài nguyên càng sớm càng tốt.
• Quản lý vùng có thể phát sinh lỗi out of memory, nhất là những hàm
có nguy cơ cao như các hàm cấp phát bộ nhớ bởi vì đó là một trong
những điều kiện để phát sinh lỗi out of memory.
• Khi lỗi “out of memory” xảy ra, một số hàm khác sẽ bị ngưng đột
ngột, ta không nên đóng các dữ liệu người dùng (user data), mà ta
nên roll back đến một trạng thái có thể chấp nhận được trước đó để
tránh sự không đồng bộ của dữ liệu.
• Khi xảy ra trường hợp out of memory do việc cung cấp nhiều tài
nguyên, ta phải giải phóng các tài nguyên đó như là một phần của
tiến trình roll back.
72
Chương 6 :Một số vấn đề khi xây dựng ứng dụng trên Symbian
6.2.2 Cách quản lý, hạn chế lỗi “out of memory”
Symbian cung cấp nhiều phương thức để theo dõi, kiểm tra, bẫy và hạn
chế lỗi out of memory. Cùng với những phương thức ấy là những nguyên tắc
khi cấp phát, sử dụng và huỷ vùng nhớ.
6.2.2.1 Cấp phát, huỷ vùng nhớ
• Sử dụng Destructor: Khi ta cấp phát một vùng nhớ, sau khi thoát
chương trình nếu vùng nhớ này không được giải phóng thì một thông
báo lỗi sẽ xuất hiện. Cách khắc phục được đề nghị cho lỗi quên hủy
vùng nhớ là sử dụng Destructor, một giải pháp khá đơn giản và quen
thuộc đối với các lập trình viên C++. Ta sử dụng Destructor để huỷ
đối tượng mà chính lớp đó sở hữu (biến thành viên).
• Không nên cấp phát 2 lần: Tương tự như lỗi quên huỷ vùng nhớ,
cấp phát vùng nhớ 2 lần cũng phát sinh lỗi. Khi ta cấp phát lần 2, địa
chỉ vùng nhớ ta cấp lần đầu không ai quản lý, nên Destructor không
thể huỷ được vùng nhớ này dẫn đến sự phát sinh lỗi của chương
trình. Cách khắc phục được đề nghị là trước khi cấp phát vùng nhớ
Delete iMember;
iMember = new CClass;
cho một đối tượng ta nên huỷ vùng nhớ đã được cấp phát trước đó.
• Không nên giải phóng vùng nhớ 2 lần: Tương tự như lỗi trên, giải
phóng vùng nhớ 2 lần cũng gây lỗi. Không biết là may hay rủi, lỗi
này thường không xảy ra ngay lập tức khi ta giải phóng lần 2 mà nó
sẽ tồn tại trong hệ thống một thời gian dài, đây là một lỗi rất khó
debug. Lỗi này phát sinh do sau khi delete không đặt con trỏ về 0.
Cách khắc phục được đề nghị là nếu delete một đối tượng thành viên
delete iMember; iMember = 0;
ở bên ngoài destructor, ta phải đặt con trỏ thành viên về 0.
• Tự động đặt về 0: Tất cả con trỏ thuộc lớp bắt đầu bằng chữ C (C
class) sau khi được cấp phát bằng toán tử new() (hàm overloaded của
73
Chương 6 :Một số vấn đề khi xây dựng ứng dụng trên Symbian
CBase::new()) thì con trỏ thành viên của lớp này cũng như các biến
thành viên thuộc C class khác đều được đặt về 0.
6.2.2.2 Lỗi trên Heap (Heap Failure)
Lỗi trên heap là các lỗi sinh ra do việc cấp phát tài nguyên không thành
công (thiếu tài nguyên hoặc một lý do nào đó). Các lỗi này được quản lý và
khắc phục theo những cách sau:
• Leave nếu cấp phát vùng nhớ không thành công: Nếu như ta cấp
phát vùng nhớ gặp sự cố thì chương trình sẽ phát sinh một mã lỗi trả
về, mã lỗi này sẽ được thông báo trên màn hình nếu ta sử dụng
iMember = new (ELeave) CClass). Đoạn code trên cũng tương
User::Leave(KErr..) hoặc từ khoá ELeave sau toán tử new (
CClass *temp = new CClass;
If (!temp)
User::Leave(KErrNoMemory);
// set to zero
Mem::FillZ(temp, sizeof(CClass));
iMember = temp;
đương với một loạt các thao tác sau:
Có nghĩ là nếu cấp phát thành công thì ELeave sẽ đặt các biến
thành viên của CClass về 0. TLeave cũng có chức năng tương tự ELeave
nhưng không đặt các biến thành viên về 0.
Vậy có thể nói Leave làm công việc hiển thị lỗi khi cấp phát tài
nguyên không thành công, hàm nào có thể Leave (L Function) là hàm đó
trực tiếp hay gián tiếp cấp phát tài nguyên, và có thể phát sinh mã lỗi.
Theo các chuyên gia, ta nên sử dụng new (ELeave) thay vì new.
• Cấp phát lại vùng nhớ theo đúng cách: Như phần Không cấp
phát 2 lần đã trình bày ở trên, ta phải delete đối tượng trước khi cấp
phát lại vùng nhớ cho con trỏ của đối tượng ấy. Nhưng sau khi delete
nếu việc cấp phát lại vùng nhớ không thành công thì sao? Lúc này
đối tượng đã bị delete nhưng con trỏ chưa gán về 0. Cách khắc phục
74
Chương 6 :Một số vấn đề khi xây dựng ứng dụng trên Symbian
được đề nghị là sau khi delete và trước khi cấp phát vùng nhớ ta phải
delete iMember;
iMember = 0;
iMember = new (ELeave) CClass;
gán con trỏ bằng 0.
6.2.2.3 Giới thiệu về thêm về Leave
• L Function là hàm có cấp phát vùng nhớ và có thể phát sinh mã lỗi
(hàm có thể Leave)
Việc biết một hàm có thể Leave hay không thật là quan trọng,
hàm nào có thể Leave thì hàm đó có chữ L ở cuối phần tên như RunL,
HandleCommandL .v.v. Nếu ta viết một hàm mà hàm này gọi hàm khác
có thể Leave thì hàm này cũng nên có chữ L ở cuối phần tên. Điều này
nhắc nhở những đồng nghiệp hoặc những người xem code của ta rằng
“cẩn thận nhé hàm này có thể sẽ Leave đấy”. Sau đây là một vài trường
hợp ta nên chú tâm tới:
o Như đã nhắc ở trên nếu ta viết một hàm mà hàm này gọi hàm
khác có thể Leave thì hàm của ta cũng là một L Function
o Nếu hàm của ta gọi new (ELeave) thì nó là một L Function
o Khi ta implement một hàm được cung cấp bởi một framework,
nếu hàm này là L Function thì ta có thể cấp phát những tài
nguyên có khả năng Leave, ngược lại thì hàm của ta không được
Leave hoặc nếu có thì ta phải quản lý việc này. Ví dụ như hàm
CCoeControl::Draw() ta chỉ có thể sử dụng các tài nguyên đã
được cấp phát từ trước hoặc các hàm không Leave, nếu vì một lý
do nào đó ta không thể cấp phát tài nguyên trước thì ta phải bẫy
lỗi và quản lý chúng.
o Nếu ta viết một framework cho người khác implement thì hãy
nghĩ thật cẩn thận xem liệu hàm này có thể Leave hay không, đó
là điều khá cần thiết và không nên hàm nào cũng cho phép Leave
mà hãy cân nhắc về điều đó.
• Nested Traps (bẫy lỗi)
75
Chương 6 :Một số vấn đề khi xây dựng ứng dụng trên Symbian
Ta không cần phải viết lại công việc Trap (bẫy lỗi) vì EIKON
framework đã cung cấp cho ta một số hàm để làm việc này.
Trap dùng để bẫy lỗi trong các hàm không leaving như hàm
Draw() nhưng vẫn có nhu cầu cấp phát resource. Nó sẽ bắt tất cả những
mã lỗi và quản lý chúng. Đây cũng là cách ta dấu EIKON framework
Virtual void Draw(const TRect &aRect) const
{
TRAPD (error, MyPrivateDrawL(aRect));
}
bởi việc tự mình bắt lỗi và xử lý. Ví dụ
Ngoài ra ta có thể bẫy lỗi để rollback các dữ liệu đang xử lý nếu
TRAPD (error, HandleKeyL());
if (error)
{
RevertUndoBuffer();
// Any other special cleanup
User::Leave(error);
}
có Leave bằng cách tự bắt lỗi và xử lý. Sau đây là đoạn code mẫu
Thật sự không cần thiết khi ta bẫy lỗi một L Function chỉ với mục
TRAPD (error, HandleKeyL());
if (error)
{
User::Leave(error);
}
đích hiển thị lỗi:
Điều này đồng nghĩa với việc chỉ gọi hàm HandleKeyL().
6.2.2.4 Cleanup Stack
Cleanup stack là một vùng nhớ được dành riêng dùng để lưu các nội
dung của con trỏ trên stack (địa chỉ một vùng nhớ trên heap). Cleanup stack
dùng để phục hồi địa chỉ của vùng nhớ heap trên stack khi stack có sự cố. Sau
đây là đôi điều cần biết khi sử dụng Cleanup Stack:
76
Chương 6 :Một số vấn đề khi xây dựng ứng dụng trên Symbian
• Sử dụng Cleanup Stack nếu cần
Sau khi một con trỏ được cấp phát vùng nhớ, đối tượng này gọi một
L Function, nếu hàm này Leave thì địa chỉ vùng nhớ heap của đối tượng
này trong stack bị mất, cuối cùng ta không thể huỷ vùng nhớ heap của đối
tượng này. Cách khắc phục được đề nghị là trước khi thực hiện một công
việc có thể Leave ta nên cất địa chỉ vùng nhớ heap trên stack vào trong
Cleanup Stack và sau khi sử dụng xong đối tượng này ta lại trả nó về Stack
CClass *x = new (ELeave) CClass;
CleanupStack::PushL(x);
x->UseL();
CleanupStack::PopAndDestroy;
như ban đầu.
• Không sử dụng Cleanup Stack nếu không cần
Không nên sử dụng Cleanup Stack cho các đối tượng thành viên vì
nếu sử dụng ta có thể mắc phải lỗi delete 2 lần (1. CleanupStack::Destroy,
2. Destructor)
• Điều gì xảy ra nếu PushL không thể thực hiện
Trong Cleanup Stack luôn tồn tại một khe trống (spareslot) khi ta
Push một đối tượng vào thì khe này dùng để chứa đối tượng đó. Kế tiếp
Cleanup Stack sẽ cấp phát một đối tượng khác (new spareslot) đặt lên đầu,
nếu việc cấp phát này không thành công thì vùng nhớ để lưu đối tượng vừa
Push vẫn còn nguyên và đối tượng lập tức sẽ bị Pop và Destroy để luôn giữ
cho Cleanup Stack còn trống một chỗ.
Cleanup Stack không bao giờ ném các slot mà nó lưu trữ nên việc
Push, PopAndDestroy là khá hiệu quả. Hơn nữa việc đưa đối tượng vào
Cleanup Stack không phải lúc nào cũng xảy ra, thường thì số đối tượng
không quá 10, nên ta có thể an tâm khi sử dụng Cleanup Stack.
6.2.2.5 Khởi tạo bằng 2 bước (Two-phase Construction)
• Constructor không được Leave
Ta thấy tạo một đối tượng và cấp phát tài nguyên cho từng thành
viên của đối tượng là 2 chuyện khác nhau. Việc đầu tiên ta phải làm là cấp
77
Chương 6 :Một số vấn đề khi xây dựng ứng dụng trên Symbian
phát vùng nhớ cho đối tượng, Push địa chỉ đối tượng vào Cleanup Stack sau
đó mới cấp phát vùng nhớ cho từng thành viên vào cuối cùng là Pop đối
tượng ấy ra và sử dụng. Muốn làm được điều này ta cần phải khởi tạo đối
tượng thành công trước, việc này đòi hỏi constructor của đối tượng không
được Leave. Vì giả sử nếu constructror có cấp phát tài nguyên thì các hàm
cấp phát vùng nhớ cho các thành viên trong constructor vẫn được thực hiện
khi cấp phát vùng nhớ cho đối tượng cha không thành công. Lúc này lỗi
phát sinh và ta không thể kiểm soát được. Giải pháp được đề nghị là không
nên Leave trong Constructor
• Sử dụng ConstructL thay cho Constructor nếu Leave
Nếu không được Leave trong Constructor thì việc cấp phát vùng nhớ
cho thành viên tất nhiên là phải tách biệt với việc cấp phát vùng nhớ cho đối
Class CClassB:public CBase
{
public:
~CClassB();
CClassB();
void ConstructL();
CClass *iX;
};
CClassB::CClassB()
{
}
CClassB::~CClassB()
{
detele iX;
}
void CClassB::CConstrucL()
{
iX = new (ELeave) CClass;
}
tượng. Giải pháp đề nghị là sử dụng ConstructL
78
Chương 6 :Một số vấn đề khi xây dựng ứng dụng trên Symbian
CClassB *Y = new (ELeave) CClassB;
CleanupStack::PushL(iY);
// alloc for member
Y->ConstrucL();
// Use Y here
Y->iX->UseL();
CleanupStack::PopAndDestroy;
Khi cần sử dụng CClassB ta làm như sau:
• Bao bọc Constructor() bằng NewL() và NewLC()
Do việc cấp phát và sử dụng một đối tượng khá phức tạp nên một số
chuyên gia về Symbian đề nghị một cách làm giảm sự rắc rối khi cấp
phát bằng cách tạo thêm hàm static NewL() và NewLC().
NewL(): Dùng để cấp phát vùng nhớ cho các thành viên trong
môt lớp.
NewLC(): Dùng để cấp phát vùng nhớ cho các con trỏ không
Class CClassB:public CBase
{
public:
..
static CClassB* NewL();
static CClassB* NewLC();
..
};
CClassB* CClassB::NewLC()
{
CClaseB* self = new (ELeave) CClassB;
CleanupStack::PushL(self);
// alloc for member
self->ConstrucL();
return self;
}
CClassB* CClassB::NewL()
phải là thành viên.
79
{
CClaseB* self = CClassB::NewLC();
CleanupStack::Pop();
return self;
}
Sử dụng :
CClassB *Y = CClassB::NewLC();
Y->iX->UseL();
delete iObject2;
iObject2 = CClassB::NewL();
iObject2->iX->UseL();
delete iObject2;
Chương 6 :Một số vấn đề khi xây dựng ứng dụng trên Symbian
6.2.3 Bài học cần nhớ
Ta có thể tóm tắt phần quản lý vùng nhớ bằng một câu sau: “Bất cứ khi
nào ta thấy X có thể leave thì hãy nghĩ đến điều gì sẽ xảy ra khi X không leave,
và điều gì sẽ xảy khi X leave”.
Nghĩ đến thì dễ nhưng làm thì khó và sau đây là những mẫu giúp ta làm
việc với bộ nhớ an toàn hơn:
• Sử dụng Destructor để huỷ đối tượng mà chính lớp đó sở hữu
• Không delete những đối tượng mà ta không sở hữu
• Không cấp phát 2 lần
• Không hủy 2 lần
• Khi hủy đối tượng bên ngoài Constructor, lập tức gán con trỏ bằng 0
• Khi cấp phát lại ta phải lập tức huỷ đối tượng ấy và gán con trỏ bằng
0 trước khi cấp phát.
• Sử dụng new (ELeave) thay vì new
• Thêm L vào cuối tên hàm khi biết hàm đó có thể Leave
• Khi implement một một hàm ảo, ta không thể Leave nếu hàm này
không có chữ L ở cuối.
80
Chương 6 :Một số vấn đề khi xây dựng ứng dụng trên Symbian
• Sử dụng bẫy lỗi khi cần, quản lý Leave trong các hàm không cho
phép Leave, hoặc Rollback dữ liệu.
• Push đối tượng vào Cleanup Stack nếu nó tham chiếu đến một con
trỏ automatic hoặc nó gọi một hàm nào đó có thể Leave.
• Không nên Push biến thành viên vào Cleanup Stack, và sử dụng qui
tắt đặt tên iMember để dễ phân biệt.
• Sử dụng kí tự ‘C’ để bắt đầu một lớp kế thừa từ CBase. Lợi dụng đặc
tính khởi tạo các biến thành viên về 0 của lớp này.
• Không nên Leave trong Constructor
• Sử dụng ConstructL() để khởi tạo nếu hàm có thể Leave
• Nên dùng NewL() và NewLC() để bao bọc việc cấp phát và khởi tạo
biến.
81
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Chương 7 : Lập trình giao tiếp Bluetooth trên Symbian
Series 60 cung cấp sẵn các hàm API cho phép ta giao tiếp với Bluetooth.
Ngôn ngữ được dùng cho các ứng dụng Bluetooth là C++. Các ứng dụng
Bluetooth trên điện thoại di động có thể là một ứng dụng chat đơn giản hoặc
một game nhiều người chơi phức tạp.
7.1 Tổng quan về Bluetooth API
Cũng giống như những công nghệ giao tiếp khác, Bluetooth bao gồm
một tập hợp nhiều thành phần, được gọi là stack (chồng giao thức). Chi tiết về
chồng giao thức đã được giới thiệu trong chương 2 “Các tầng giao thức của
Bluetooth”. Ở đây chúng em chỉ xin giới thiệu sự liên quan giữa các tầng giao
thức với việc xây dựng ứng dụng. Chồng giao thức Bluetooth có dạng như sau:
82
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Hình 7-1 Bluetooth protocol
Khi lập trình với Bluetooth, ta chỉ có thể giao tiếp với những thành phần
thuộc về Bluetooth Host, còn những thành phần thuộc về Bluetooth Host
Controller được cài đặt trong phần cứng, ta không thể tương tác trực tiếp được.
Nhiệm vụ của từng thành phần trong Bluetooth Host được mô tả như sau:
1. RFCOMM cho phép giả lập cổng serial. Giao thức này cho phép ta
truyền nhận dữ liệu thông qua Bluetooth bằng cổng serial.
2. L2CAP cho phép quản lý kênh truyền, quản lý gói tin.
3. SDP dùng để truy vấn và quảng bá các dịch vụ Bluetooth trên một
thiết bị. Các ứng dụng phải dùng SDP trong quá trình thiết lập kết
nối đến với một thiết bị Bluetooth khác.
4. HCI Driver cung cấp các khả năng giao tiếp với phần cứng bên
dưới.
83
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Các hàm Bluetooth API của Series 60 cho phép ta sử dụng các dịch vụ
của RFCOMM, L2CAP, SDP và truy cập ở mức giới hạn các dịch vụ của HCI.
7.1.1 Phân nhóm các hàm Bluetooth API
Các hàm Bluetooth API có thể chia thành những nhóm sau đây:
• Bluetooth Sockets: Cho phép truy cập đến các dịch vụ của L2CAP
và RFCOMM thông qua giao diện socket của TCP/IP.
• Bluetooth Service Discovery Database: Sử dụng các dịch vụ của
SDP. Các dịch vụ trên một thiết bị Bluetooth được lưu trữ trên
Service Discovery Database, từ đó các thiết bị khác có thể tìm thấy
chúng và xác định xem đó có phải là dịch vụ mình đang tìm hay
không.
• Bluetooth Service Discovery Agent: Sử dụng các dịch vụ của SDP.
Nó cho phép người dùng tìm những dịch vụ và thuộc tính của dịch
vụ trên thiết bị Bluetooth khác.
• Bluetooth Security Manger: Cho phép thiết lập các chế độ bảo mật
cho Bluetooth
• Bluetooth Device Selection UI: Cung cấp một hàm API dùng để thể
hiện một dialog yêu cầu người dùng chọn thiết bị muốn giao tiếp.
7.1.2 Quan hệ giữa các nhóm Bluetooth API
Mối quan hệ giữa các nhóm hàm Bluetooth API được thể hiện trong
hình bên dưới. Trong đó các hàm Bluetooth API của Socket đóng vai trò cơ
bản nhất, các nhóm hàm API khác đều dựa vào nó để giao tiếp với các thiết bị
khác
84
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Hình 7-2 Quan hệ giữa các nhóm Bluetooth API
7.2 Bluetooth socket
Cũng như Socket trên PC, Socket trên Symbian được xây dựng để hỗ trợ
các ứng dụng giao tiếp. Chúng đều có cùng mục đích là tạo ra một ngôn ngữ
giao tiếp chung giữa các giao thức truyền dẫn .Ta có thể xây dựng ứng dụng
giao tiếp dựa trên Hồng ngoại, Bluetooth hay Internet nhưng đều thông qua
Socket. Socket như là một người phiên dịch trung gian nghĩa là Hồng ngoại,
Bluetooth hay Internet đều sẽ giao tiếp thông qua Socket và các Socket sẽ giao
85
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
tiếp với nhau. Nhưng việc sử dụng Socket trên Symbian có phần khác so với
Socket trên PC.
Trong Symbian, Bluetooth socket được dùng để tìm kiếm các thiết bị
Bluetooth khác, thiết lập kết nối, gửi và nhận dữ liệu thông qua Bluetooth.
Các hàm Bluetooth Sockets API hỗ trợ giao tiếp với cả 2 tầng giao thức
là L2CAP và RFCOMM. Bluetooth Sockets API dựa trên các hàm Sockets
Client Side API, cung cấp các hàm API chuẩn cho phép một thiết bị hoạt động
như là một client nghĩa là nó có thể yêu cầu thiết lập kết nối đến server. Ngoài
ra nó cũng cho phép một thiết bị hoạt động như là một server có nghĩa là nó sẽ
chờ client khác kết nối vào. Một khi kết nối thành công, các thiết bị có thể gửi
và nhận dữ liệu. So với Sockets Client Side API, Bluetooth Sockets API có
thêm vào một số kiểu dữ liệu và hằng số cho phép các hàm socket API được
dùng với Bluetooth.
Bluetooth Socket API có 5 khái niệm cơ bản: địa chỉ socket, tìm kiếm
thiết bị, các lệnh và các tùy chọn của RFCOMM, các lệnh L2CAP và các lệnh
HCI.
7.2.1 Mở và cấu hình Bluetooth socket
Bởi vì các ứng dụng dùng socket đều đóng vai trò là một socket client
và chúng phải thông qua socket server để giao tiếp với các đối tượng socket
khác cho nên trước khi mở một socket ta phải connect vào socket server.
86
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Hình 7-3 Bluetooth socket
Cần phải phân biệt các khái niệm sau khi làm việc với socket trên
Symbian:
• Socket client: Một socket được mở trên một thiết bị.
• Socket server: Một server tồn tại trên thiết bị, đóng vai trò điều phối
hoạt động của các socket, quản lý và đồng bộ hóa kết nối.
• Client socket: Socket yêu cầu thực hiện kết nối đến một socket
khác.
• Server socket: Một socket được mở ra để lắng nghe yêu cầu kết nối
từ phía client socket.
87
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Lớp RSocketServ dùng để giao tiếp với socket server của thiết bị. Để kết
nối vào socket server, ta khai báo một đối tượng kiểu RSocketServ và gọi hàm
RSocketServ socksvr;
err = socksvr.Connect();
User::LeaveIfError(err);
Connect:
Lớp RSocket được dùng để mở và cấu hình một socket. Tùy theo loại
giao thức muốn sử dụng mà ta mở loại socket tương ứng. Để mở một socket, ta
TInt Open(RSocketServ& aServer,
TUint addrFamily,
TUint sockType,
TUint protocol);
dùng hàm Open có cấu trúc như sau:
Tên tham số Ý nghĩa
aServer Socket server mà ta đã connect vào
addrFamily Kiểu địa chỉ, nếu dùng Bluetooth thì đó là KBTAddrFamily
sockType và Nếu sử dụng giao thức RFCOMM thì sockType là KSockStream và
protocol protocol tương ứng là KRFCOMM. Nếu sử dụng giao thức L2CAP thì
sockType là KSockSeqPacket và protocol tương ứng là KL2CAP
Bảng 7-1 Tham số hàm Open
Nếu thành công, hàm Open trả về giá trị KErrNone, ngược lại sẽ phát
sinh ra một mã lỗi.
Việc cấu hình socket ở mức thấp có thể được thực hiện thông qua hàm
RSocket::Ioctrl(). Riêng việc cấu hình cho RFCOMM được hỗ trợ thêm bởi hai
hàm là RSocket::GetOpt() và RSocket::SetOpt() dùng để nhận hoặc thiết lập
các tùy chọn của RFCOMM như kích thước của buffer chẳng hạn.
88
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
7.2.2 Xây dựng Bluetooth server socket
Để thiết lập một server socket, ta thực hiện tuần tự các bước như sau:
• Mở một socket và gắn kết (bind) socket đó vào địa chỉ Bluetooth cục
bộ.
• Lắng nghe kết nối từ phía client.
• Nếu có yêu cầu kết nối từ phía client, để chấp nhận kết nối, server
socket phải gọi hàm Accept. Lúc này một blank socket (tức là một
socket không có kênh giao tiếp (no channel), không có nghi thức
giao tiếp (no protocol) ) được thiết lập để trao đổi dữ liệu với client
socket.
Bind() Gắn kết địa chỉ cục bộ
Listen() Lắng nghe kết nối từ client
Accept() Chấp nhận kết nối và thiết lập một blank socket
Hình 7-4 Thiết lập server socket
TInt Bind(TSockAddr& anAddr);
Các hàm có khai báo như sau:
Tên tham số Ý nghĩa
anAddr Địa chỉ socket cục bộ
Bảng 7-2 Tham số hàm Bind
89
TInt Listen(TUint qSize);
TInt Listen(TUint qSize,const TDesC8& aDataOut);
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Tên tham số Ý nghĩa
qSize Kích thước của hàng đợi
aDataOut Dữ liệu gửi ngược về client khi nhận được yêu cầu kết nối từ phía
client.
Bảng 7-3 Tham số hàm Listen
Các hàm trên có giá trị trả về là KErrNone nếu thành công, nếu không
void Accept(RSocket& aAcceptedSocket,
TRequestStatus& aStatus);
void Accept(RSocket& aAcceptedSocket,
TDes8& aConnectData,
TRequestStatus& aStatus);
một mã lỗi sẽ được trả về.
Tên tham số Ý nghĩa
aAcceptedSocket Một socket sẽ được mở như là một blank socket
aConnectData Dữ liệu có thể được nhận trong quá trình kết nối
aStatus Sau khi lời gọi hàm kết thúc, biến này sẽ chứa mã lỗi
Bảng 7-4 Tham số hàm Accept
Sau khi hàm Accept() được gọi thì chương trình sẽ chờ cho đến khi có
client kết nối vào.
Qui trình xây dựng một server socket:
Mỗi server phải có các thành phần sau:
SocketServer (RSocketServ): Dùng để giao tiếp với socket server của
thiết bị.
AcceptedSocket (RSocket): Là một blank socket có nhiệm vụ giữ
socket handle của client muốn kết nối vào server đồng thời thực hiện thao tác
nhận và gởi dữ liệu.
ListeningSocket (RSocket): Là socket giữ nhiệm vụ lắng nghe kết nối
chấp nhận kết nối.
90
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Sau đây là Sequence diagram thể hiện hàm khởi động một server chuẩn
: CMessageServer
: SocketServer
: ListeningSocket
: AcceptedSocket
: FrameWork
1: StartL()
2: Connect(..)
3: Open()
4: GetOpt(..)
5: Bind(..)
6: Listen(..)
7: SetSecurityOnChannelL(..)
8: Close()
9: Open()
10: Accept(..)
bị cho việc lắng nghe chờ kết nối:
Hình 7-5 Sequence diagram xây dựng server socket
Hàm Mô tả
1 - 6 StartL gọi SocketServer thực hiện kết nối đến socket server và sử dụng nó để
mở 1 socket handle là ListeningSocket. ListeningSocket gọi hàm GetOpt để
lấy channel (giống như khái niệm port trong windows) mà nó cần lắng nghe.
Sau đó thiết lập socket này lắng nghe kết nối.
7 StartL gọi hàm SetSecurityOnChannelL để thiết lập mức bảo mật cho kết nối.
Việc này được quản lý bởi lớp RBTMan và cấu trúc TBTServiceSecurity sẽ
được bàn chi tiết ở mục 7.6
8 - 10 StarL đóng AcceptedSocket đã chấp nhận trước đó qua hàm Close đồng thời
mở 1 blank socket để giữ socket handle của kết nối từ xa trên channel của
ListeningSocket
Bảng 7-5 Bảng mô tả các hàm xây dựng server soket
Đoạn chương trình minh họa cho việc xây dựng server socket
91
RSocketServ SocketServer;
TInt err;
err = SocketServer.Connect();
User::LeaveIfError(err);
RSocket AcceptedSocket;
TRequestStatus status;
err = AcceptedSocket.Open(SocketServer);
User::LeaveIfError(err);
RSocket ListeningSocket;
err = ListeningSocket.Open(SocketServer,
KBTAddrFamily,
KSockStream,
KRFCOMM);
User::LeaveIfError(err);
TBTSockAddr addr;
addr.SetPort(…);
err = Listening.Bind(addr);
User::LeaveIfError(err);
err = ListeningSocket.Listen(…);
User::LeaveIfError(err);
ListeningSocket.Accept(AcceptedSocket, status);
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
92
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
7.2.3 Xây dựng Bluetooth client socket
Bluetooth client socket kết nối đến server socket bằng hàm
void Connect(TSockAddr& anAddr,
TRequestStatus& aStatus);
RSocket::Connect().
Tên tham số Ý nghĩa
anAddr Địa chỉ socket của thiết bị Bluetooth
aStatus Sau khi lời gọi hàm kết thúc, biến này chứa mã lỗi.
Bảng 7-6 Mô tả tham số hàm Connect
Địa chỉ của socket được thể hiện bởi lớp TBTSockAddr vốn kế thừa từ
lớp TSockAddr. Mỗi thiết bị Bluetooth có một địa chỉ 48 bit được thể hiện bởi
lớp TBTDevAddr, lớp TBTSockAddr có hàm SetBTAddr() dùng để gán địa chỉ
thiết bị Bluetooth cho đối tượng của lớp này và hàm SetPort() để chọn một
void SetBTAddr(const TBTDevAddr& aRemote);
void SetPort(TUint aPort);
Channel cụ thể.
Qui trình xây dựng một client socket:
Mỗi client phải có các thành phần sau:
SocketServer (RSocketServ): Dùng để giao tiếp với socket server của
thiết bị.
SendingSocket: Dùng để kết nối, nhận và gởi dữ liệu đến server socket.
Sau đây là sequence diagram thể hiện qui trình kết nối của client socket
đến server socket:
93
: SendingSocket
: CMessageClient
: SocketServer
: FrameWork
1: ConnectToServerL()
2: Connect()
3: Open(..)
4: Connect(..)
EConnected
5: RunL()
6: RecvOneOrMore(..)
EReadyToReceive Messge
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Hình 7-6 Sequence diagram xây dựng client socket
Hàm Mô tả
1 – 4 ConnectToServerL yêu cầu đối tượng SocketServer kết nối đến socket server,
đồng thời mở một socket handle là SendingSocket, sau đó sử dụng nó để kết
nối, nhận và gởi dữ liệu với server socket.
5 - 6 Sau khi kết nối được thiết lập hàm RunL được gọi tự động và sau đó là hàm
RecvOneOrMore được gọi đồng thời biến trạng thái iState là
EReadyToReceiveMessage để thiết lập chế độ sẵn sàng nhận dữ liệu.
Bảng 7-7 Mô tả các hàm xây dựng client socket
RSocketServ SocketServer;
TInt err;
err = SocketServer.Connect();
User::LeaveIfError(err);
RSocket SendingSocket;
err = SendingSocket.Open(SocketServer,
KBTAddrFamily,
KSockStream,
Đoạn chương trình minh họa cho việc thực hiện kết nối:
94
KRFCOMM);
User::LeaveIfError(err);
TBTSockAddr addr;
TRequestStatus status;
addr.SetBTAddr(…);
addr.SetPort(…);
SendingSocket.Connect(addr, status);
// Nhận và gửi dữ liệu ở đây .....
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
7.2.4 Trao đổi dữ liệu thông qua Bluetooth socket
Sau khi thiết lập kết nối thành công, việc nhận và gửi dữ liệu với
Bluetooth socket cũng tương tự như với bất kì loại socket nào khác trên
Symbian (IrDA socket, Internet socket).
void Read(TDes8& aDesc,TRequestStatus& aStatus);
Để nhận dữ liệu ta dùng hàm Read():
Tên tham số Ý nghĩa
Dữ liệu nhận được aDesc
aStatus Sau khi lời gọi hàm kết thúc, biến này sẽ chứa mã lỗi
Bảng 7-8 Tham số hàm Read
void Write(const TDesC8& aDesc,
TRequestStatus& aStatus);
Để gửi dữ liệu, ta dùng hàm Write():
Tên tham số Ý nghĩa
Dữ liệu gửi đi aDesc
aStatus Sau khi lời gọi hàm kết thúc, biến này sẽ chứa mã lỗi
Bảng 7-9 Tham số hàm write
Có một cách linh hoạt hơn để trao đổi dữ liệu thông qua socket là dùng
hàm Recv() và Send(). Những hàm này cho phép ta chỉ định độ dài của buffer
void Recv(TDes8& aDesc,
TUint flags,
TRequestStatus& aStatus);
muốn nhận và gửi cùng với nhiều tùy chọn về protocol và I/O khác.
95
void Recv(TDes8& aDesc,
TUint flags,
TRequestStatus& aStatus,
TSockXfrLength& aLen);
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Tên tham số Ý nghĩa
aDesc Dữ liệu nhận được
flags Các thông tin về protocol và I/O
aLen Kích thước của dữ liệu đã nhận được
aStatus Sau khi lời gọi hàm kết thúc, biến này sẽ chứa mã lỗi
void Send(const TDesC8& aDesc,
TUint someFlags,
TRequestStatus& aStatus);
void Send(const TDesC8& aDesc,
TUint someFlags,
TRequestStatus& aStatus,
TSockXfrLength& aLen);
Bảng 7-10 Tham số hàm Recv
Tên tham số Ý nghĩa
Dữ liệu gửi đi aDesc
flags Chỉ định các thông tin về protocol và I/O
aLen Kích thước dữ liệu được gửi
aStatus Sau khi lời gọi hàm kết thúc, biến này sẽ chứa mã lỗi
Bảng 7-11 Tham số hàm Send
Ngoài ra còn có một hàm nữa có thể dùng để nhận dữ liệu, đó là hàm
void RecvOneOrMore(TDes8& aDesc,
TUint flags,
RequestStatus& aStatus,
TSockXfrLength& aLen);
RecvOneOrMore():
96
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Hàm này có các tham số tương tự như hàm Recv() nhưng hàm này sẽ
đọc dữ liệu bất cứ khi nào có dữ liệu trong buffer mà không cần quan tâm đến
kích thước của dữ liệu. Số byte đọc được sẽ lưu trong biến aLen.
7.3 Một số định nghĩa thông dụng liên quan đến Service Discovery
Protocol (SDP)
• Universally Unique Identifier (UUID). UUID là một số nguyên
128 bit được định nghĩa sẵn đại diện cho một dịch vụ Bluetooth .
UUID được quản lý bởi lớp TUUID. Lớp này được định nghĩa trong
file header “bttypes.h”
• Service record. Mỗi dịch vụ Bluetooth được đại diện bởi một UUID
và được lưu trữ bởi một Bluetooth Service Record. Một service
record chứa một UUID và một tập các thuộc tính cung cấp thông tin
về dịch vụ mà nó lưu trữ. Symbian cung cấp các hàm Bluetooth SDP
Database API cho phép thao tác với service record.
• Service record handle. Tất cả service record được lưu trữ trong
SDP Database. SDP Database xác định các service record khác nhau
bằng một con số 32 bit còn gọi là Service Record Handle. Một
Service Record Handle được thể hiện bởi lớp
TSdpServRecordHandle, được khai báo trong file header “btsdp.h”
• Service attribute ID. Mỗi service record chứa một tập hợp các
thuộc tính và mỗi thuộc tính được xác định bởi một con số định
danh. Con số này được thể hiện bởi lớp TSdpAttributeID. Trong
thực tế đây không phải là lớp mà là một số nguyên 16 bit. Kiểu dữ
liệu này được định nghĩa trong file “btsdp.h”. Symbian dùng
attribute ID để xác định các thuộc tính và giá trị của chúng trong
SDP database.
• SDP database. Mỗi thiết bị Bluetooth có một cơ sở dữ liệu cục bộ
chứa tất cả các dịch vụ mà nó cung cấp. Cơ sở dữ liệu này được thể
hiện bởi lớp RSdpDatabase. Lớp này được định nghĩa trong file
header “btsdp.h”
97
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
• Service search patterns: Lớp CSdpSearchPattern cho phép xác
định các dịch vụ cần tìm kiếm bằng cách tạo ra một danh sách các
TUUID cần tìm. Lớp này cung cấp các hàm cho phép thao tác với
danh sách các TUUID mà nó đang giữ như AddL, Remove, Find,
v.v…
• Attribute search patterns: Cũng tương tự như service search
pattern, Symbian cũng cung cấp các hàm cho phép xác định các
thuộc tính cần tìm kiếm trong một service record. Lớp
CSdpAttrIdMatchList thực hiện điều này bằng cách tạo ra một
danh sách attribute ID cần tìm kiếm.
• Attribute ranges: Sự khác nhau giữa CSdpSearchPattern và
CSdpAttrIdMatchList là CSdpAttrIdMatchList chấp nhận một
cấu trúc TAttrRange làm tham số. Cấu trúc này cho phép xác định
một dải các attribute ID cần tìm kiếm.
7.4 Bluetooth Service Discovery Database
Mỗi dịch vụ Bluetooth được lưu trữ bởi một service record trong SDP
database. Bằng cách đưa các dịch vụ Bluetooth vào SDP database, các thiết bị
Bluetooth khác sẽ biết được một thiết bị Bluetooth có hỗ trợ những dịch vụ nào
và thuộc tính của các dịch vụ đó. Symbian xây dựng SDP database dưới dạng
server. Cũng như các server khác, một ứng dụng muốn dùng các hàm do SDP
database server cung cấp phải kết nối vào server và tạo một phiên làm việc.
. Lớp Lớp RSdp dùng để kết nối vào SDP database server
RSdpDatabase dùng để tạo một phiên làm việc trên server. Định nghĩa của 2
class RSdp : public RSessionBase
{
public:
IMPORT_C RSdp();
IMPORT_C TInt Connect();
IMPORT_C TVersion Version() const;
IMPORT_C void ResourceCountMarkStart();
lớp này như sau:
98
IMPORT_C void ResourceCountMarkEnd();
IMPORT_C TInt ResourceCount();
};
class RSdpDatabase : public RSdpSubSession
{
public:
IMPORT_C RSdpDatabase();
IMPORT_C TInt Open(RSdp& aSession);
IMPORT_C void Close();
IMPORT_C void CreateServiceRecordL(
const TUUID& aUUID,
TSdpServRecordHandle& aHandle);
IMPORT_C void CreateServiceRecordL(
CSdpAttrValueDES& aUUIDList,
TSdpServRecordHandle& aHandle);
IMPORT_C void UpdateAttributeL(
TSdpServRecordHandle aHandle,
TSdpAttributeID aAttrID,
CSdpAttrValue& aAttrValue);
IMPORT_C void UpdateAttributeL(
TSdpServRecordHandle aHandle,
TSdpAttributeID aAttrID,
TUint aUintValue);
IMPORT_C void UpdateAttributeL(
TSdpServRecordHandle aHandle,
TSdpAttributeID aAttrID,
const TDesC16& aDesCValue);
IMPORT_C void UpdateAttributeL(
TSdpServRecordHandle aHandle,
TSdpAttributeID aAttrID,
const TDesC8& aDesCValue);
IMPORT_C void DeleteAttributeL(
TSdpServRecordHandle aHandle,
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
99
TSdpAttributeID aAttrID);
IMPORT_C void DeleteRecordL(
TSdpServRecordHandle aHandle);
...
};
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Để kết nối vào SDP database server, ta gọi một đối tượng của lớp RSdp
thực hiện hàm Connect(), sau đó ta dùng đối tượng này làm tham số cho hàm
RSdp iSdpSession;
RSdpDatabase iSdpDatabase;
if (iSdpSession.Connect() != KErrNone)
{
// Thông báo lỗi ở đây
}
if (iSdpDatabase.Open(iSdpSession) != KErrNone)
{
// Thông báo lỗi ở đây
}
Open() của lớp RSdpDatabase để tạo một phiên làm việc với SDP database.
Lớp RSdpDatabase cung cấp các hàm cho phép thao tác với các service
record cũng như thuộc tính của các record này. Hàm
RSdpDatabase::CreateServiceRecordL() dùng để tạo mới một service record.
Một khi service record đã được tạo ra, ta có thể thêm hoặc cập nhật các
thuộc tính của nó. Việc tạo ra một danh sách thuộc tính là nhiệm vụ của lớp
class CSdpAttrValueDES : public CSdpAttrValueList
{
public:
IMPORT_C static CSdpAttrValueDES* NewDESL(
MSdpElementBuilder* aBuilder);
virtual TSdpElementType Type() const;
IMPORT_C virtual void AcceptVisitorL(
MSdpAttributeValueVisitor& aVisitor);
IMPORT_C virtual TUint DataSize() const;
CAttrValueDes. Lớp này có định nghĩa như sau:
100
IMPORT_C void AppendValueL(CSdpAttrValue* aValue);
IMPORT_C virtual MSdpElementBuilder* BuildUnknownL(
TUint8 aType,
TUint8 aSizeDesc,
const TDesC8& aData);
IMPORT_C virtual MSdpElementBuilder* BuildNilL();
IMPORT_C virtual MSdpElementBuilder* BuildUintL(
const TDesC8& aUint);
IMPORT_C virtual MSdpElementBuilder* BuildIntL(
const TDesC8& aInt);
IMPORT_C virtual MSdpElementBuilder* BuildUUIDL(
const TUUID& aUUID);
IMPORT_C virtual MSdpElementBuilder* BuildBooleanL(
TBool aBool);
IMPORT_C virtual MSdpElementBuilder* BuildStringL(
const TDesC8& aString);
IMPORT_C virtual MSdpElementBuilder* BuildDESL();
IMPORT_C virtual MSdpElementBuilder* BuildDEAL();
IMPORT_C virtual MSdpElementBuilder* StartListL();
IMPORT_C virtual MSdpElementBuilder* EndListL();
IMPORT_C virtual MSdpElementBuilder* BuildURLL(
const TDesC8& aString);
IMPORT_C virtual MSdpElementBuilder* BuildEncodedL(
const TDesC8& aString);
virtual TSdpElementType Type() const=0;
virtual TUint DataSize() const=0;
virtual TUint Uint() const;
virtual TInt Int() const;
virtual TBool DoesIntFit() const;
virtual TInt Bool() const;
virtual const TUUID &UUID() const;
virtual const TPtrC8 Des() const;
...
};
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
101
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Để tạo ra một danh sách các thuộc tính, ta dùng các hàm StartListL(),
EndListL() và BuildxxxxL(). Hàm StartListL() báo hiệu việc bắt đầu thực hiện
thao tác với danh sách, hàm BuildxxxxL() dùng để đưa dữ liệu vào danh sách
và hàm EndListL sẽ đóng danh sách lại.
Giả sử ứng dụng cần đưa vào service record một thuộc tính là danh sách
các giao thức (protocol) mà ứng dụng hỗ trợ, đoạn chương trình sau minh họa
việc tạo một danh sách gồm 2 protocol. Protocol đầu tiên là L2CAP. Protocol
// Tạo một đối tượng CSdpAttrValueDES
CSdpAttrValueDES* protocolDescriptorList =
CSdpAttrValueDES::NewDESL(NULL);
CleanupStack::PushL(protocolDescriptorList);
// Tạo danh sách thuộc tính
protocolDescriptorList
->StartListL()
->BuildDESL()
->StartListL()
->BuildUUIDL(KL2CAP)
->EndListL()
->BuildDESL()
->StartListL()
->BuildUUIDL(KRFCOMM)
->BuildUintL(TBuf8<1>5)
->EndListL()
->EndListL();
thứ 2 là RFCOMM kèm theo một số nguyên đại diện cho kênh truyền (channel)
Một khi danh sách thuộc tính đã được tạo, ta sẽ đưa nó vào service
iSdpDatabase.UpdateAttributeL(
iRecord,
KSdpAttrIdProtocolDescriptorList,
*protocolDescriptorList);
record bằng hàm RSdpDatabase::UpdateAttributeL(). Ví dụ:
102
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
UpdateAttributeL(
Hàm UpdateAttributeL() có cấu trúc như sau:
Attribute ID xác định thuộc tính mà ta cần cập nhật (Xin xem thêm phần
“Attribute ID” ở mục 7.3). Các Attribute ID này đã được định nghĩa sẵn, chẳng
hạn KSdpAttrIdProtocolDescriptorList là thuộc tính về protocol,
KSdpAttrIdServiceRecordHandle là thuộc tính về Service Record Handle,
v.v... Tất cả các Attribute ID này được định nghĩa trong lớp “btsdp.h”
Để xóa một service record ra khỏi database, ta dùng hàm
RSdpDatabase::DeleteRecordL(). Để đóng database và phiên làm việc với
iSdpDatabase.Close();
iSdpSession.Close();
database, ta dùng hàm Close(). Ví dụ:
sau khi khoi dong server
: MessageServer
: CBTServiceAdvertiser
: CNameAppUI
: RSdp
: RSdpDatabase
1: StartL()
2: StartAdvertisingL()
3: Connect()
4: Open(..)
Khoi tao protocol descriptor list
5: CreateServiceRecordL(..)
6: BuildProtocolDescriptionL(..)
7: UpdateAttributeL(..)
8: UpdateAttributeL(..)
9: UpdateAttributeL(..)
Lược đồ sau đây thể hiện một qui trình quảng bá dịch vụ
Hình 7-7 Sequence diagram quảng bá dịch vụ
103
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Hàm Mô tả
StartL gọi hàm StartAdvertiserL và thiết lập một phiên tương tác với 1 – 4
SDP database.
5 Tạo một record mới
6 Cập nhật the Protocol Descriptor List
7 – 9 Cập nhật thuộc tính Service Id, Service Name and Service Description
của record
Bảng 7-12 Mô tả các hàm quảng bá dịch vụ
: CSdpAttrValueDES
: CBTServiceAdvertiser
1: StartListL()
2: BuildDESL()
3: <
1 : MSdpElementBuilder
4: StartListL()
5: BuildUUIDL(..)
L2CAP UUID entry
6: EndListL()
7: BuildDESL()
8: <
2 : MSdpElementBuilder
9: StartListL()
10: BuildUUIDL(..)
RFCOMM UUID entry
11: BuildUIIntL()
Channel number entry
12: EndListL()
13: EndListL()
Khởi tạo protocol descriptor list sử dụng lớp CSdpAttrValueDES:
Hàm Mô tả
StartListL cho biết những phần tử tiếp theo thuộc Data element 1
sequence (DES).
2-3 BuildDESL thêm một DES
4 - 6 Thêm mục L2CAP UUID
7-9 Tạo một DES mới
104
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
10-13 Thêm mục RFCOMM UUID và thêm mục Channel vào DES
Bảng 7-13 Mô tả hàm xây dựng protocol descriptor list
7.5 Bluetooth Service Discovery Agent
Bluetooth Service Discovery Agent cho phép lập trình viên tìm kiếm các
dịch vụ Bluetooth và thuộc tính của các dịch vụ đó. Các hàm Service
Discovery Agent API là một trong hai loại hàm API cho phép lập trình viên sử
dụng giao thức Bluetooth Service Discovery Protocol.
Khi sử dụng các hàm API này, ứng dụng phải cài đặt những hàm
callback, hay còn gọi là hàm observer. Symbian cung cấp lớp
MSdpAgentNotifier định nghĩa một tập các hàm observer ảo mà ứng dụng
phải cài đặt. Tất cả các yêu cầu tìm kiếm được gọi thông qua lớp CSdpAgent.
Lớp này được định nghĩa trong file header “btsdp.h”. Sau đây là khai báo của
class CSdpAgent : public CBase
{
public:
IMPORT_C static CSdpAgent* NewL(
MSdpAgentNotifier& aNotifier,
const TBTDevAddr& aDevAddr);
IMPORT_C static CSdpAgent* NewLC(
MSdpAgentNotifier& aNotifier,
const TBTDevAddr& aDevAddr);
IMPORT_C ~CSdpAgent();
IMPORT_C void SetRecordFilterL(
const CSdpSearchPattern& aUUIDFilter);
IMPORT_C void SetAttributePredictorListL(
const CSdpAttrIdMatchList& aMatchList);
IMPORT_C void NextRecordRequestL();
IMPORT_C void AttributeRequestL(
TSdpServRecordHandle aHandle,
TSdpAttributeID aAttrID);
IMPORT_C void AttributeRequestL(
lớp này:
105
TSdpServRecordHandle aHandle,
const CSdpAttrIdMatchList& aMatchList);
IMPORT_C void AttributeRequestL(
MSdpElementBuilder* aBuilder,
TSdpServRecordHandle aHandle,
TSdpAttributeID aAttrID);
IMPORT_C void AttributeRequestL(
MSdpElementBuilder* aBuilder,
TSdpServRecordHandle aHandle,
const CSdpAttrIdMatchList& aMatchList);
IMPORT_C void Cancel();
...
};
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Một đối tượng của lớp CSdpAgent chỉ được tạo ra khi ứng dụng đã tạo
ra một lớp cài đặt của MSdpAgenNotifier và chỉ định được địa chỉ của thiết bị
Bluetooth mà ứng dụng muốn truy vấn.
Lớp MSdpAgentNotifier được định nghĩa trong file header “btsdp.h”.
class MSdpAgentNotifier
{
public:
virtual void NextRecordRequestComplete(
TInt aError,
TSdpServRecordHandle aHandle,
TInt aTotalRecordsCount) = 0;
virtual void AttributeRequestResult(
TSdpServRecordHandle
aHandle,
TSdpAttributeID aAttrID,
CSdpAttrValue* aAttrValue) = 0;
virtual void AttributeRequestComplete(
TSdpServRecordHandle,
TInt
Định nghĩa của nó như sau:
106
aError) = 0;
};
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Trước khi một ứng dụng có thể bắt đầu tìm kiếm các dịch vụ được cung
cấp trên một thiết bị cụ thể, nó phải tạo ra một lớp cài đặt của lớp giao diện
MSdpAgenNotifier.
Lớp CSdpSearchPattern được dùng để xác định UUID cần tìm (Xin
xem thêm về “service search patterns” ở mục 7.3). Bất kì service record nào
trong SDP database của một thiết bị, nếu có chứa một trong những ID này sẽ
được trả về trong tiến trình tìm kiếm.
Ứng dụng dùng hàm SetRecordFilterL() của lớp CSdpAgent để thiết
lập một danh sách các dịch vụ mà nó quan tâm. Hàm này yêu cầu một tham số
là đối tượng của lớp CSdpSearchPattern.
Để bắt đầu quá trình tìm kiếm, ứng dụng phải gọi hàm
CSdpAgent::NextRecordRequestL(). Việc làm này sẽ khởi tạo quá trình tìm
kiếm. Hệ điều hành sẽ thông báo cho ứng dụng biết diễn tiến bằng cách dùng
lớp MSdpAgentNotifier.
Hàm MSdpAgentNotifier::NextRecordRequestComplete() sẽ được gọi
khi tìm kiếm được một dịch vụ. Các tham số của hàm này bao gồm một mã lỗi
(aError), một service record handle (aHandle) và một số nguyên
(aTotaolRecordsCount). aError báo cho ứng dụng biết việc tìm kiếm có lỗi hay
không, aHandle giữ record được tìm thấy, aTotalRecordsCount cho biết số
lượng record còn lại. Các lời gọi hàm CSdpAgent::NextRecordRequestL() sau
đó sẽ làm cho hệ điều hành gọi hàm NextRecordRequestComplete với tham số
là aHandle một service record handle tiếp theo nếu có, đồng thời cập nhật tham
số aTotalRecordsCount.
Khi hàm NextRecordRequestComplete() được gọi thực hiện, ứng dụng
sẽ muốn truy vấn thêm các thông tin về service record mà nó nhận được. Hàm
CSdpAgent::AttributeRequestL sẽ khởi tạo quá trình truy vấn thuộc tính của
service record. Hệ điều hành sẽ gọi hàm
MSdpAgentNotifier::AttributeRequestResultL một khi tìm được thuộc tính
107
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
thỏa yêu cầu tìm kiếm. Một khi tất cả thuộc tính thỏa yêu cầu tìm kiếm được trả
về, hàm MSdpAgentNotifier::AttributeRequestComplete sẽ được gọi.
7.6 Bluetooth Security Manager
Bluetooth Security Manager (BSM) cho phép ứng dụng Bluetooth thiết
lập các chế độ bảo mật mà một kết nối phải đáp ứng. Các thiết lập bảo mật chỉ
đơn giản là có authentication, có authorization và có encryption hay không.
Authentication nghĩa là cả 2 ứng dụng phải nhập cùng 1 khóa để có thể giao
tiếp, authorization nghĩa là ứng dụng sẽ hỏi xem người dùng có chấp nhận kết
nối hay không, encryption nghĩa là dữ liệu được mã hóa khi truyền nhận. Các
thiết lập bảo mật này được áp dụng cho một server, một protocol, một kênh
truyền cụ thể. Bluetooth security manager bảo đảm rằng kết nối từ bên ngoài
vào phải đáp ứng các yêu cầu bảo mật.
Trong Symbian, Bluetooth Security Manager (BSM) được cài đặt như
một server. Các hàm API của BSM cung cấp cho client lớp
TBTServiceSecurity để đóng gói các cấu hình bảo mật. Lớp
TBTServiceSecurity được định nghĩa trong file header “btmanclient.h”. Các
class TBTServiceSecurity
{
public:
IMPORT_C TBTServiceSecurity(TUid aUid,
TInt aProtocolID,
TInt aChannelID);
IMPORT_C TBTServiceSecurity(
const TBTServiceSecurity& aService);
IMPORT_C TBTServiceSecurity();
IMPORT_C void SetUid(TUid aUid);
IMPORT_C void SetProtocolID(TInt aProtocolID);
IMPORT_C void SetChannelID(TInt aChannelID);
IMPORT_C void SetAuthentication(
TBool aPreference);
IMPORT_C void SetAuthorisation(
phương thức của lớp này được thể hiện dưới đây:
108
TBool aPreference);
IMPORT_C void SetEncryption(TBool aPreference);
IMPORT_C void SetDenied(TBool aPreference);
IMPORT_C TBool AuthorisationRequired() const;
IMPORT_C TBool EncryptionRequired() const;
IMPORT_C TBool AuthenticationRequired() const;
IMPORT_C TBool Denied() const;
IMPORT_C TUid Uid() const;
IMPORT_C TInt ProtocolID() const;
IMPORT_C TInt ChannelID() const;
...
};
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Các hàm SetAuthentication(), SetAuthorisation(), SetEncryption() dùng
để gán các chế độ bảo mật tương ứng là bật hay tắt. Hàm SetDenied dùng để từ
chối tất cả các truy cập. Ứng dụng phải chỉ rõ dịch vụ, giao thức, kênh truyền
mà chế độ bảo mật sẽ áp dụng.
Bởi vì BSM được cài đặt như là một server, các ứng dụng client phải kết
nối vào BSM server và thiết lập một phiên làm việc trước khi có thể dùng các
hàm API của BSM. Lớp RBTMan cung cấp kết nối đến BSM server. Lớp này
được định nghĩa trong file header “btmanclient.h”. Các phương thức của lớp
class RBTMan : public RSessionBase
{
public:
IMPORT_C RBTMan();
IMPORT_C TInt Connect();
IMPORT_C TVersion Version() const;
};
này được thể hiện dưới đây:
Lớp RBTSecuritySettings mới thật sự là lớp cung cấp chức năng bảo
mật. Lớp này được định nghĩa trong file headet “btmanclient.h”. Các phương
thức của lớp này được thể hiện dưới đây:
109
class RBTSecuritySettings : public RBTManSubSession
{
public:
IMPORT_C TInt Open(RBTMan& aSession);
IMPORT_C void Close();
IMPORT_C void RegisterService(
const TBTServiceSecurity& aService,
TRequestStatus& aStatus);
IMPORT_C void UnregisterService(
const TBTServiceSecurity& aService,
TRequestStatus& aStatus);
...
};
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Một khi ứng dụng đã thiết lập một kết nối và một phiên làm việc với
BSM, hàm RegisterService() cho phép ứng dụng đăng kí các yêu cầu bảo mật.
Hàm UnregisterService() cho phép ứng dụng xóa bỏ tất cả các yêu cầu bảo mật.
Biến aStatus cho biết kết quả của 2 hàm trên là thành công hay thất bại.
Nói tóm lại, qui trình thiết lập chế độ bảo mật được minh họa dưới
đây:
Công việc đầu tiên là thiết lập kết nối đến BSM server và tạo một phiên
// Lớp dùng kết nối đến BSM
RBTMan secManager;
// Lớp thực hiện việc cấu hình bảo mật
RBTSecuritySettings secSettingsSession;
// Thực hiện kết nối
User::LeaveIfError(secManager.Connect());
CleanupClosePushL(secManager);
// Tạo phiên làm việc
User::LeaveIfError(secSettingsSession.Open(
secManager));
CleanupClosePushL(secSettingsSession);
làm việc mới:
110
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Một khi phiên làm việc đã được thiết lập, sử dụng lớp
TBTServiceSecurity để chọn chế độ bảo mật. Trong ví dụ này, ta bật các chế
độ bảo mật authentication, authorisation, encryption. Ta áp dụng các thiết lập
bảo mật này cho dịch vụ OBEX, sử dụng giao thức RFCOMM, với channel 5.
TBTServiceSecurity serviceSecurity(
KUidBTObjectExchangeApp,
KSolBtRFCOMM,
0);
// Gán các chế độ bảo mật cho lớp này
serviceSecurity.SetAuthentication(ETrue);
serviceSecurity.SetEncryption(ETrue);
serviceSecurity.SetChannelID(5);
serviceSecurity.SetAuthorisation(ETrue);
Bây giờ ta sẽ đăng kí các thiết lập bảo mật này với BSM thông qua
TRequestStatus status;
secSettingsSession.RegisterService(
serviceSecurity,
status);
phiên làm việc đã được tạo:
Ứng dụng client sẽ đợi BSM tiến hành đăng kí các thiết lập bảo mật và
User::WaitForRequest(status);
User::LeaveIfError(status.Int());
sẽ quản lý lỗi nếu có:
Sau khi thiết lập các chế độ bảo mật xong, cần phải giải phóng các tài
CleanupStack::PopAndDestroy(); // secManager
CleanupStack::PopAndDestroy(); // secSettingsSession
nguyên đã dùng:
7.7 Bluetooth Device Selection UI
Symbian cung cấp một chức năng cho phép thực hiện tìm kiếm các thiết
bị Bluetooth và hiển thị chúng cho người dùng. Việc này được thực hiện thông
111
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
qua lớp RNotifier. Lớp này được định nghĩa trong file header “e32std.h”. Định
class RNotifier : public RSessionBase
{
public :
IMPORT_C RNotifier();
IMPORT_C TInt Connect();
IMPORT_C TInt StartNotifier(
TUid aNotifierUid,
const TDesC8& aBuffer,
TDes8& aResponse);
IMPORT_C TInt CancelNotifier(
TUid aNotifierUid);
IMPORT_C TInt UpdateNotifier(
TUid aNotifierUid,
const TDesC8& aBuffer,
TDes8& aResponse);
IMPORT_C void
StartNotifierAndGetResponse(
TRequestStatus& aRs,
TUid aNotifierUid,
const TDesC8& aBuffer,
TDes8& aResponse);
IMPORT_C TInt UnloadNotifiers(
TUid aNotifierUid);
IMPORT_C TInt LoadNotifiers(
TUid aNotifierUid);
IMPORT_C void Notify(
const TDesC& aLine1,
const TDesC& aLine2,
const TDesC& aBut1,
const TDesC& aBut2,
TInt& aButtonVal,
TRequestStatus& aStatus);
nghĩa của lớp này như sau:
112
IMPORT_C TInt InfoPrint(const TDesC& aDes);
...
};
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Lớp TBTDeviceSelectionParams cho phép một ứng dụng truyền vào
class TBTDeviceSelectionParams
{
public:
IMPORT_C TBTDeviceSelectionParams();
IMPORT_C void SetUUID(const TUUID& aUUID);
IMPORT_C void SetDeviceClass(
TBTDeviceClass aClass);
IMPORT_C const TUUID& UUID();
IMPORT_C TBTDeviceClass DeviceClass();
IMPORT_C TBool IsValidDeviceClass();
IMPORT_C TBool IsValidUUID();
...
};
Bằng cách dùng hàm SetDeviceClass() , ứng dụng có thể giới hạn số
các tham số khởi tạo cho quá trình chọn lựa
lượng những thiết bị cần tìm kiếm.
Ứng dụng cũng có thể xác định các UUID của dịch vụ mà nó cần tìm.
Điều này sẽ làm cho quá trình tìm kiếm chỉ tìm kiếm những thiết bị có hỗ trợ
dịch vụ mà ứng dụng yêu cầu. Việc này thực hiện thông qua hàm SetUUID().
Để tìm kiếm tất cả các thiết bị, ứng dụng nên để đối tượng
TBTDeviceSelectionParams ở giá trị mặc định.
Sau khi người dùng chọn thiết bị muốn giao tiếp, thông tin về thiết bị mà
người dùng lựa chọn sẽ được trả về cho ứng dụng thông qua đối tượng của lớp
TBTDeviceResponseParams. Lớp này được định nghĩa trong file header
class TBTDeviceResponseParams
{
“btextnotifiers.h” . Định nghĩa của nó như sau:
113
public:
IMPORT_C TBTDeviceResponseParams();
IMPORT_C void SetDeviceAddress(
const TBTDevAddr& aBDAddr);
IMPORT_C void SetDeviceName(
const TDesC& aName);
IMPORT_C void SetDeviceClass(
TBTDeviceClass aClass);
IMPORT_C const TBTDevAddr& BDAddr() const;
IMPORT_C const TDesC& DeviceName() const;
IMPORT_C TBTDeviceClass DeviceClass();
IMPORT_C TBool IsValidBDAddr() const;
IMPORT_C TBool IsValidDeviceName() const;
IMPORT_C TBool IsValidDeviceClass();
...
};
Hàm IsValidxxxx() được dùng để bảo đảm rằng các thông tin liên quan
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
đã được thiết lập trong lớp. Ví dụ, nếu hàm IsValidDBAddr() trả về giá trị true,
ứng dụng biết được rằng địa chỉ của thiết bị Bluetooth đã được thiết lập trong
lớp TBTDeviceResponseParams. Nếu hàm này trả về giá trị false có nghĩa là
chưa có dữ liệu về địa chỉ thiết bị Bluetooth trong lớp này. Ứng dụng có thể
nhận được địa chỉ thiết bị thông qua hàm BDAddr() và tên của thiết bị thông
qua hàm DeviceName().
Symbian cung cấp một tập các gói dữ liệu đóng gói các lớp vừa trình
bày bên trên:
TBTDeviceSelectionParamsPckg
TBTDeviceResponseParamsPckg
Nói tóm lại, qui trình để thực hiện tìm kiếm thiết bị được mô tả như
// Kết nối vào server trước khi có thể sử dụng
RNotifier not;
sau:
114
User::LeaveIfError(not.Connect());
TBTDeviceSelectionParamsPckg selectionFilter;
// Thực hiện tìm kiếm và hiển thị cho người dùng
not.StartNotifierAndGetResponse(
status,
KDeviceSelectionNotifierUid,
selectionFilter,
aResponse
);
// Đợi người dùng chọn thiết bị cần giao tiếp
User::WaitForRequest(status);
if (status.Int() == KErrNone)
{
if (aResponse().IsValidDeviceName())
{
success = ETrue;
}
else
{
iReporter.Error(_L("Failed to connect"));
}
}
else
{
iReporter.Error(_L("No device selected"));
}
not.CancelNotifier(KDeviceSelectionNotifierUid);
not.Close();
return success;
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
7.8 Cấu hình phần cứng Bluetooth cho máy ảo:
Để có thể lập trình với Bluetooth trên máy ảo (thiết lập kết nối, gửi và
nhận dữ liệu, v.v…) ta cần phải cấu hình phần cứng Bluetooth cho máy ảo. Ở
115
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
đây chúng em chỉ xin giới thiệu cách cấu hình cổng Bluetooth USB cho máy ảo
của Series 60 SDK v1.2 .
7.8.1 Sự khác nhau giữa Bluetooth của máy ảo và thiết bị thật
Môi trường Bluetooth trên máy thật và máy ảo có những điểm khác
nhau chính như sau:
1. Hiệu năng: Hiệu năng trên máy thật và máy ảo khác nhau. Do đó có
thể xuất hiện các lỗi trên máy ảo có mà trên máy thật không có và
ngược lại.
2. Chồng giao thức Bluetooth trên máy ảo và trên thiết bị thật khác
nhau (Xem hình dưới). Do đó, khi ta lập trình ứng dụng Bluetooth
trên máy ảo, các ứng dụng Bluetooth có thể không được kiểm thử
một cách chính xác
Hình 7-8 Sự khác biệt giữa chồng giao thức Bluetooth trên thiết bị thật và trên
máy ảo
3. Máy ảo không nạp các dịch vụ Bluetooth khi mới khởi chạy, trong
khi máy thật thì có. Do đó, máy ảo chỉ có thể yêu cầu kết nối đến với
các thiết bị khác. Nếu muốn một thiết bị khác muốn yêu cầu kết nối
vào máy ảo thì trước đó máy ảo phải khởi tạo các dịch vụ cần thiết.
116
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Để làm được điều này xin xem thêm trong ví dụ Advertiser đi kèm
với bộ SDK
7.8.2 Cài đặt và cấu hình thiết bị Bluetooth
Để thiết lập Bluetooth USB cho máy ảo, trước hết ta phải gỡ bỏ tất cả
các driver đã cài trên máy của thiết bị Bluetooth USB mà ta muốn dùng với
máy ảo. Sau đó ta cắm thiết bị Bluetooth USB vào cổng USB của máy tính.
Khi đó máy tính sẽ nhận ra thiết bị Bluetooth USB mới cắm vào và yêu cầu
chọn driver cho thiết bị đó. Ta chọn đường dẫn đến thư mục có chứa driver
DTL_X.
Sau khi cài driver cho thiết bị Bluetooth xong, một COM port mới là
CYBERABI DTL-X sẽ được tạo ra. Đây chính là Bluetooth virtual COM port.
Ta sẽ sử dụng COM port này cho máy ảo.
Hình 7-9 Bluetooth virtual COM port trên máy tính
Sau khi xác định COM port (COMx ; x=1,2,3,4,…) của thiết bị này, ta
sẽ tiến hành cấu hình Bluetooth port cho máy ảo. Mở file
\Symbian\6.1\Series60\Epoc32\Wins\c\system\data\bt.esk , file bt.esk sẽ có nội
dung như hình bên dưới:
117
Chương 7 :Lập trình giao tiếp Bluetooth trên Symbian
Hình 7-10 Cấu hình Bluetooth COM port cho máy ảo
Thay con số ở vị trí port thành con số của Bluetooth port mà ta vừa tạo
ra. Lưu ý là con số mà ta nhập vào đây phải nhỏ hơn con số của Bluetooth port
một đơn vị, nghĩa là nếu Bluetooth port là COM4 thì trong file bt.esk ta thay
port thành 3.
Đến đây là ta đã hoàn thành xong việc cấu hình phần cứng Bluetooth
cho máy ảo. Ta có thể dùng máy ảo để thực hiện các công việc có liên quan đến
Bluetooth như thiết lập kết nối, gửi và nhận dữ liệu, v.v… với các thiết bị
Bluetooth khác.
118
0PHẦN III. ỨNG DỤNG MINH HỌA
Chương 8: Phân tích và thiết kế ứng dụng điều khiến máy tính từ xa
Chương 9: Cài đặt và thử nghiệm
Chương 10: Tổng kết
PHẦN III. ỨNG DỤNG MINH HỌA
119
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Chương 8 : Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
8.1 Khảo sát hiện trạng
Hiện nay, công nghệ thông tin đang phát triển mạnh mẽ và trở thành một
ngành công nghiệp mũi nhọn ở nhiều quốc gia. Máy tính ngày càng trở nên phổ
biến, xuất hiện rất nhiều trong các gia đình và trở thành một công cụ không thể
thiếu đối với nhiều người. Máy tính phục vụ rất nhiều nhu cầu khác nhau của
con người, từ nhu cầu làm việc, học tập đến các nhu cầu giải trí như chơi game,
xem phim, nghe nhạc, v.v…
Với sự có mặt rộng rãi của máy tính trong đời sống, con người có nhu
cầu điều khiển máy tính từ xa giống như điều khiển các thiết bị gia dụng khác
(tivi, đầu máy, máy nghe nhạc, v.v…). Công cụ điều khiển máy tính từ xa là
một trợ giúp đắc lực cho con người, giúp con người có thể biến máy tính của
mình thành một trung tâm giải trí đồng thời còn phục vụ cho công việc như trợ
giúp thuyết trình, thao tác điều khiển máy tính từ xa, v.v....
Có nhiều giải pháp để thực hiện vấn đề trên: Microsoft phát triển
Windows XP thành hệ điều hành multimedia với một bộ điều khiển từ xa tích
hợp, hoặc dạo gần đây là phong trào gắn thêm “mắt” hồng ngoại vào máy tính
kết hợp với chương trình download tại http://www.girder.nl để có thể điều
khiển máy tính thông qua bộ điều khiển từ xa của tivi.
Bên cạnh đó, các công nghệ không dây và các thiết bị di động ngày càng
phát triển mạnh mẽ. Từ đó xuất hiện thêm các giải pháp khác, đó là sử dụng
các công nghệ không dây trên các thiết bị di động để điều khiển máy tính. Hiện
nay đã có nhiều giải pháp điều khiển máy tính từ xa chạy trên các thiết bị di
động như Pocket PC, Palm Tungsten, Smartphone với sự hỗ trợ của nhiều công
nghệ không dây khác nhau và cả internet. Các công nghệ không dây có thể kể
đến là IrDA (hồng ngoại), Bluetooth, Wi-Fi, còn các thiết bị di động thì chạy
trên các hệ điều hành phổ biến như Symbian, WinCE, Palm OS. Mỗi công
nghệ, mỗi hệ điều hành đều có những ưu, khuyết điểm riêng của nó, trong đó
120
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
nổi bật lên là cặp bài trùng Bluetooth – Symbian. Symbian gần như chiếm lĩnh
thị trường hệ điều hành trên điện thoại di động thông minh và hầu hết các điện
thoại chạy hệ điều hành Symbian đều tích hợp sẵn Bluetooth.
8.2 Phân tích và xác định yêu cầu
Mục tiêu của đề tài là xây dựng một hệ thống điều khiển máy tính từ xa
thông qua các điện thoại Series 60 của hãng Nokia (hệ điều hành Symbian)
giúp người dùng có thể điều khiển một số chương trình trên máy tính phục vụ
mục đích giải trí, công việc.
Sau đây là danh sách các yêu cầu của chương trình:
STT Chức năng Ghi chú
1 Điều khiển chuột Sử dụng điện thoại thực hiện các chức năng như
di chuyển chuột, nhấn chuột trái, nhấn chuột
phải, thiết lập tốc độ chuột
2 Điều khiển Sử dụng điện thoại thực hiện các chức năng khi
Powerpoint trình diễn Powerpoint như qua slide kế, về slide
đã qua, đến slide bất kỳ
3 Điều khiển Sử dụng điện thoại thực hiện các chức năng chơi
Winamp, Window nhạc như Play, Stop, Open, Next, Prev v.v.
Media Player
Shortcut key Sử dụng điện thoại gởi các tổ hợp phím đến cửa 4
sổ đang active trên server
Turn off Sử dụng điện thoại thực hiện shutdown, restart, 5
logout, standby, hibernate server
Hẹn giờ Sử dụng điện thoại hẹn giờ bật, tắt chương trình 6
Bảng 8-1 Xác định yêu cầu
121
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
8.3 Xây dựng mô hình Use-case
8.3.1 Xác định Actor và Use case
• Actor: Người sử dụng chương trình điều khiển từ xa
• Use case:
o Connect: Dùng điện thoại di động kết nối vào máy tính.
o Turnoff
(cid:131) Shutdown: Tắt máy tính.
(cid:131) Restart: Khởi động lại máy tính
(cid:131) Standby: Đặt máy tính ở chế độ Stanby
(cid:131) Logoff: Logoff máy tính
(cid:131) Hibernate: Tắt máy tính ở chế độ Hibernate
o Control Mouse: Chức năng điều khiển chuột
(cid:131) Mouse on: Chuyển sang chế độ điều khiển chuột.
(cid:131) Mouse off: Tắt chế độ điều khiển chuột
(cid:131) Mouse speed: Thay đổi tốc độ di chuyển của chuột
(cid:131) Move left: Di chuyển con trỏ chuột về bên trái
(cid:131) Move right: Di chuyển con trỏ chuột về bên phải
(cid:131) Move up: Di chuyển con trỏ chuột lên
(cid:131) Move down: Di chuyển con trỏ chuột xuống
(cid:131) Left click: Nhấn nút trái chuột
(cid:131) Right click: Nhấn nút phải chuột
o Control media player: Chọn chức năng điều khiển chương trình
nghe nhạc, xem phim thông dụng là Winamp hoặc Windows
Media Player.
(cid:131) Browse: Duyệt nội dung thư mục của máy tính
(cid:131) AddToPlayList: Thêm file được chọn trên giao diện
Browse vào Playlist
(cid:131) RefreshFileList: Lấy thông tin thư mục được chọn trên
máy tính và hiển thị lên giao diện Browse
(cid:131) Open: Chơi bài hát được chọn ở giao diện Browse
122
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
(cid:131) Control: Chuyển sang chế độ điều khiển bằng giao diện
player
(cid:131) Prev: Chuyển về bài trước đó
(cid:131) Next: Chuyển sang bài kế tiếp
(cid:131) Play: Chơi bài hát hiện hành
(cid:131) Stop: Ngưng chơi bài hát hiện hành
(cid:131) Pause: Tạm dừng tại vị trí đang chơi
(cid:131) FastForward: Tua nhanh tới
(cid:131) Rewind: Tua lui
(cid:131) Repeat: Đặt player ở chế độ repeat
(cid:131) Shuffle: Đặt player ở chế độ shuffle
(cid:131) Setvolume: Thay đổi volume của player
(cid:131) PlayList: Duyệt nội dung PlayList của MediaPlayer bên
máy tính
(cid:131) RefreshPlayList: Lấy thông tin playlist bên máy tính và
hiển thị lên giao diện PlayList
(cid:131) Remove: Xoá bài được chọn trong playlist
(cid:131) RemoveAll: Xoá tất cả các bài trong playlist
o Control Powerpoint: Chọn chức năng điều khiển chương trình
Powerpoint
(cid:131) Open: Mở một file được chọn
(cid:131) Next: Chuyển sang slide kế tiếp
(cid:131) Prev: Chuyển về slide trước đó
(cid:131) Stop: Ngưng tình diễn Powerpoint
(cid:131) GotoSlide: Chuyển sang slide được chọn
(cid:131) RefreshFileList: Lấy thông tin thư mục được chọn trên
máy tính và hiển thị lên điện thoại di động
o Sleep
(cid:131) SetSleep: Hẹn giờ tắt chương trình MediaPlayer
(cid:131) RemoveSleep: Huỷ hẹn giờ tắt chương trình MeidaPlayer
o Wakeup
123
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
(cid:131) SetWakeup: Hẹn giờ bật chương trình Media Player
(cid:131) RemoveWakeup: Hẹn giờ tắt chương trình Meida Player
o ShortcutKey
(cid:131) SettingShortcutKey: Nhập phím qui định cho ShortcutKey
(cid:131) SendShortcutKey: Gởi ShortcutKey sang Server
(cid:131) OffShortcutKey: Tắt ShortcutKey
124
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Connect
(from UseCases)
Shutdown
ShortcutKey
(from UseCases)
(from UseCases)
Restart
Wakeup
(from UseCases)
(from UseCases)
Sleep
Standby
User
(from UseCases)
(from UseCases)
Logoff
(from UseCases)
ControlPowerPoint
(from UseCases)
Hibernate
(from UseCases)
ControlMediaPlayer
ControlMouse
(from UseCases)
8.3.2 Mô hình Use-case
Hình 8-1 Mô hình Use-case tổng quát
125
MouseOn
(from UseCases)
Move down
MouseOff
(from UseCases)
(from UseCases)
MouseSpeed
(from UseCases)
Move up
(from UseCases)
User
Left click
Right click
(from UseCases)
(from UseCases)
Move right
Move left
(from UseCases)
(from UseCases)
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-2 Mô hình Use-case Control Mouse
126
Browse
AddToPlayList
Setvolume
(from UseCases)
(from UseCases)
(from UseCases)
RefreshFileList
(from UseCases)
Shuffle
(from UseCases)
Open
(from UseCases)
Repeat
(from UseCases)
PlayList
(from UseCases)
Rewind
(from UseCases)
User
RefreshPlayList
(from UseCases)
FastForward
(from UseCases)
RemoveAll
(from UseCases)
Pause
(from UseCases)
Remove
Stop
(from UseCases)
(from UseCases)
Play
Control
Prev
Next
(from UseCases)
(from UseCases)
(from UseCases)
(from UseCases)
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Open
(from UseCases)
Next
Stop
(from UseCases)
(from UseCases)
User
Prev
GotoSlide
(from UseCases)
RefreshFileList
(from UseCases)
(from UseCases)
Hình 8-3 Mô hình Use-case Control Media player
Hình 8-4 Mô hình Use-case Control PowerPoint
127
SetWakeup
(from UseCases)
RemoveWakeup
RemoveSleep
(from UseCases)
(from UseCases)
User
OnShortcutKey
SetSleep
(from UseCases)
(from UseCases)
SettingShortcutKey
OffShortcutKey
(from UseCases)
(from UseCases)
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-5 Mô hình Use-case SleepWakeUpShortcutKey
128
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
8.4 Đặc tả Use case
8.4.1 Connect
• Tên Use case: Connect
• Mô tả
Người dùng khởi động server sẵn sàng lắng nghe chờ kết nối,
đồng thời sử dụng điện thoại di động kết nối vào máy tính.
• Dòng sự kiện
o Dòng sự kiện chính
(cid:131) Người dùng nhập một số thông tin trên Server như: Thư mục
muốn điện thoại có thể Browse, COM port cần lắng nghe,
đường dẫn tập tin thực thi Winamp và Windows Media Player
(cid:131) Người dùng nhấn vào nút listen để lắng nghe chờ kết nối từ
Client
(cid:131) Server hiển thị thông báo lắng nghe thành công
(cid:131) Người dùng sử dụng điện thoại di động kết nối vào máy tính
(cid:131) Máy tính sẽ hiển thị tất cả tên các thiết bị Bluetooth (đối với
máy tính thì đó là tên máy) mà nó tìm được
(cid:131) Ngưòi dùng chọn tên thiết bị Bluetooth mà nó muốn kết nối
vào
(cid:131) Hiển thị menu mới
o Dòng sự kiện khác
(cid:131) Nếu lắng nghe không thành công sẽ hiển thị thông báo lỗi
(cid:131) Nếu kết nối không thành công điện thoại di động sẽ hiển thị
thông báo và không hiển thị menu mới
• Các yêu cầu đặc biệt
Không
• Điều kiện tiên quyết
Không
• Điều kiện bổ sung
Không
129
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
• Điểm mở rộng
Không
8.4.2 Turn off
• Tên Use case: Restart
• Mô tả
Người dùng thực hiện công việc khởi động lại máy tính bằng điện
thoại di động
• Dòng sự kiện
o Dòng sự kiện chính
(cid:131) Người dùng chọn chức năng Restart trên menu
(cid:131) Client sẽ gởi thông điệp sang Server
(cid:131) Server nhận thông điệp và ra lệnh restart Server
o Dòng sự kiện khác
(cid:131) Không có
• Các yêu cầu đặc biệt
Không
• Điều kiện tiên quyết
Không
• Điều kiện bổ sung
Không
• Điểm mở rộng
Không
Tương tự cho use case shutdown, standby, logoff, hibernate
8.4.3 Control Mouse 8.4.3.1 Mouse on, Mouse off
• Tên Use case: Mouse on
• Mô tả
Người dùng chuyển sang chế độ điều khiển chuột
• Dòng sự kiện
o Dòng sự kiện chính
130
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
(cid:131) Người dùng kích hoạt chế độ điều khiển chuột trên menu
(cid:131) Client gởi thông điệp sang Server
(cid:131) Server nhận thông điệp và ra lệnh di khởi động chế độ điều
khiển chuột
o Dòng sự kiện khác
(cid:131) Không
• Các yêu cầu đặc biệt
Không
• Điều kiện tiên quyết
Không
• Điều kiện bổ sung
Không
• Điểm mở rộng
Không
Tương tự cho use case Mouse off: tắt chức năng điều khiển chuột
8.4.3.2 Mouse speed
• Tên Use case: Mouse speed
• Mô tả
Người dùng muốn thay đổi tốc độ di chuyển của con trỏ chuột
• Dòng sự kiện
o Dòng sự kiện chính
(cid:131) Người dùng chọn chức năng Mouse speed trên menu
(cid:131) Người dùng chọn tốc độ chuột thích hợp sau đó nhấn OK
(cid:131) Client gởi thông điệp sang Server
(cid:131) Server nhận thông điệp và thiết lập lại tốc độ chuột
o Dòng sự kiện khác
(cid:131) Không
• Các yêu cầu đặc biệt
Không
• Điều kiện tiên quyết
131
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Không
• Điều kiện bổ sung
Không
• Điểm mở rộng
Không
8.4.3.3 Move left, Move right, Move up, Move down
• Tên Use case: Move left
• Mô tả
Người dùng muốn di chuyển trỏ chuột sang trái
• Dòng sự kiện
o Dòng sự kiện chính
(cid:131) Người dùng nhấn nút left trên điện thoại di động
(cid:131) Client gởi thông điệp sang Server
(cid:131) Server nhận thông điệp và ra lệnh di chuyển trỏ chuột sang
trái
o Dòng sự kiện khác
(cid:131) Không
• Các yêu cầu đặc biệt
Không
• Điều kiện tiên quyết
Chương trình đang ở chế độ điều khiển chuột
• Điều kiện bổ sung
Không
• Điểm mở rộng
Không
Tương tự cho Use case Move right, Move up, Move down
8.4.3.4 Left click, Right click
• Tên Use case: Left click
• Mô tả
Người dùng muốn nhấn chuột phải
132
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
• Dòng sự kiện
o Dòng sự kiện chính
(cid:131) Người dùng nhấn vào nút giữa của điện thoại di dộng (nút
OK)
(cid:131) Client gởi thông điệp sang Server
(cid:131) Server nhận thông điệp và ra lệnh nhấp chuột trái
o Dòng sự kiện khác
(cid:131) Không
• Các yêu cầu đặc biệt
Không
• Điều kiện tiên quyết
Chương trình đang ở chế độ điều khiển chuột
• Điều kiện bổ sung
Không
• Điểm mở rộng
Không
Tương tự cho Use case Right click
8.4.4 Control Media Player 8.4.4.1 Control Winamp
• Tên Use case: Control Winamp
• Mô tả
Người dùng chọn chế độ điều khiển Winamp
• Dòng sự kiện
o Dòng sự kiện chính
(cid:131) Người dùng chọn Winamp trên menu
(cid:131) Giao diện chuyển sang chế độ điều khiển Winamp ở cửa sổ
Browse
(cid:131) Đọc tập tin chứa nội dung thư mục đã lưu trước đó
(cid:131) Hiển thị nội dung thư mục lên cửa sổ Browse
o Dòng sự kiện khác
(cid:131) Không
133
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
• Các yêu cầu đặc biệt
Không
• Điều kiện tiên quyết
Không
• Điều kiện bổ sung
Không
• Điểm mở rộng
Không
8.4.4.2 Browse
• Tên Use case: Browse
• Mô tả
Khi chương trình đang ở chế độ điều khiển Winamp, màn hình
Playlist, người dùng muốn chuyển sang màn hình Browse
• Dòng sự kiện
o Dòng sự kiện chính
(cid:131) Người dùng nhấn right softkey
(cid:131) Chương trình đọc tập tin chứa nội dung thư mục đã lưu trước
đó
(cid:131) Hiển thị nội dung thư mục lên cửa sổ Browse
o Dòng sự kiện khác
(cid:131) Không
• Các yêu cầu đặc biệt
Không
• Điều kiện tiên quyết
Chương trình đang ở chế độ điều khiển Winamp, màn hình Playlist
• Điều kiện bổ sung
Không
• Điểm mở rộng
Không
134
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
8.4.4.3 AddToPlayList
• Tên Use case: AddToPlayList
• Mô tả
Chương trình đang ở chế độ điều khiển Winamp hay Windows
Media Player và màn hình Browse. Người dùng muốn thêm một bài
hát vào PlayList
• Dòng sự kiện
o Dòng sự kiện chính
(cid:131) Người dùng chọn tập tin cần thêm vào PlayList và chọn Add
to playlist trên menu
(cid:131) Client gởi thông điệp sang Server, đồng thời cập nhật nội
dung tập tin chứa PlayList trên client
(cid:131) Server nhận thông điệp và ra lệnh thêm bài hát vừa nhận vào
PlayList của Media Player
o Dòng sự kiện khác
(cid:131) Không
• Các yêu cầu đặc biệt
Không
• Điều kiện tiên quyết
Chương trình đang ở chế độ điều khiển Winamp hay Windows
Media Player, màn hình Browse
• Điều kiện bổ sung
Không
• Điểm mở rộng
Không
8.4.4.4 RefreshList
• Tên Use case: RefreshFileList
• Mô tả
Chương trình đang ở chế độ điều khiển Winamp hay Windows
Media Player hay PowerPoint và màn hình Browse. Người dùng
muốn cập nhật lại nội dung thư mục đã được chọn trên sever
135
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
• Dòng sự kiện
o Dòng sự kiện chính
(cid:131) Người dùng chọn Refresh list trên menu
(cid:131) Client gởi thông điệp sang Server
(cid:131) Server nhận thông điệp và ra lệnh đọc nội dung thư mục đã
được chọn trên Server
(cid:131) Server gởi nội dung thư mục vừa đọc sang Client
(cid:131) Client nhận nội dung thư mục từ Server lưu vào tập tin và
hiển thị lên màn hình Browse
o Dòng sự kiện khác
(cid:131) Không
• Các yêu cầu đặc biệt
Không
• Điều kiện tiên quyết
Chương trình đang ở chế độ điều khiển Winamp hay Windows
Media Player hay PowerPoint, màn hình Browse
• Điều kiện bổ sung
Không
• Điểm mở rộng
Không
8.4.4.5 Open
• Tên Use case: Open
• Mô tả
Người dùng mở một tập tin trong màn hình Browse hay Playlist
khi đang điều khiển Winamp, Window Media Player, PowerPoint
• Dòng sự kiện
o Dòng sự kiện chính
(cid:131) Người dùng chọn tập tin muốn mở nhấn nút OK hay chọn
Open trong menu
(cid:131) Client gởi thông điệp sang Server
136
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
(cid:131) Server nhận thông điệp và ra lệnh mở tập tin với đường dẫn
Client gởi sang
o Dòng sự kiện khác
(cid:131) Không
• Các yêu cầu đặc biệt
Không
• Điều kiện tiên quyết
Chương trình đang điều khiển Winamp, Window Media Player,
PowerPoint, màn hình Browse hay Playlist
• Điều kiện bổ sung
Không
• Điểm mở rộng
Không
8.4.4.6 PlayList
• Tên Use case: PlayList
• Mô tả
Khi chương trình đang ở chế độ điều khiển Winamp hay
Windows Media Player, màn hình Control, người dùng muốn chuyển
sang màn hình PlayList
• Dòng sự kiện
o Dòng sự kiện chính
(cid:131) Người dùng nhấn right softkey
(cid:131) Chương trình đọc tập tin chứa nội dung PlayList đã lưu trước
đó
(cid:131) Hiển thị nội dung PlayList lên cửa sổ PlayList
o Dòng sự kiện khác
(cid:131) Không
• Các yêu cầu đặc biệt
Không
• Điều kiện tiên quyết
137
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Chương trình đang ở chế độ điều khiển Winamp hay Windows
Media Player, màn hình Control
• Điều kiện bổ sung
Không
• Điểm mở rộng
Không
8.4.4.7 RefreshPlayList
• Tên Use case: RefreshPlayList
• Mô tả
Chương trình đang ở chế độ điều khiển Winamp và màn hình
PlayList. Người dùng muốn nội dung PlayList của Media Player ben
server
• Dòng sự kiện
o Dòng sự kiện chính
(cid:131) Người dùng chọn Refresh list trên menu
(cid:131) Client gởi thông điệp sang Server
(cid:131) Server nhận thông điệp và ra lệnh đọc nội dung tập tin chứa
PlayList
(cid:131) Server gởi nội dung PlayList vừa đọc sang Client
(cid:131) Client nhận nội dung PlayList từ Server lưu vào tập tin và
hiển thị lên màn hình PlayList
o Dòng sự kiện khác
(cid:131) Không
• Các yêu cầu đặc biệt
Không
• Điều kiện tiên quyết
Chương trình đang ở chế độ điều khiển Winamp, màn hình PlayList
• Điều kiện bổ sung
Không
• Điểm mở rộng
138
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Không
8.4.4.8 Remove, RemoveAllPlayList
• Tên Use case: Remove
• Mô tả
Chương trình đang ở chế độ điều khiển Winamp, màn hình
PlayList.Người dùng muốn Remove
• Dòng sự kiện
o Dòng sự kiện chính
(cid:131) Người dùng chọn Remove trên menu
(cid:131) Client cập nhật file chứa PlayList
(cid:131) Client gởi thông điệp sang Server
(cid:131) Server nhận thông điệp và ra lệnh xoá một bài trong PlayList
o Dòng sự kiện khác
(cid:131) Không
• Các yêu cầu đặt biệt
Không
• Điều kiện tiên quyết
Chương trình đang ở chế độ điều khiển Winamp, màn hình PlayList
• Điều kiện bổ sung
Không
• Điểm mở rộng
Không
Tương tự cho Use case RemoveAllPlayList
8.4.4.9 Play, Stop, Pause, FastForward, Rewind, Repeat, Shuffle, Prev,
Next, SetVolume
• Tên Use case: Play
• Mô tả
Chương trình đang ở chế độ điều khiển Winamp hay Windows
Media Player, màn hình Control.Người dùng muốn chơi bài nhạc đã
chọn
• Dòng sự kiện
139
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
o Dòng sự kiện chính
(cid:131) Người dùng duy chuyển đến nút Play bằng phím Left, Right
và nhấn OK trên điện thoại di động để chọn Play
(cid:131) Client gởi thông điệp sang Server
(cid:131) Server nhận thông điệp và ra lệnh chơi nhạc
o Dòng sự kiện khác
(cid:131) Không
• Các yêu cầu đặc biệt
Không
• Điều kiện tiên quyết
Chương trình đang ở chế độ điều khiển Winamp hay Windows
Media Player, màn hình Control
• Điều kiện bổ sung
Không
• Điểm mở rộng
Không
Tương tự cho Use case Stop, Pause, FastForward, Rewind, Prev, Next.
.Với Use case SetVolume người dùng nhấn phím Up, Down để tăng, giảm
Volume. Với Use case Repeat, Shuffle người dùng chọn Repeat, Shuffle trên
menu.
8.4.5 Control Power point 8.4.5.1 PowerPoint
Use case PowerPoint: Khởi động chế độ điều khiển PowerPoint, tương
tư như Use case Winamp (khởi động chế độ điều khiển Winamp)
8.4.5.2 Open
Use case Open: Mở một tập tin PowerPoint, chiếu slide show, tương tự
Use case Open của Control MediaPlayer (Mở một tập tin nhạc)
8.4.5.3 Next, Stop, Prev
• Tên Use case: Next
• Mô tả
140
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Chương trình đang ở chế độ điều khiển PowerPoint, người dùng
muốn chuyển sang slide kế
• Dòng sự kiện
o Dòng sự kiện chính
(cid:131) Người dùng nhất nút Left trên di động
(cid:131) Client gởi thông điệp sang Server
(cid:131) Server nhận thông điệp và ra lệnh chuyển sang slide kế
o Dòng sự kiện khác
(cid:131) Không
• Các yêu cầu đặc biệt
Không
• Điều kiện tiên quyết
Chương trình đang ở chế độ điều khiển PowerPoint và đã chọn tập
tin cần trình diễn
• Điều kiện bổ sung
Không
• Điểm mở rộng
Không
Tương tự cho Use case Stop, Prev
8.4.5.4 GotoSlide
• Tên Use case: GotoSlide
• Mô tả
Chương trình đang ở chế độ điều khiển PowerPoint, người dùng
muốn chuyển sang slide nào đó
• Dòng sự kiện
o Dòng sự kiện chính
(cid:131) Người dùng chọn chức năng Goto Slide trên menu
(cid:131) Một hộp thoại yêu cầu nhập số thứ tự của Slide hiện lên
(cid:131) Người dùng nhập số thứ tự của Slide muốn đến vào và nhấn
OK
(cid:131) Client gởi thông điệp sang Server
141
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
(cid:131) Server nhận thông điệp và ra lệnh chuyển sang slide cần đến
o Dòng sự kiện khác
(cid:131) Không
• Các yêu cầu đặc biệt
Không
• Điều kiện tiên quyết
Chương trình đang ở chế độ điều khiển PowerPoint và đã chọn tập
tin cần trình diễn
• Điều kiện bổ sung
Không
• Điểm mở rộng
Không
8.4.6 Sleep, Wakeup
• Tên Use case: SetSleep
• Mô tả
Người dùng muốn chọn thời gian tắt chương trình Media Player
• Dòng sự kiện
o Dòng sự kiện chính
(cid:131) Người dùng chọn chức năng Set Sleep trên menu
(cid:131) Một hộp thoại yêu cầu nhập thời gian tắt
(cid:131) Người dùng nhập thời gian và nhấn OK
(cid:131) Client gởi thông điệp sang Server
(cid:131) Server nhận thông điệp và thiết lập thời gian tắt chương trình
Media Player
o Dòng sự kiện khác
(cid:131) Không
• Các yêu cầu đặc biệt
Không
• Điều kiện tiên quyết
Không
• Điều kiện bổ sung
142
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Không
• Điểm mở rộng
Không Tương tự cho Use case SetWakeup. Use case RemoveSleep và Remove
WakeUp tương tụ UseSleep nhưng ta không cần phải nhập thời gian
8.4.7 Shortcut Key 8.4.7.1 Setting Shortcut Key
• Tên Use case: SettingShortcutKey
• Mô tả
Người dùng muốn cập nhật vào
• Dòng sự kiện
o Dòng sự kiện chính
(cid:131) Người dùng chọn chức SettingShortcutKey trên menu
(cid:131) Một hộp giao diện Setting hiện lên
(cid:131) Người dùng hiệu chỉnh ShortcutKey cho từng phím và nhấn
OK
(cid:131) Lưu vào tập tin
o Dòng sự kiện khác
(cid:131) Không
• Các yêu cầu đặc biệt
Không
• Điều kiện tiên quyết
Không
• Điều kiện bổ sung
Không
• Điểm mở rộng
Không
8.4.7.2 OnShortcutKey, OffShortcutKey
Người dùng mở tắtchế độ ShortcutKey trên menu: Shortcut key on,
Shortcut key off. Use case OnShortcutKey và OffShortcutKey chỉ đơn giản là
đặt một biến để báo hiệu nhận các phím từ 0(cid:198)9
143
Ch ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
8.4.7.3 SendShortcutKey
Khi chương trình ở chế độ ShortCut key on, người dùng nhấn phím từ
0(cid:198)9 để gởi Shortcut key sang Server. Use case này tương tự như Use case Left
click.
144
Ch ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
8.5 Thiết kế lớp
CPCRemoteCtrlBrowseContainer (from DesignModel)
CPCRemoteCtrlPlayerContainer (from DesignModel)
TPCRemoteCtrlSkin (from DesignModel)
MSdpAttributeNotifier (from DesignModel)
CPCRemoteCtrlPlayerView (from DesignModel)
CPCRemoteCtrlBrowseView (from DesignModel)
CPCRemoteCtrlAppUi (from DesignModel)
CAppHandler(Client) (from DesignModel)
CBTServiceSearcher (from DesignModel)
TSdpAttributeParser (from DesignModel)
CMessageServiceSearcher (from DesignModel)
CPCRemoteCtrlMainView (from DesignModel)
CTreeNode (from DesignModel)
CMessageClient (from DesignModel)
CPCRemoteCtrlContainer (from DesignModel)
8.5.1 Thiết kế lớp trên client
Hình 8-6 Sơ đồ lớp của Client
145
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
STT Tên lớp Chức năng
1 CAppHandler(Client) Đây là lớp giữ chức năng quan
trọng nhất trong chương trình: Lớp
này có nhiệm vụ giao tiếp với lớp
nhận và gởi dữ liệu, giao tiếp với
giao diện, thao tác với File, và xử
lý dữ liệu nhận được từ Server.
2 CPCRemoteCtrlAppUi Quản lý tất cả các lớp View của
chương trình, và tất cả các sự kiện
menu, phiếm nhấn (nếu View hiện
hành không xử lý thì lớp này sẽ xử
lý).
3 CMessageClient Thực hiện, quản lý kết nối, nhận và
gởi dữ liệu.
4 CPCRemoteCtrlBrowseView Hiển thị cây thư mục, playlist và
xử lý menu của chính nó
5 CPCRemoteCtrlBrowseContainer Tạo listbox, thực hiện các thao tác
vẽ trên
CPCRemoteCtrlBrowseView, và
xử lý phím nhấn.
6 CPCRemoteCtrlPlayer View Hỗ trợ giao diện điểu khiển Media
Player và xử lý menu của chính nó
7 CPCRemoteCtrlPlayer Container Thực hiện các thao tác vẽ trên
CPCRemoteCtrlPlayerView và xử
lý phím nhấn
8 TPCRemoteCtrlSkin Quản lý các thông số về vị trí, kích
thước…. của từng control trên giao
diện PlayerView.
9 CPCRemoteCtrl MainView Giao diện hỗ trợ kết nối, và xử lý
menu của chính nó
146
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
10 CPCRemoteCtrl Container Thực hiện thao tác vẽ trên
CPCRemoteCtrlMainView và xử
lý phím nhấn
11 CTreeNode Cấu trúc dữ liệu của một node trên
cây thư mục
12 CMessageServiceSearcher, Tìm thiết bị và dịch vụ Bluetooth,
CBTServiceSearcher lấy Port hỗ trợ CMessageClient
thực hiện kết nối
13 MSdpAttributeNotifier, Hỗ trợ việc lấy, phân tích thuộc
TSdpAttributeParser tính các record của dịch vụ
Bảng 8-2 Mô tả chức năng những lớp của Client
CPCRemoteCtrlServerDlg (from DesignModel)
CPowerState (from DesignModel)
CTreeNode (from DesignModel)
CAppHandler(Server) (from DesignModel)
CSendKey (from DesignModel)
CDirTree (from DesignModel)
CPowerPointHandler (from DesignModel)
CWMPHandler (from DesignModel)
CWinampHandler (from DesignModel)
CMouseHandler (from DesignModel)
8.5.2 Thiết kế lớp trên server
Hình 8-7 Sơ đồ lớp của Server
STT Tên lớp Chức năng
1 CAppHandler(Server) Đây là một lớp cha được các lớp điều khiển
(Handler class) kế thừa, hỗ trợ việc quản lý
các lớp này dễ dàng hơn, và giúp chương
trình có tính tiến hoá, mở rộng.
2 CPCRemoteCtrl Mở COM port lắng nghe chờ kết nối, quản lý
ServerDlg dữ liệu nhận được từ Server và phân phối cho
147
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
các lớp khác xử lý.
CMouseHandler Quản lý việc điều khiển chuột 3
CWMPHandler Quản lý việc điều khiển Windows Media 4
Player
CWinampHandler Quản lý việc điều khiển Winamp 5
CPowerPointHandler Quản lý việc điều khiển PowerPoint 6
CDirTree Thực hiện việc đọc, xây dựng cây thư mục 7
trên Server và gởi sang Client.
8 CTreeNode Cấu trúc dữ liệu của một node trên cây thư
mục
9 CSendKey Xử lý việc gởi một phím đến cửa sổ
10 CPowerState Thực hiện việc shutdown, Restart, stanby…
máy tính
Bảng 8-3 Mô tả chức năng những lớp của Server
8.6 Xây dựng client, server và thiết kế truyền, nhận dữ liệu
Nhắc lại về giao thức kết nối: Để thực hiện kết nối ta phải tuân theo một
qui trình gồm những công việc nhất định .Mỗi công việc thuộc 1 tầng (layer) và
có giao thức tương ứng của tầng đó (protocol) .Như việc quản lý kết nối, yêu
cầu kết nối là nhiệm vụ của tầng quản lý kết nối (Link manager layer), tìm thiết
bị là tầng cơ sở (Baseband layer) .Việc quảng bá và truy vấn dịch vụ thực hiện
ở tầng Service discovery . Series 60 SDK cung cấp sẵn các hàm Bluetooth API
cho phép ta lập trình giao tiếp với Bluetooth. Ứng dụng Bluetooth cũng tương
tự như bất kì ứng dụng Symbian nào khác.
Sau đây là lược đồ tuần tự UML thể hiện qui trình thực hiện kết nối:
148
: Client
: Server
: User
1. Khoi dong Server
1.1. Mo socket lang nghe, cho ket noi
1.1.1. Quang ba dich vu
Cho ket noi
2. Ket noi den Sever
2.1. Tim thiet bi
2.1.1. Du lieu phan hoi
3. Danh sach cac thiet bi Bluetooth tim duoc
3.1. Chon thiet bi
3.1.1. Truy van dich vu
3.1.1.1. Du lieu phan hoi
3.1.2. Yeu cau ket noi
4. Hien thi thong bao nhap mat ma ket noi
4.1. Nhap mat ma chap nhan ket noi
5. Chap nhan ket noi
6. San sang nhan du lieu
5.1. San sang nhan du lieu
7. Goi du lieu sang server
7.1. Goi du lieu sang server
Tuong tu cho viec goi du lieu sang client
7.1.1. Nhan va xu li du lieu
8. San sang nhan du lieu
9. San sang nhan du lieu
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-8 Sequence diagram Qui trình kết nối
149
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
8.6.1 Server side 8.6.1.1 Kết nối vào COM port
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.
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);
Việc này được thực hiện một cách đơn giản như sau:
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.
8.6.1.2 Quảng bá dịch vụ
Đối với các thiết bị Bluetooth trên đi động ta phải tự thực hiện việc này,
còn với Bluetooth trên máy tính thì driver của thiết bị sẽ làm thay việc đó, ta
chỉ cần kết nối vào COM port mà driver đã chỉ định sẵn, thế là có thể chấp
nhận bất kì một yêu cầu kết nối nào từ client.
8.6.1.3 Chấp nhận kết nối
Khi có Client yêu cầu kết nối thì Server sẽ tự động chấp nhận kết nối.
150
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
: CMessageClient
: CMessageServiceSearcher
: RNotifier
: FrameWork
EGettingDevice
1: ConnectL()
2: SelectDeviceByDiscoveryL(..)
3: StartNotifierAndGetResponse(..)
8.6.2 Client side 8.6.2.1 Tìm thiết bị
Hình 8-9 Sequence diagram Tìm thiết bị
Hàm Mô tả
1 – 3 Hàm ConnectL của đối tượng CMessageClient được gọi, nó thiết lập
biến trạng trái (iState) là EGettingDevice và gọi hàm
SelectDeviceByDiscoveryL của đối tượng
CMessageServiceSearcher. Và hàm này gọi hàm
StartNotifierAndGetResponse của đối tượng RNotifier để tìm và chọn
thiết bị mà nó nhận được. Sau khi người dùng chọn thiết bị xong hàm
RunL của đối tượng CMessageClient sẽ được gọi.
Bảng 8-4 Mô tả các hàm tìm thiết bị
151
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
: CMessageClient
: CMessageServiceSearcher
: CSdpAgent
: FrameWork
EGettingService
1: RunL()
2: FindServiceL(..)
3: SetRecordFilterL(..)
4: NextRecordRequest(..)
5: NextRecordRequestComplete(..)
6: AttributeRequestL(..)
7: AttributeRequestResult()
8: AttributeRequestComplete(..)
9: NextRecordRequest(..)
10: NextRecordRequestComplete(..)
11: Finished(..)
12: RequestComplete(..)
8.6.2.2 Truy vấn dịch vụ
Hình 8-10 Sequence diagram 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
152
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
NextRecordRequestCompleteL của đối tượng
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ính nà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.
Bảng 8-5 Mô tả các hàm truy vấn dịch vụ
8.6.2.3 Yêu cầu kết nối
Tham khảo mục 7.2.3 Xây dựng Bluetooth Client
153
Ch ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
: CMessageServer
: SendingSocket
: CMessageClient
: AcceptedSocket
2 : FrameWork
1 : FrameWork
EReadyToReceive Message
1: SendMessageL(..)
EReadyToReceive Message
2: Write(..)
ESendedMessage
Tuong tu cho goi du lieu sang client
3: RecvOneOrMore(..)
4: RunL()
EReadyToReceive Message
EReceivedMessage
5: HandleMessage(..)
6: RecvOneOrMore(..)
oReceive
EReadyT Message
8.6.3 Gởi và nhận dữ liệu
Hình 8-11 Sequence diagram Gởi và nhận dữ liệu
Hàm Mô tả
1 – 3 Trạng thái sẵn sàng nhận dữ liệu được thiết lập ở Client trước khi hàm
SendMessageL của đối tượng CMessageClient được gọi. Hàm này gọi
hàm write của đối tượng SendingSocket để gởi dữ liệu sang Server.
Sau khi gởi thành công thì biến trạng thái iState cũng được thiết lập là
ESendedMessage và hàm RecvOneOrMore của đối SendingSocket
được gọi đồng thời iState cũng đựơc thiết lập là
EreadyToReceiveMessage để trở về chế độ sẵn sàng nhận dữ liệu.
4 - 6 Sau khi Client gởi dữ liệu thì hàm sẽ được gọi tự động, sau đó hàm
HandleMessage sẽ được gọi để xử lý dữ liệu. Sau khi xử lý xong, hàm
RecvOneOrMore của đối tượng AcceptedSocket được gọi và biến trạng
thái được thiết lập là EreadyToReceiveMessage để trở về trạng thái sẵn
sàng nhận dữ liệu.
Bảng 8-6 Mô tả các hàm gởi và nhận dữ liệu
154
ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa Ch
8.7 Lưu đồ hoạt động
: CMessageClient
: User
: CPCRemoteCtrlMainView
: CPCRemoteCtrlServerDlg
: CAppHandler(Client)
1. SelectFolderToBrowse
2. ChooseComPortToListen
3. SelectPathOfApp (Winamp, WMediaPlayer)
Mo cong COM de cho ket noi, nhan va goi du lieu
4. Listen
4.1. Connect2CommPort
Tao Thread luon nhan du lieu tu COM port
4.1.1. AfxBeginThread
4.1.1.1. HandleMessage
Tat ca cac du lieu nhan duoc tu client duoc xu ly o day
5. HandleCommandL
5.1. ConnectToServerL
Neu ket noi thanh cong
5.1.1. ConnectL
6. Show Name of Bluetooth devices
6.1. Select a device
6.1.1. FindService
Neu ket noi thanh cong
6.1.1.1. ConnectToServerL
7. ChangeMenuBar
7.1. ChangeMenuBar
8.7.1 Connect
Hình 8-12 Sequence diagram Connect
155
4.1. Connect2CommPort 4.1.1. AfxBeginThread 4.1.1.1. HandleMessage
1. SelectFolderToBrowse 2. ChooseComPortToListen 3. SelectPathOfApp (Winamp, WMediaPlayer) 4. Listen
: CPCRemoteCtrlServerDlg
: User
6.1. Select a device
6.1.1. FindService 6.1.1.1. ConnectToServerL
6. Show Name of Bluetooth devices
: CMessageClient
5. HandleCommandL
7. ChangeMenuBar
5.1.1. ConnectL
5.1. ConnectToServerL
: CPCRemoteCtrlMainView
: CAppHandler(Client)
7.1. ChangeMenuBar
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-13 Collaboration diagram Connect
: User
: CMessageClient
: CPCRemoteCtrlAppUi
: CPowerState
: CAppHandler(Client)
: CPCRemoteCtrlServerDlg
1. HandleCommandL
1.1. SendMessageL
Server nhan message tu Client
1.1.1. SendMessageL
2. HandleMessage
2.1. Restart
Vao menu chon Restart de khoi dong lai server, tuong tu cho shutdow, standby, logoff, hibernate.
8.7.2 Turn off Shutdown, restart, standby, logoff, hibernate
Hình 8-14 Sequence diagram Use case Restart
156
1. HandleCommandL
: CPCRemoteCtrlAppUi
: User
1.1. SendMessageL
: CAppHandler(Client)
1.1.1. SendMessageL
: CMessageClient
2. HandleMessage
2.1. Restart
: CPowerState
: CPCRemoteCtrlServerDlg
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-15 Collaboration diagram Restart
: User
: CMessageClient
: CMouseHandler
: CPCRemoteCtrlAppUi
: CAppHandler(Client)
: CPCRemoteCtrlServerDlg
1. HandleCommandL
1.1. SetCurrProgram
1.2. SendMessageL
Server nhan message tu Client
1.2.1. SendMessageL
2. HandleMessage
Vao menu chon MouseOn de kich hoat che do dieu khien chuot, lam tuong tu cho Mouse Off de tat che do dieu khien chuot
2.1. StartApplication
1.3. SetTitlePane
8.7.3 Control Mouse 8.7.3.1 Mouse on
Hình 8-16 Sequence diagram Mouse on
157
1.3. SetTitlePane
1. HandleCommandL
: CPCRemoteCtrlAppUi
: User
1.1. SetCurrProgram 1.2. SendMessageL
: CAppHandler(Client)
1.2.1. SendMessageL
: CMessageClient
2. HandleMessage
2.1. StartApplication
: CMouseHandler
: CPCRemoteCtrlServerDlg
Ch ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-17 Collaboration diagram Mouse on
158
ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa Ch
: User
: CMouseHandler
: CPCRemoteCtrlAppUi : CMouseSpeedSettingView
: CMessageClient
: CAppHandler(Client)
: CPCRemoteCtrlServerDlg
1. HandleCommandL
1.1. ActivateLocalViewL
1.1.1. DoActiveL
User chon MouseSpeed trong menu de thiet lap toc do chuot
2. HandleCommandL
2.1. ActivatePrevViewL
2.2. SetMouseSpeed
Sau thiet chon toc do chuot nhat OK
2.2.1. SendMessageL
Server nhan message tu Client
2.2.1.1. SendMessageL
3. HandleMessage
3.1. HandleMessage
3.1.1. SetMouseSpeed
8.7.3.2 Mouse speed
Hình 8-18 Sequence diagram Mouse speed
159
1.1. ActivateLocalViewL
1. HandleCommandL
: CPCRemoteCtrlAppUi
: User
2.2.1. SendMessageL
: CAppHandler(Client)
2.1. ActivatePrevViewL 2.2. SetMouseSpeed
2. HandleCommandL
2.2.1.1. SendMessageL
1.1.1. DoActiveL
: CMessageClient
3. HandleMessage
: CPCRemoteCtrlServerDlg
: CMouseSpeedSettingView
3.1.1. SetMouseSpeed
3.1. HandleMessage
: CMouseHandler
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-19 Collaboration diagram SetMouseSpeed
160
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
: CMouseHandler
: CMessageClient
: User
: CPCRemoteCtrlAppUi
: CAppHandler(Client)
: CPCRemoteCtrlServerDlg
1. HandleKeyEventL
1.1. HandlMouseMessage
1.1.1. SendMessageL
Server nhan message tu Client
2. HandleMessage
Sau khi chon Mouse On ta nhan phim trai de cho chuot di chuyen sang trai, tuong tu cho phim phai, len, xuong
2.1. HandleMessage
2.1.1. MoveLeft
8.7.3.3 Move left
1. HandleKeyEventL
: CPCRemoteCtrlAppUi
: User
1.1. HandlMouseMessage
: CAppHandler(Client)
: CMessageClient
1.1.1. SendMessageL
2.1.1. MoveLeft
2. HandleMessage
2.1. HandleMessage
: CMouseHandler
: CPCRemoteCtrlServerDlg
Hình 8-20 Sequence diagram Move left
Hình 8-21 Collaboration diagram Move left
161
Ch ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
: User
: CMessageClient
: CMouseHandler
: CPCRemoteCtrlAppUi
: CAppHandler(Client)
: CPCRemoteCtrlServerDlg
1. HandleKeyEventL
1.1. HandlMouseMessage
1.1.1. SendMessageL
Server nhan message tu Client
2. HandleMessage
Sau khi chon Mouse On ta nhan phim giua de LeftClick cho chuot, muon doubleClick ta nhan phim giua 2 lan (nhanh), tuong tu phim '#' la RightClick
2.1. HandleMessage
2.1.1. MouseLeftClick
8.7.3.4 Left click
1. HandleKeyEventL
: CPCRemoteCtrlAppUi
: User
1.1. HandlMouseMessage
: CAppHandler(Client)
1.1.1. SendMessageL
: CPCRemoteCtrlServerDlg
: CMessageClient
2. HandleMessage
2.1.1. MouseLeftClick
2.1. HandleMessage
: CMouseHandler
Hình 8-22 Sequence diagram Left click
Hình 8-23 Collaboration diagram Left click
162
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
8.7.4 Control Media Player 8.7.4.1 Control Winamp
163
: CMouseHandler : CWinampHandler
: CMessageClient
: User : CPCRemoteCtrlAppUi
: CPCRemoteCtrlServ erDlg
: CAppHandler(Client)
1. HandleCommandL
1.1. SetCurrentProgram
User chon Winamp tren meu
1.2. SendMessageL
1.2.1. SendMessageL
Serv er nhan Message tu client
1.3. SetActiv eBrowseView
1.4. SetTitlePane
2. HandlMessage
1.5. Activ ateLocalViewL
: CPCRemoteCtrlBrowseView
2.1. delete m_pCurrHandler
1.5.1. DoActiv ateL
: CFile
2.2. StopApplication
1.5.1.1. ReadFileList
2.3. m_pCurrHandler = new CWinampHandler
1.5.1.1.1. Open
1.5.1.1.2. Read
: CPCRemoteCtrlBrowseCo...
2.4. StartApplication
1.5.1.1.3. GenerateTreeDirL
1.5.1.1.4. SortDirTree
1.5.1.1.5. Close
1.5.1.1.6. Ref reshFileListL
1.5.1.1.6.1. AddListItemL
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-24 Sequence diagram ControlWinamp
164
1.5.1.1.6.1. AddListItemL
1.5.1.1.3. GenerateTreeDirL 1.5.1.1.4. SortDirTree
1.4. SetTitlePane 1.5. ActivateLocalViewL
1.5.1.1.6. RefreshFileListL
1. HandleCommandL
1.1. SetCurrentProgram 1.2. SendMessageL 1.3. SetActiveBrowseView
: CPCRemoteCtrlBrowseContainer
: CAppHandler(Client)
: CPCRemoteCtrlAppUi
: User
1.5.1.1.1. Open
1.5.1.1.2. Read
1.2.1. SendMessageL
1.5.1.1.5. Close
: CMessageClient
: CFile
2. HandlMessage
1.5.1.1. ReadFileList
2.1. delete m_pCurrHandler
1.5.1. DoActivateL
2.3. m_pCurrHandler = new CWinampHandler
2.4. StartApplication
: CWinampHandler
: CPCRemoteCtrlServerDlg
2.2. StopApplication
: CMouseHandler
: CPCRemoteCtrlBrowseView
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-25 Collaboration diagram ControlWinamp
165
Ch ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
: User
: CPCRemoteCtrlBrowseView
: CPCRemoteCtrlAppUi
:
: CFile
: CAppHandler(Client)
CPCRemoteCtrlBrowseCo...
1. HandleCommandL
1.1. SetActiveBrowseView
1.2. ActivateLocalViewL
1.2.1. DoActivateL
User chon Browse bang cach nhan right softkey khi dang o muc Playlist
1.2.1.1. ReadFileList
1.2.1.1.1. Open
1.2.1.1.2. Read
1.2.1.1.3. GenerateTreeDirL
1.2.1.1.4. Close
1.2.1.1.5. SortDirTree
1.2.1.1.6. RefreshFileListL
1.2.1.1.6.1. AddListItemL
8.7.4.2 Browse
Hình 8-26 Sequence diagram Browse
166
1.2. ActivateLocalViewL
1. HandleCommandL
: CPCRemoteCtrlAppUi
: User
1.1. SetActiveBrowse...
1.2.1. DoActivateL
1.2.1.1.3. GenerateTreeDirL
1.2.1.1.5. SortDirTree
1.2.1.1.1. Open 1.2.1.1.2. Read
1.2.1.1.4. Close
1.2.1.1. ReadFileList
: CPCRemoteCtrlBrowseView
: CAppHandler(Client)
: CFile
1.2.1.1.6.1. AddListItemL
1.2.1.1.6. RefreshFileListL
: CPCRemoteCtrlBrowseContainer
Ch ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-27 Collaboration diagram Browse
167
Ch ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
: CPCRemoteCtrlBrowseView
: CPCRemoteCtrlServerDlg : CWinampHandler
: CMessageClient
: User
: CFile
: CAppHandler(Cl...
: CPCRemoteCtrlBrowseC...
1. HandleCommandL
1.1. AddSongToPlaylist
1.1.1. AddSongToPlaylist
1.1.1.1. SendMessageL
1.1.1.2. Open
1.1.1.3. Write
1.1.1.4. Close
2. HandleMessage
2.1. HandleMessage
2.1.1. AddToPlaylist
8.7.4.3 AddToPlayList
Hình 8-28 Sequence diagram AddToPlayList
168
1. HandleCommandL
: CPCRemoteCtrlBrowseView
: User
1.1. AddSongToPlaylist
: CPCRemoteCtrlBrowseContainer
1.1.1. AddSongToPlaylist
: CAppHandler(Client)
: CFile
1.1.1.1. SendMessageL
1.1.1.2. Open 1.1.1.3. Write 1.1.1.4. Close
: CMessageClient
2. HandleMessage
: CPCRemoteCtrlServerDlg
2.1.1. AddToPlaylist
2.1. HandleMessage
: CWinampHandler
Ch ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-29 Collaboration diagram AddToPlayList
169
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
: Us er
: CMes s ageClient
: CPCRem oteCtrlServerDlg
: CDirTree
:
: CPCRem oteCtrlBrows eView
: CWinam pHandler
: CAppHandler(Client)
CPCRem oteCtrlBrows eCo...
1. HandleCom m andL
1.1. Refres hLis tL
Server nhan duoc m es s age...
1.1.1. SendMes s ageL
2. HandleMes s age
2.1. HandleMes s age
Us er dang o m uc brows e chon Refres h lis t tren m enu
2.1.1. SendLis tToFone
2.1.1.1. GenerateTreeDir
2.1.1.2. WriteNodeToBuffer
Client nhan du lieu Refres h lis t tu Server
2.1.1.3. WriteFile
3. RunL
3.1. HandleReceiveMes s age
3.1.1. Refres hLis tRes pons eL
: CFile
3.1.1.1. Open
3.1.1.2. Write
3.1.1.3. GenerateTreeDirL
3.1.1.4. Clos e
3.1.1.5. SortDirTree
3.1.1.6. Refres hFileLis tL
3.1.1.6.1. AddLis tItem L
8.7.4.4 RefreshFileList
Hình 8-30 Sequence diagram RefreshFileList
170
1. HandleCommandL
: CPCRemoteCtrlBrowseView
1.1. RefreshListL
: User
3.1.1. RefreshListResponseL 3.1.1.3. GenerateTreeDirL
2.1.1.1. GenerateTreeDir 2.1.1.2. WriteNodeToBuffer 2.1.1.3. WriteFile
3.1.1.5. SortDirTree
1.1.1. SendMessageL
: CDirTree
: CMessageClient
: CAppHandler(Client)
3. RunL
: CFile
3.1. HandleReceiveMessage
3.1.1.1. Open 3.1.1.2. Write 3.1.1.4. Close
3.1.1.6. RefreshFileListL
2. HandleMessage
2.1.1. SendListToFone
3.1.1.6.1. AddListItemL
2.1. HandleMessage
: CPCRemoteCtrlServerDlg
: CWinampHandler
: CPCRemoteCtrlBrowseContainer
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-31 Collaboration diagram RefreshFileList
171
Ch ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
: User
: CMessageClient : CPCRemoteCtrlServerDlg : CWinampHandler
: CAppHandler(Client)
: CPCRemoteCtrlBrowseCo...
1. OfferKeyEventL
1.1. HandleListBoxEventL
1.1.1. FileSelectedL
User nhan vao nut giua de mo mot file nay
1.1.1.1. OpenFile
Server nhan duoc message tu client
1.1.1.1.1. SendMessageL
2. HandleMessage
2.1. HandleMessage
2.1.1. ReadFilePath
2.1.2. Open
8.7.4.5 Open
Hình 8-32 Sequence diagram Open
172
1.1. HandleListBoxEventL 1.1.1. FileSelectedL
1. OfferKeyEventL
: CPCRemoteCtrlBrowseContainer
: User
1.1.1.1. OpenFile
: CAppHandler(Client)
1.1.1.1.1. SendMessageL
: CMessageClient
2. HandleMessage
: CPCRemoteCtrlServerDlg
2.1.1. ReadFilePath 2.1.2. Open 2.1. HandleMessage
: CWinampHandler
Ch ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-33 Collaboration diagram Open
173
ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa Ch
: User
: CPCRemoteCtrlBrowseView
: CPCRemoteCtrlAppUi
: CFile
: CAppHandler(Client)
: CPCRemoteCtrlBrowseCo...
1. HandleCommandL
1.1. SetActiveBrowseView
1.2. ActivateLocalViewL
1.2.1. DoActivateL
User chon Playlist bang cach nhan right softkey khi dang o muc Control
1.2.1.1. ReadPlayList
1.2.1.1.1. Open
1.2.1.1.2. Read
1.2.1.1.3. GeneratePlayListL
1.2.1.1.4. Close
1.2.1.1.5. RefreshFileListL
1.2.1.1.5.1. AddListItemL
8.7.4.6 PlayList
Hình 8-34 Sequence diagram PlayList
174
1.2. ActivateLocalViewL
1. HandleCommandL
: CPCRemoteCtrlAppUi
: User
1.1. SetActiveBrowseView
1.2.1. DoActivateL
1.2.1.1.3. GeneratePlayListL
: CAppHandler(Client)
: CPCRemoteCtrlBrowseView
1.2.1.1. ReadPlayList
: CFile
1.2.1.1.1. Open 1.2.1.1.2. Read 1.2.1.1.4. Close
1.2.1.1.5. RefreshFileListL
1.2.1.1.5.1. AddListItemL
: CPCRemoteCtrlBrowseContainer
Ch ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-35 Collaboration diagram PlayList
175
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
8.7.4.7 RefreshPlayList
Tương tự RefreshList 8.7.4.8 Remove, RemoveAllPlaylist
Tương tự AddToPlayList
176
Ch ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
: User
: CMessageClient : CPCRemoteCtrlServerDlg : CWinampHandler
: CPCRemoteCtrlPlayerCon...
: CAppHandler(Client)
1. OfferKeyEventL
1.1. HandleButtonPressed
Server nhan duoc message tu client
1.1.1. HandleWinampMessage
1.1.1.1. SendMessageL
2. HandleMessage
2.1. HandleMessage
User chon nut Play, nhan nut giua de play file tren UI Control
2.1.1. Play
8.7.4.9 Play
Hình 8-36 Sequence diagram Play
177
1.1. HandleButtonPressed
1. OfferKeyEventL
: CPCRemoteCtrlPlayerContainer
: User
1.1.1. HandleWinampMessage
: CAppHandler(Client)
1.1.1.1. SendMessageL
: CMessageClient
2. HandleMessage
2.1. HandleMessage
: CPCRemoteCtrlServerDlg
2.1.1. Play
: CWinampHandler
Ch ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-37 Collaboration diagram Play
178
Ch ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
: User
: CMessageClient
: CAppHandler(Client)
: CPowerPointHandler
: CPCRemoteCtrlBrowseCo...
: CPCRemoteCtrlServerDlg
1. OfferKeyEventL
1.1. HandlePowerPointMessage
1.1.1. SendMessageL
Server nhan message tu Client
2. HandleMessage
2.1. HandleMessage
Sau khi chon PowerPoint ta nhan phim phai de de den slide ke tiep, nhan phim trai de tro lai slide truoc do
2.1.1. Next
8.7.5 Control Powerpoint 8.7.5.1 Next
Hình 8-38 Sequence diagram Next
179
1. OfferKeyEventL
: CPCRemoteCtrlBrowseContainer
: User
1.1. HandlePowerPointMessage
: CAppHandler(Client)
1.1.1. SendMessageL
: CMessageClient
2. HandleMessage
: CPCRemoteCtrlServerDlg
2.1.1. Next 2.1. HandleMessage
: CPowerPointHandler
Ch ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-39 Collaboration diagram Next
180
ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa Ch
: CMessageClient
: User
: CPCRemoteCtrlBrowseView : CAknNumberQueryDialog
: CAppHandler(Client)
: CPowerPointHandler
: CPCRemoteCtrlServerDlg
1. HandleCommandL
1.1. ExecuteLD
User chon chuc nang goto slide tren menu
1.1.1. Request Input slide number
Server nhan message tu Client
1.1.1.1. Input finish
1.2. SendMessageL
1.2.1. SendMessageL
Sau khi User nhap slide muon den va nhan OK
2. HandleMessage
2.1. HandleMessage
2.1.1. ReadIntNumber
2.1.2. GotoSlide
8.7.5.2 Goto slide
Hình 8-40 Sequence diagram GotoSlide
181
1. HandleCommandL
: CPCRemoteCtrlBrowseView
: User
1.2. SendMessageL
1.1.1. Request Input slide number
1.1.1.1. Input finish
: CAppHandler(Client)
1.1. ExecuteLD
1.2.1. SendMessageL
: CMessageClient
: CAknNumberQueryDialog
2. HandleMessage
: CPCRemoteCtrlServerDlg
2.1. HandleMessage 2.1.1. ReadIntNumber
2.1.2. GotoSlide
: CPowerPointHandler
Ch ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-41 Collaboration diagram GotoSlide
182
ương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa Ch
8.7.6 Sleep, Wakeup
Tương tự Gotoslide
8.7.7 Shortcutkey
: User : CPCRemoteCtrlAppUi
: CFile
: CShortcutKeySettingView
1. HandleCommandL
: CAppHandler(Client)
1.1. ActivateLocalViewL
1.1.1. DoActiveL
2. HandleCommandL
2.1. SendShortCutKeyL
2.1.1. Open
2.1.2. Write
User chon setting ShortcutKey tren memu
2.1.3. Close
SettingShortcutKey
Hình 8-42 Sequence diagram ShortcutKey
183
1.1. ActivateLocalViewL
1. HandleCommandL
: CPCRemoteCtrlAppUi
: User
2. HandleCommandL
1.1.1. DoActiveL
: CShortcutKeySettingView
2.1. SendShortCutKeyL
: CAppHandler(Client)
: CFile
2.1.1. Open 2.1.2. Write 2.1.3. Close
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-43 Collaboration diagram SettingShortcutKey
184
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
8.8 Thiết kế màn hình
8.8.1 Thiết kế màn hình trên client
8.8.1.1 Màn hình chính
Hình 8-44 Màn hình chính trên client
Màn hình chính gồm softkey bên trái là Menu và softkey bên phải là
Exit. Khi mới chạy chương trình lần đầu, Menu sẽ có 2 chức năng:
Menu Menu Cha Chức năng
Connect to PC Menu Thiết lập kết nối với máy tính
Exit Menu Thoát chương trình
Bảng 8-7: Menu màn hình chính
185
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Sau khi thực hiện kết nối thành công, lúc này Menu sẽ thay đổi và có
các thành phần sau:
Menu Menu Cha Chức năng
Programs Menu Gồm một nhóm chức năng cho
phép chọn chương trình cần điều
khiển
Mouse Menu Gồm một nhóm chức năng cho
phép thực hiện các thao tác với
chuột
Turn off Menu Gồm một nhóm chức năng cho
phép thực hiện các thao tác liên
quan đến hệ thống Windows
Timer Menu Gồm một nhóm chức năng liên
quan đến việc hẹn giờ bật và tắt
chương trình nghe nhạc
Exit Menu Thoát chương trình
Bảng 8-8 Menu màn hình chính sau khi connect
Các menu con lần lượt được mô tả như sau: Menu Programs:
Menu Menu Cha Chức năng
PowerPoint Programs Cho phép điều khiển chương trình
PowerPoint
Windows Media Player Programs Cho phép điều khiển chương trình
Windows Media Player
Winamp Programs Cho phép điều khiển chương trình
Winamp
Bảng 8-9 Menu Programs
Menu Mouse:
186
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Menu Cha Chức năng Menu
Mouse Kích hoạt điều khiển mouse Mouse on
Mouse Ngưng điều khiển mouse Mouse off
Mouse Thiết lập tốc độ mouse Mouse speed
Bảng 8-10 Menu Mouse
Menu Turn off:
Menu Cha Chức năng Menu
Turn off Shutdown máy tính Shutdown
Turn off Restart máy tính Restart
Turn off Logout máy tính Logout
Turn off Standby máy tính Standby
Turn off Hibernate máy tính Hibernate
Bảng 8-11 Menu Turn off
Menu Timer:
Menu Menu Cha Chức năng
Set sleep Timer Hẹn giờ tắt máy
Set wake up Timer Hẹn giờ bật chương trình nghe
nhạc
Bảng 8-12 Menu Timer
Ngoài ra khi ta chọn điều khiển các chương trình như Powerpoint,
Winamp, Windows Media Player, màn hình điều khiển của tất cả chương trình
này đều có menu như sau:
Menu Menu Cha Chức năng
File Menu Gồm một nhóm chức năng có nội
dung thay đổi tùy thuộc vào
chương trình đang điều khiển
Switch Menu Gồm nhiều menu con cho phép
chuyển sang điều khiển chương
187
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
trình khác
Exit Menu Thoát
Bảng 8-13 Menu chính của các chương trình Powerpoint, Winamp, WMP
Menu con Switch có dạng sau:
Menu Menu Cha Chức năng
Programs Switch Xem menu Programs bên trên
Mouse Switch Xem menu Mouse bên trên
Turn off Switch Xem menu Turn off bên trên
Timer Switch Xem menu Timer bên trên
Bảng 8-14 Menu Switch
8.8.1.2 Màn hình PowerPoint:
Khi chọn chương trình cần điều khiển là PowerPoint, màn hình điều
khiển PowerPoint sẽ hiện lên như sau:
188
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Hình 8-45 Màn hình Powerpoint
Màn hình gồm có một list box chứa danh sách các file (được sắp thứ tự)
mà ta có thể thao tác trực tiếp từ điện thoại.
Menu của màn hình PowerPoint sẽ gồm các thành phần sau:
Menu Cha Chức năng Menu
Open File Open file đang được chọn trên list
box
Go to slide File Chuyển đến slide do người dùng
nhập
Refresh list File Cập nhật lại danh sách file trên list
box từ thư mục do người dùng chỉ
định trên server
Stop File Ngưng trình diễn powerpoint
Bảng 8-15 Menu màn hình Powerpoint
189
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
8.8.1.3 Hệ thống màn hình điều khiển Winamp và Windows Media Player:
Hai chương trình này có hệ thống màn hình hoàn toàn giống nhau cả về
nội dung lẫn hình thức. Do đó ở đây chúng em chỉ xin giới thiệu hệ thống màn
hình khi điều khiển chương trình Winamp. Hệ thống màn hình khi điều khiển
chương trình này gồm có 3 màn hình riêng biệt: Browse, Control, Playlist. Ba
màn hình này có thể chuyển qua, chuyển lại theo thứ tự xoay vòng như sau:
Browse Control
Playlist
Hình 8-46 Hệ thống màn hình Player
190
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Màn hình Browse:
Hình 8-47 Màn hình Browse
Màn hình Browse khi này tương tự như màn hình PowerPoint, nó có
một list box dùng để hiển thị danh sách các file mà ta có thể thao tác trực tiếp
từ điện thoại. Màn hình Browse gồm có softkey bên trái tương ứng với việc
chọn menu và softkey bên phải tương ứng với việc chuyển màn hình hiện thời
sang màn hình Control.
Menu của màn hình Browse:
Menu Menu Cha Chức năng
Play File Play file đang được chọn trên list
box
Add to playlist File Đưa file đang được chọn trên list
box vào playlist
191
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Refresh list File Cập nhật lại danh sách file trên list
box từ thư mục do người dùng chỉ
định trên server
Bảng 8-16 Menu màn hình Browse
Màn hình Control:
Hình 8-48 Màn hình Control
Màn hình Control gồm có một bitmap với các button cho phép người
dùng thực hiện các thao tác như Play, Stop, Pause, v.v… tương tự như thao tác
với Winamp hay Windows Media Player trên máy tính. Màn hình Control có
softkey bên phải dùng để chuyển sang màn hình Playlist.
192
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Menu của màn hình Control:
Menu Menu Cha Chức năng
Full screen File Thực hiện chức năng full screen
đối với Winamp hay Windows
Media Player.
Shuffle File On / Off shuffle trên Winamp hay
Windows Media Player
Repeat File On / Off repeat trên Winamp hay
Windows Media Player
Bảng 8-17 Menu màn hình Control
Màn hình Playlist:
Hình 8-49 Màn hình Playlist
193
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Màn hình Playlist khi này tương tự như màn hình Browse, nó chỉ khác
về mặt ý nghĩa và có softkey bên phải tương ứng với việc chuyển màn hình
hiện thời sang màn hình Browse. Màn hình Playlist dùng để hiển thị danh sách
các file có trong playlist và cho phép người dùng thao tác với playlist.
Menu của màn hình Playlist:
Menu Cha Chức năng Menu
Play File Play file đang được chọn trên list
box
Refresh list File Cập nhật lại playlist
Remove all File Xóa tất cả các bài hát ra khỏi
playlist
Bảng 8-18 Menu màn hình Playlist
194
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
8.8.1.4 Màn hình thiết lập tốc độ chuột:
Hình 8-50 Màn hình thiết lập tốc độ chuột
Màn hình này gồm có một slider control cho phép tăng hay giảm tốc độ
chuột và hai softkey tương ứng là Ok và Cancel.
195
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
8.8.2 Thiết kế màn hình trên server
Trên server chỉ có duy nhất một màn hình thể hiện tất cả chức năng:
Hình 8-51 Màn hình Server
196
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Mô tả màn hình theo thứ tự từ trên xuống:
Giá trị định Tên xử lý Ý nghĩa ST Tên Loại sẵn T
01 Banner Picture Pcremote.bmp Banner của
box màn hình
02 Files to Static “Files to Nhãn “Files to
browse text browse” browse”
03 Nhập Edit NULL Nhập thư mục
thư mục box người dùng
muốn browse
trên điện thoại
04 Select Button NULL OnBtnSelect Chọn thư mục
người dùng
muốn browse
05 Add Button NULL OnBtnAdd Thêm thư mục
người dùng
muốn browse
trên điện thoại
06 Clear Button NULL OnBtnClear Xóa edit box
“Nhập thư
mục”
07 COM Static “COM port” Nhãn “COM
port text port”
08 Nhập Combo NULL Chọn cổng
cổng Box COM mà
COM người dùng
muốn kết nối
197
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
09 Listen Button NULL OnBtnListen Thực hiện kết
nối vào COM
port và lắng
nghe tín hiệu
10 Control Group “Control” Nhóm các điều
box khiển liên
quan đến việc
chọn đường
dẫn cho các
chương trình
như winamp
và windows
media player
11 App Static “Application” Nhãn
“Application” text
12 Chọn Combo “Winamp” OnSelchangeCb Chọn ứng
Application dụng muốn chương Box
thiết lập trình
đường dẫn
Nhãn “Path to 13 Path to Static “Path to
application” app application” text
Nhập đường 14 Nhập NULL Edit
dẫn cho ứng đường box
dụng tương dẫn
ứng trên
Combo Box
15 Browse Button NULL OnBtnBrowse Chọn đường
dẫn cho ứng
dụng tương
ứng trên
198
Chương 8 :Phân tích và thiết kế ứng dụng điều khiển máy tính từ xa
Combo Box
16 Minimi Check Uncheck Nếu check box
zed box này được
chọn, chương
trình sẽ nằm ở
system tray
sau khi chạy
17 Auto Check Uncheck Nếu check box
run box này được
chọn, chương
trình sẽ tự
chạy mỗi khi
windows khởi
động
18 Less Button “Less” OnBtnMore Đóng hoặc sổ
ra edit box bên
dưới
19 Help Button NULL OnBtnHelp Hướng dẫn sử
dụng chương
trình
20 Taskbar Button NULL OnBtnTaskbar Đưa chương
trình vào
system tray
21 Exit Button NULL OnBtnExit Thoát chương
trình
22 Log NULL Edit Ghi nhận lại
box các sự kiện
của chương
trình
Bảng 8-19 Mô tả màn hình Server
199
Chương 9 :Cài đặt và thử nghiệm
Chương 9 : Cài đặt và thử nghiệm
9.1 Cài đặt
Ứng dụng PC Remote Control được phát triển sử dụng các công cụ và
môi trường sau:
• Công cụ phân tích và thiết kế: Rational Rose 2003
• Môi trường cài đặt ứng dụng: Windows XP Professional
• Môi trường lập trình: Microsoft Visual Studio 6.0
• Môi trường thử nghiệm và cài đặt:
o Server: Windows XP Professional
o Client: Máy ảo của Series 60 SDK 1.2, điện thoại di động
Nokia 3650.
• Phần cứng Bluetooth:
o Server: Bluetooth USB, XTNDConnect Blue Manager
software
o Client: Bluetooth USB, DTL_X driver
9.2 Thử nghiệm
PC Remote Control thử nghiệm trên máy ảo giả lập cho ra các kết quả
thử nghiệm sau đây:
STT Tính năng thử nghiệm Đánh giá
Kết nối Tốc độ kết nối nhanh, ổn định 1
Nhận và gửi dữ liệu Tốc độ truyền nhận dữ liệu tương đối 2
nhanh.
Tiêu thụ bộ nhớ Chương trình khi khởi chạy chiếm khoảng 3
110 KB bộ nhớ. Nếu trong quá trình chạy
có nạp và hiển danh sách các thư mục và
tập tin trên đĩa cứng thì mức tiêu thụ bộ
nhớ sẽ tăng lên.
4 Tốc độ hiển thị hình ảnh Hiển thị hình ảnh của background, player
200
Chương 9 :Cài đặt và thử nghiệm
nhanh, gần như tức thời
5 Điều khiển chuột Điều khiển tốt các thao tác với chuột như
dịch chuyển, click trái, click phải, double
click.
6 Điều khiển Powerpoint Điều khiển tốt các thao tác với
Powerpoint như qua slide kế tiếp, quay về
slide trước, nhảy đến slide cụ thể, ngưng
trình diễn slide
Điều khiển tốt các chức năng trên Điều khiển Winamp, 7 Winamp, Windows Media Player như Windows Media Player Play, Stop, Pause, Next, Previous, v.v…
PC Remote Control thử nghiệm trên Nokia 3650 cho ra các kết quả thử
nghiệm sau đây:
STT Tính năng thử nghiệm Đánh giá
1 Kết nối Tốc độ kết nối nhanh, ổn định hơn so với
trên máy ảo
2 Nhận và gửi dữ liệu Tốc độ truyền nhận dữ liệu nhanh.
3 Tiêu thụ bộ nhớ Chương trình khi khởi chạy chiếm khoảng
110 KB bộ nhớ. Nếu trong quá trình chạy
có nạp và hiển danh sách các thư mục và
tập tin trên đĩa cứng thì mức tiêu thụ bộ
nhớ sẽ tăng lên.
4 Tốc độ hiển thị hình ảnh Hiển thị hình ảnh của background, player
trung bình khoảng 2 giây.
5 Điều khiển chuột Điều khiển tốt các thao tác với chuột như
dịch chuyển, click trái, click phải, double
click.
6 Điều khiển Powerpoint Điều khiển tốt các thao tác với
Powerpoint như qua slide kế tiếp, quay về
201
Chương 9 :Cài đặt và thử nghiệm
slide trước, nhảy đến slide cụ thể, ngưng
trình diễn slide
Điều khiển tốt các chức năng trên Điều khiển Winamp, 7 Winamp, Windows Media Player như Windows Media Player Play, Stop, Pause, Next, Previous, v.v…
Chương trình được thử nghiệm tốt trên Nokia 3650, do đó có thể áp
dụng thực tế và có thể sử dụng trên các điện thoại Series 60 khác như Nokia
7650, 3660, N-Gage, v.v…
202
Chương 10 :Tổng kết
Chương 10 : Tổng kết
10.1 Kết luận
10.1.1 Kết quả đạt được
Sau khi thực hiện đề tài, chúng em đã thu được một số kết quả sau:
• Tìm hiểu được công nghệ Bluetooth, một trong những công nghệ
không dây phát triển mạnh nhất hiện nay. Chúng em đã tìm hiểu
được cách thức hoạt động, đặc điểm kĩ thuật và khả năng của
Bluetooth. Trong quá trình tìm hiểu về Bluetooth, chúng em cũng đã
tìm hiểu được các kiến thức về mạng không dây, vốn là một trong
những xu hướng phát triển gần đây.
• Tìm hiểu được hệ điều hành Symbian và lập trình trên hệ điều hành
Symbian. Bằng cách xây dựng một ứng dụng trên hệ điều hành
Symbian, chúng em đã tiếp thu được nhiều kiến thức về Symbian,
một hệ điều hành phổ biến trên các thiết bị di động thông minh.
• Tìm hiểu được cách lập trình giao tiếp với Bluetooth trên Symbian.
Từ lý thuyết (tìm hiểu về công nghệ Bluetooth), chúng em đã tiếp
cận đến thực tế bằng cách tìm hiểu cách lập trình để trao đổi dữ liệu
thông qua Bluetooth trên hệ điều hành Symbian
• Xây dựng một ứng dụng điều khiển máy tính từ xa thông qua chiếc
điện thoại di động, phục vụ cho các mục đích giải trí, công tác. Với
chương trình này người dùng có thể biến máy tính mình thành một
trung tâm multimedia nghe nhạc, xem phim như các thiết bị nghe
nhìn khác là tivi, máy nghe nhạc. Ngoài phục vụ cho mục đích giải
trí, chương trình còn phục vụ cho các công tác khác như trình diễn
powerpoint, quản lý máy tính từ xa, v.v…
10.1.2 Hạn chế
Mặc dù đã cố gắng hết sức nhưng ứng dụng vẫn còn một số hạn chế nhất
định:
203
Chương 10 :Tổng kết
• Ứng dụng chỉ điều khiển được một số giới hạn các chương trình trên
máy tính, chưa cho phép người dùng mở rộng để điều khiển các
chương trình khác
• Các tính năng điều khiển Winamp khá hoàn hảo, tuy nhiên vẫn còn
một số giới hạn khi điều khiển Windows Media Player
• Ứng dụng có thể chiếm nhiều bộ nhớ trên điện thoại khi hiển thị
danh sách các tập tin và thư mục trên điện thoại
10.2 Hướng phát triển
Với những kết quả đạt được và những hạn chế nêu trên, đề tài có thể mở
rộng theo các hướng sau:
• Xây dựng ứng dụng sao cho người dùng có thể tự định nghĩa các
chương trình cần điều khiển
• Xây dựng ứng dụng dưới dạng framework cho phép các lập trình
viên khác có thể thêm vào các plugin giúp mở rộng tính năng của
chương trình
• Mở rộng phạm vi của ứng dụng sang thiết bị di động của các hãng
khác có sử dụng Symbian và hỗ trợ Bluetooth như các điện thoại
P800, P900 của Sony – Ericson, SX1 của Siemen, v.v…
• Cải thiện vấn đề bộ nhớ trên client.
204
0Phụ lục A: Hướng dẫn sử dụng chương trình
Phụ lục A: Hướng dẫn sử dụng chương trình
1. Hướng dẫn sử dụng Client
Trước khi có thể sử dụng điện thoại để điều khiển máy tính, ta cần
connect vào server của máy tính:
Hình A-1 Connect vào PC
Khi đó chương trình sẽ tìm kiếm các thiết bị Bluetooth khác trong phạm
vi hoạt động của nó. Người dùng sẽ chọn thiết bị Bluetooth trên máy tính để
connect vào (Thông thường là tên máy tính)
Hình A-2 Chọn thiết bị muốn kết nối
Sau khi Connect thành công, một menu mới sẽ xuất hiện:
205
0Phụ lục A: Hướng dẫn sử dụng chương trình
Hình A-3 Sử dụng menu chính
Các chức năng của menu theo thứ tự từ trên xuống là:
• Programs: Chọn chương trình cần điều khiển (Powerpoint, Winam,
Windows Media Player)
• Mouse: Chọn điều khiển chuột, thiết lập tốc độ chuột. Đối với điều
khiển chuột , ta bấm phím lên một lần để chuột chạy lên, bấm lên lần
nữa để chuột dừng. Tương tự như vậy với các phím xuống, phải, trái.
Bấm OK để thực hiện thao tác click trái, bấm phím # để thực hiện
thao tác click phải. Để thiết lập tốc độ chuột, vào Mouse -> Mouse
speed.
• Turn off: Chọn một trong các chế độ shutdown, restart, log out,
standby, hibernate
• Timer: Hẹn giờ tắt máy và bật nhạc
Khi ta chọn điều khiển Powerpoint, một màn hình mới hiện lên, nếu là
lần chạy đầu tiên thì trên màn hình sẽ không có dữ liệu
206
0Phụ lục A: Hướng dẫn sử dụng chương trình
Hình A-4 Khởi chạy Powerpoint lần đầu
Để có thể duyệt danh sách các tập tin và thư mục đã được chỉ định trên
server, chọn Menu -> File -> Refresh list.
Hình A-5 Chức năng refresh list
Bây giờ người dùng có thể chọn file powerpoint cần thực thi bằng cách
nhấn phím OK hoặc chọn Menu -> File -> Open. Dùng phím phải để chuyển
sang slide kế tiếp, dùng phím trái để chuyển sang slide trước đó. Chọn Menu ->
File -> Go to slide để nhảy đến một slide cụ thể, chọn Menu -> File -> Stop để
ngưng trình diễn powerpoint.
Đối với 2 chương trình Winamp và Windows Media Player, 2 chương
trình này có giao diện và chức năng giống nhau. Khi ta chọn điều khiển
207
0Phụ lục A: Hướng dẫn sử dụng chương trình
Winamp hoặc Windows Media Player, một màn hình dùng để browse tương tự
như màn hình Powerpoint sẽ hiện lên cho phép chọn file nhạc để chơi:
Hình A-6 Browse tập tin của Winamp / Windows Media Player
Các chức năng menu của màn hình này bao gồm:
Menu Cha Chức năng Menu
Play File Play file đang được chọn trên list
box
Add to playlist File Đưa file đang được chọn trên list
box vào playlist
Refresh list File Cập nhật lại danh sách file trên list
box từ thư mục do người dùng chỉ
định trên server
Bảng A-1 Chức năng Menu của màn hình Browse
Khi ở màn hình này, bấm softkey bên phải để chuyển sang chế độ
Control cho phép thực hiện các thao tác như Play, Pause, Stop, Forward, Back
208
0Phụ lục A: Hướng dẫn sử dụng chương trình
Hình A-7 Điểu khiển Winamp
Menu của màn hình này gồm các chức năng sau:
Menu Cha Chức năng Menu
Full screen File Thực hiện chức năng full screen
đối với Winamp hay Windows
Media Player.
Shuffle File On / Off shuffle trên Winamp hay
Windows Media Player
Repeat File On / Off repeat trên Winamp hay
Windows Media Player
Bảng A-2 Chức năng Menu của màn hình Control
Khi ở màn hình này, bấm softkey bên phải để chuyển sang màn hình
Playlist:
209
0Phụ lục A: Hướng dẫn sử dụng chương trình
Hình A-8 Thao tác với playlist
Với màn hình này , người dùng có thể chọn bài hát trong playlist để chơi
hoặc bấm softkey bên phải để quay lại màn hình Browse
Menu của màn hình này gồm các chức năng sau:
Menu Cha Chức năng Menu
Play File Play file đang được chọn trên list
box
Refresh list File Cập nhật lại playlist
Remove all File Xóa tất cả các bài hát ra khỏi
playlist
Bảng A-3 Chức năng menu của màn hình Playlist
2. Hướng dẫn sử dụng Server
Màn hình chính của Server có dạng như sau:
210
0Phụ lục A: Hướng dẫn sử dụng chương trình
Hình A-9 Hướng dẫn sử dụng màn hình chính của server
Theo thứ tự trên màn hình từ trên xuống thì đầu tiên là nơi để chọn thư
mục cho phép duyệt trên điện thoại. Chỉ có những thư mục được chỉ định ở đây
mới có thể duyệt trên điện thoại.
Hình A-10 Hướng dẫn sử dụng “Files to browse”
211
0Phụ lục A: Hướng dẫn sử dụng chương trình
Ta có thể nhập đường dẫn trực tiếp hoặc có thể dùng button “Select” để
chọn một thư mục, danh sách các thư mục tồn tại trước đó đều bị xóa. Dùng
button “Add” để thêm một thư mục vào danh sách. Dùng button “Clear” để xóa
hết danh sách các thư mục đã chọn. Nếu có nhiều thư mục được chọn thì các
thư mục sẽ cách nhau bởi dấu “;” . Nên hạn chế chọn quá nhiều thư mục hoặc
chọn thư mục quá lớn vì điều này sẽ dẫn đến việc bộ nhớ trên điện thoại không
đủ lưu trữ.
Tiếp theo ta cần chọn COM port để lắng nghe kết nối. Chương trình sẽ
cố gắng liệt kê hết tất cả các port có trong máy tính cho người dùng chọn, tuy
nhiên trong trường hợp xấu nhất nếu chương trình không thể liệt kê ra được thì
người dùng có thể tự nhập vào COM port theo định dạng COMx (VD: COM4,
COM5, v.v…). COM port mà người dùng chọn phải là Bluetooth serial COM
port (Sau khi cài driver cho thiết bị Bluetooth, vào Device Manager -> ports để
biết giá trị của Bluetooth serial COM port). Sau khi chọn xong COM port,
người dùng bấm vào button Listen để lắng nghe kết nối, nếu thành công sẽ hiện
ra thông báo “Connected to port COMx” , lúc này người dùng có thể sử dụng
điện thoại để kết nối vào máy tính.
Hình A-11 Hướng dẫn sử dụng COM port
Để có thể điều khiển được các chương trình như Winamp, Windows
Media Player, ngườidùng phải chỉ đường dẫn đến các file thực thi của các ứng
dụng đó
Hình A-12 Thiết lập đường dẫn cho chương trình cần điều khiển
Chương trình hỗ trợ thêm các tùy chọn như
212
0Phụ lục A: Hướng dẫn sử dụng chương trình
Start server minimized: Đặt chương trình dưới system tray mỗi khi khởi
chạy
Auto-run server at boot time: Tự chạy server mỗi khi khởi động máy
Người dùng check vào checkbox tương ứng để thiết lập tùy chọn
Hình A-13 Hướng dẫn sử dụng Options
Chương trình có một màn hình “log” ghi nhận lại một vài thông tin liên
quan đến chương trình như listen có thành công hay không, có lỗi nào xảy ra,
người dùng đang dùng điện thoại điều khiển chương trình gì
Hình A-14 Màn hình “log”
Một số phím chức năng khác của server:
More/Less : Hiển thị / che dấu màn hình “log”
Help: Hiển thị trợ giúp
Taskbar: Đặt chương trình vào system tray
Exit: Thoát chương trình
Hình A-15 Một số phím chức năng khác của server
213
0Phụ lục B: Hướng dẫn sử dụng emulator cho Series 60
Phụ lục B: Hướng dẫn sử dụng emulator cho Series 60
1. Cài đặt các chương trình cần thiết
1. Cài đặt Microsoft Visual Studio 6.0 (Nên cài thêm Service Pack 5)
2. Cài đặt Series60 SDK 1.2
3. Cài đặt Application Wizard và MmpClick đi kèm theo bộ SDK Công cụ
và hướng dẫn cài nằm ở hai thư mục tương ứng là:
\Symbian\6.1\Series60\Series60Tools\applicationwizard và
\Symbian\6.1\Series60\Series60Tools\mmpclick
2. Tạo một project mới
Sau khi cài đặt các phần mềm cần thiết xong, ta có thể tạo một project
mới nhờ vào Application Wizard như sau:
• Chạy Visual Studio
• Chọn New từ menu File
• Chọn Series 60 AppWizard v1.9
• Nhập vào tên project và location, nhấn OK để tiếp tục
214
0Phụ lục B: Hướng dẫn sử dụng emulator cho Series 60
Hình B-1 Application Wizard
• Các bước tiếp theo ta để nguyên chế độ mặc định và nhấn Next để
tiếp tục. Cuối cùng nhấn Finish để kết thúc Wizard. Khi này một
màn hình sẽ hiện lên thể hiện một số thông tin về project mới tạo
215
0Phụ lục B: Hướng dẫn sử dụng emulator cho Series 60
Hình B-2 New project
• Sau khi nhấn OK, một project mới sẽ được tạo.
3. Mở một project có sẵn
Ta có thể mở một project có sẵn của Series 60 một cách dễ dàng. Thông
thường một project của Series 60 có cấu trúc thư mục như sau:
216
0Phụ lục B: Hướng dẫn sử dụng emulator cho Series 60
Hình B-3 Cấu trúc thư mục một project
Để mở một project của Series 60, đầu tiên ta vào thư mục group, click
phải vào file .mmp , chọn Create VC Workspace
Hình B-4 Tạo VC Workspace cho project
Khi đó một màn hình console hiện lên thực hiện quá trình tạo VC
Workspace cho Series 60 project. Sau khi quá trình kết thúc, ta có thể mở
workspace vừa tạo bằng cách click phải vào file .mmp, chọn Open VC
Workspace
217
0Phụ lục B: Hướng dẫn sử dụng emulator cho Series 60
Hình B-5 Mở VC Workspace cho project
4. Thực thi một project
Sau khi tạo một project mới hoặc mở một project có sẵn, trong VC
Workspace ta bấm Ctrl + F5 để thực thi ứng dụng. Sau khi biên dịch thành
công, một hộp thoại hiện lên yêu cầu ta nhập vào đường dẫn tới file thực thi
của máy ảo (emulator). Để chạy dưới chế độ Debug, ta chọn đường dẫn tới
\Symbian\6.1\Series60\Epoc32\Release\Wins\udeb\epoc.exe .
Hình B-6 Thực thi một project
Sau đó máy ảo sẽ hiện lên và ta sẽ chọn ứng dụng mà ta muốn thực thi
trong máy ảo:
218
0Phụ lục B: Hướng dẫn sử dụng emulator cho Series 60
Hình B-7 Chọn ứng dụng
Bấm OK để thực thi ứng dụng đó:
219
0Phụ lục B: Hướng dẫn sử dụng emulator cho Series 60
Hình B-8 Thực thi ứng dụng
Đến đây coi như ta đã thực hiện thành công việc thao tác với máy ảo.
220
0Tài liệu tham khảo
Tài liệu tham khảo
Tài liệu viết:
[ 1] Martin Tasker – Jonathan Allin – Jonathan Dixon – John Forrest – Mark
Heath – Tim Richardson – Mark Shackman, Professional Symbian
Programming, Wrox Press Ltd., 2000
[ 2] Michael J Jipping, Symbian OS Communications Programming, John
Wiley & Sons Ltd, 2002
[ 3] David Kammer – Gordon McNutt – Brian Senese – Jennifer Bray,
Bluetooth Application Developer’s Guide, Syngress, 2002
[ 4] Series 60 SDK Help – Nokia Series 60 SDK 1.2
[ 5] Forum Nokia – Bluetooth Technology Overview – Nokia, 2003
[ 6] Forum Nokia – Setting Up and Using Bluetooth Hardware with
Development Tools - Nokia, 2004
[ 7] Forum Nokia – Designing Bluetooth Applications for Series 60 - Nokia,
2003
[ 8] Forum Nokia – Introduction to Series 60 Bluetooth Applications for C++ Developers - Nokia, 2003 [ 9] Forum Nokia – Symbian OS: Getting Started with C++ Application Development - Nokia, 2003 [ 10] Forum Nokia – Series 60 Developer Platform: Emulator Configuration, Nokia, 2004 [ 11] Forum Nokia – Designing Applications for Smartphones: Series 60 Platform Overview - Nokia, 2002 [ 12] Forum Nokia – Designing C++ Applications Series 60 - Nokia, 2002 [ 13] Forum Nokia – Introduction to Series 60 Applications for C++ Developers - Nokia, 2002
221
0Tài liệu tham khảo
[ 14] Forum Nokia – Series 60 Application Framework Handbook - Nokia, 2002 [ 15] Forum Nokia – Series 60 UI Style Guide - Nokia, 2003 [ 16] Forum Nokia – Developer Platform 1.0 for Series 60: Getting Started with C++ Application Development - Nokia, 2003 [ 17] Microsoft, Microsoft Developer Network, 10-2003
Website:
[ 18] Symbian, http://www.symbian.com
[ 19] Forum Nokia, http://www.forum.nokia.com
[ 20] Palo wireless, http://www.palowireless.com
[ 21] http://www.bluetooth.com
[ 22] http://www.bluetooth.org
[ 23] The NewLC, http://www.newlc.com
[ 24] The Codeproject, http://www.codeproject.com
[ 25] The Codeguru, http://www.codeguru.com
[ 26] SourceForge, http://www.sourceforge.net
[ 27] Experts Exchange, http://www.experts-exchange.com
222