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