Ứng dụng bản đồ điện tử trên Pocket PC
Trang 1CHO PHÉP HIỂN THỊ MỘT BẢN ĐỒ ĐIỆN TỬ VÀ CUNG CẤP MỘT SỐ CHỨC NĂNG TÌM KIẾM THÔNG TIN
LUẬN VĂN CỬ NHÂN TIN HỌC
GIÁO VIÊN HƯỚNG DẪN
TS DƯƠNG ANH ĐỨC LÊ THỤY ANH
Trang 2KHOA CNTT –
ĐH KHTN
Trang 5KHOA CNTT –
ĐH KHTN
Luận văn của chúng em sẽ rất khó hoàn thành nếu không có sự truyền đạt kiến thức quí báu và sự hướng dẫn tận tình của Thầy Dương Anh Đức và thầy Lê Thụy Anh Chúng em xin chân thành cám ơn sự chỉ bảo của các thầy
Chúng con xin gửi tất cả lòng biết ơn, 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, đã cho chúng con niềm tin và nghị lực để vượt qua mọi khó khăn
Chúng em xin trân trọng 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, truyền đạt những kiến thức quý báu và tạo điều kiện cho chúng em được thực hiện 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ị đi trước và tất cả bạn bè Các anh chị, các bạn luôn có mặt trong những thời điểm khó khăn nhất, tiếp thêm động lực và ý chí, giúp chúng tôi hoàn thành được luận văn
Mặc dù đã cố gắng nỗ lực hết sức mình, song chắc chắn luận văn không khỏi còn nhiều 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
Nhóm sinh viên thực hiện Võ Sỹ Nam - Đỗ Lệnh Hùng Sơn
Trang 6KHOA CNTT –
ĐH KHTN
Ngày nay, trong tất cả các lãnh vực của đời sống kinh tế, xã hội, công nghệ thông tin được xem là một trong những ngành công nghệ mũi nhọn, đóng vai trò hết sức quan trọng, có thể tạo ra những bước đột phá mạnh mẽ
Công nghệ thông tin đang phát triển từng ngày, cả trong kĩ thuật phần cứng lẫn lĩnh vực phần mềm Kích thước cũng như khả năng của các thiết bị ngày càng được cải thiện rất nhiều Từ các máy tính có kích thước rất lớn như mainframe, hiện nay, trên thế giới đã xuất hiện các loại thiết bị hỗ trợ cá nhân di động, gọi là PDA (Personal Digital Assistant), hết sức nhỏ gọn và tiện lợi, đặc biệt đối với những người có nhu cầu di chuyển nhiều Các thiết bị thông minh, không dây và thuận tiện này đang ngày càng khẳng định vị trí của mình với những đặc tính của nó
Pocket PC là một dạng thiết bị PDA rất phổ biến và đang được sử dụng rộng rãi trên thế giới với nhiều tiện lợi và các phần mềm hữu ích Trên môi trường này, đã có rất nhiều ứng dụng được phát triển với mục đích hỗ trợ tối đa người sử dụng thường xuyên phải di chuyển nhiều, như sổ tay điện tử, xem phim, nghe nhạc, bản đồ du lịch điện tử
Tại thị trường Việt Nam, Pocket PC cũng đang ngày càng trở nên thông dụng hơn Trong bối cảnh Việt Nam chuẩn bị đăng cai Đại hội Thể thao Đông Nam Á (SEA Games) lần thứ 22, chúng em nhận thấy việc cho ra đời một ứng dụng bản đồ điện tử trên Pocket PC là hết sức cần thiết, tại Việt Nam nói chung và Tp.Hồ Chí Minh nói riêng
Với ý tưởng trên, chúng em đã tập trung thực hiện đề tài “XÂY DỰNG
MỘT ỨNG DỤNG BẢN ĐỒ TRÊN MÁY POCKET PC 2002 (WINDOWS CE 3.0) CHO PHÉP HIỂN THỊ MỘT BẢN ĐỒ ĐIỆN TỬ VÀ CUNG CẤP MỘT SỐ CHỨC NĂNG TÌM KIẾM THÔNG TIN” và đã xây dựng ứng dụng với dữ
liệu là bản đồ Tp.Hồ Chí Minh
Trang 7KHOA CNTT –
ĐH KHTN
đề tài; trình bày các giải pháp và hướng nghiên cứu đã được thực hiện trong và ngoài nước
Chương 2: Tổng quan về Pocket PC và Windows CE 3.0 giới thiệu tổng
quan về Pocket PC và Windows CE 3.0, môi trường sẽ sử dụng ứng dụng bản đồ Chương này cũng giới thiệu về khả năng lập trình trên Pocket PC 2002 và Hệ điều hành nhúng Windows CE 3.0
Chương 3: Các vấn đề khi xây dựng ứng dụng bản đồ trên Pocket PC
trình bày các vấn đề liên quan trực tiếp đến việc xây dựng một ứng dụng bản đồ điện tử trên Pocket PC 2002 (Windows CE 3.0) như hạn chế về tốc độ tính toán, hiển thị, vấn đề lưu trữ trên Pocket PC
Chương 4: Các giải pháp cho ứng dụng bản đồ trên Pocket PC giới thiệu
và phân tích các giải pháp thực hiện đối với việc xây dựng ứng dụng bản đồ điện tử trên Pocket PC như hiển thị, tìm kiếm, giải pháp tiếng Việt
Chương 5: Tổ chức dữ liệu bản đồ trên Pocket PC trình bày về dữ liệu
nguồn và các vấn đề liên quan tới phương diện tổ chức lưu trữ thông tin và dữ liệu Pocket PC Các giải thuật để xây dựng và tổ chức lại dữ liệu từ dữ liệu nguồn cũng được giới thiệu trong chương này
Chương 6: Ứng dụng Pocket Map giới thiệu về ứng dụng bản đồ điện tử
Tp.Hồ Chí Minh trên Pocket PC 2002, mô tả các khảo sát hiện trạng, đặc tả yêu cầu và các phân tích thiết kế cho một số chức năng chính của ứng dụng Chương này cũng giới thiệu giao diện và cách sử dụng của một số chức năng chính của ứng dụng
Chương 7: Tổng kết tóm tắt lại các vấn đề đã được đặt ra trong luận văn,
cách giải quyết, kết quả đạt được và đề ra một số hướng phát triển trong tương lai
Trang 81.1 GIS, các ứng dụng và giải pháp về GIS 1
1.2 Ứng dụng GIS trên Pocket PC 2
1.3 Các giải thuật nghiên cứu về GIS 3
1.4 Mục tiêu của đề tài 3
Chương 2 :Tổng quan về Pocket PC và Windows CE 3.0 5
2.1 Giới thiệu về các thiết bị PDA 5
2.2 Tổng quan về Windows CE 6
2.3 Tổng quan về Pocket PC 7
2.4 Khả năng lập trình trên Pocket PC và Windows CE 3.0 8
Chương 3 :Một số vấn đề khi xây dựng ứng dụng bản đồ trên Pocket PC 20
3.1 Khả năng tính toán của Pocket PC 20
3.2 Tốc độ và các hỗ trợ khả năng hiển thị 21
3.3 Khả năng và hình thức lưu trữ 25
3.4 Cấp phát bộ nhớ 28
3.5 Tương tác giữa người sử dụng và thiết bị 29
Chương 4 :Các giải pháp cho ứng dụng bản đồ trên Pocket PC 314.1 Yêu cầu chung 31
4.2 Vấn đề tối ưu tốc độ hiển thị 31
4.3 Tìm đường đi ngắn nhất 38
Trang 10KHOA CNTT –
ĐH KHTN Danh sách hình
Hình 2-1: Phân bố bộ nhớ trong Windows CE 14
Hình 4-1: Đoạn thẳng giao vùng nhìn 33
Hình 4-2: Cung giao vùng nhìn 34
Hình 4-3: Lưu đồ vẽ đối tượng 38
Hình 5-1: Liên hệ giữa cung và điểm 57
Hình 5-2: Liên hệ giữa đường và cung 57
Hình 5-3: Đường bao quận/huyện 64
Hình 6-1: UseCase tìm kiếm đường 81
Hình 6-2: Usecase Tìm kiếm địa điểm 83
Trang 11KHOA CNTT –
ĐH KHTN
Hình 6-20: Sequence Diagram: Hiển thị bản đồ 102
Hình 6-21: Collaboration Diagram: Hiển thị bản đồ 103
Hình 6-22: Sequence Diagram: Tìm các đường giao nhau 104
Hình 6-23: Collaboration Diagram: Tìm các đường giao nhau 105
Hình 6-24: Sequence Diagram: Tìm giao lộ 106
Hình 6-25: Collaboration Diagram: Tìm giao lộ 107
Hình 6-26: Sequence Diagram: Tìm đường đi ngắn nhất 108
Hình 6-27: Collaboration Diagram: Tìm đường đi ngắn nhất 109
Hình 6-28: Sequence Diagram: Tìm địa điểm 109
Hình 6-29: Collaboration Diagram: Tìm địa điểm 110
Hình 6-30: Sequence Diagram: Tìm con đường 111
Hình 6-31: Collaboration Diagram: Tìm con đường 112
Hình 6-32: Sequence Diagram: Dịch chuyển vùng nhìn 113
Hình 6-33: Collaboration Diagram: Dịch chuyển vùng nhìn 114
Hình 6-34: Sequence Diagram: Tỉ lệ lại bản đồ 115
Hình 6-35: Collaboration Diagram: Tỉ lệ lại bản đồ 115
Hình 6-36: Màn hình chính 116
Hình 6-37: Menu chính 116
Hình 6-38: Nút bấm đặc biệt 117
Hình 6-39: Màn hình tìm thông tin 119
Hình 6-40: Màn hình tên thông tin 120
Hình 6-41: Màn hình thông tin chi tiết 120
Hình 6-42: Màn hình tìm đường đi ngắn nhất 121
Hình 6-43: Màn hình sử dụng chính 126
Hình 6-44: Màn hình tìm thông tin 127
Hình 6-45: Màn hình tìm đường đi ngắn nhất 129
Trang 12KHOA CNTT –
ĐH KHTN Danh sách bảng
Bảng 2-1: Sự hỗ trợ của Windows CE 3.0 đối với các hàm thư viện
C-Runtime 12
Bảng 2-2: Các thư viện C-Runtime được hỗ trợ trên Windows CE 3.0 13
Bảng 3-1: Các tính năng GDI được hỗ trợ trên Windows CE 3.0 23
Bảng 3-2: Các hàm thuộc CWnd không được hỗ trợ trên Windows CE 24
Bảng 3-3: Các kiểu dữ liệu được hỗ trợ trên database của Windows CE 27
Bảng 4-1: Quy ước ký hiệu trong thuật toán tìm dường đi ngắn nhất 39
Bảng 4-2:Các khả năng khi sử dụng chuỗi hằng Unicode 53
Bảng 5-1: Header của file MNT 55
Bảng 5-2: Header của file DBF 58
Bảng 5-3: Header của file Shape 59
Bảng 5-4: Các loại mẫu tin của file Shape 60
Bảng 5-5: Cấu trúc mẫu tin dạng Point 60
Bảng 5-6: Chỉ số trong file MNT và thứ tự mẫu tin trong file DBF 61
Bảng 5-7: Chỉ số trong file SHP và thứ tự mẫu tin trong file DBF 61
Bảng 5-8: Dữ liệu DBF quận/huyện 63
Bảng 5-9: Cấu trúc file quận huyện 67
Bảng 5-10: File dữ liệu đường dạngDBF 67
Bảng 5-11: File dữ liệu đường 69
Bảng 5-12: File dữ liệu địa điểm DBF 69
Bảng 5-13: File dữ liệu địa điểm 70
Bảng 5-14: Giá trị đường một chiều 71
Bảng 6-1: Các chức năng chính 80
Bảng 6-2: Lớp MapData 91
Bảng 6-3: Lớp MapView 91
Bảng 6-4: Lớp MapEvent 91
Trang 13Bảng 6-20: Kết qủa thử nghiệm trên máy ảo 124
Bảng 6-21: Kết qủa thử nghiệm trên máy thật 125
Bảng 6-22: Các menu tìm đốI tượng 128
Bảng 6-23: Các nút bấm tìm đường đi ngắn nhất 132
Trang 14KHOA CNTT –
ĐH KHTN Một số khái niệm và thuật ngữ
Thông tin không gian
Thông tin về những đặc điểm liên quan đến hình dạng, vị trí, quan hệ của các đối tượng địa lý
Bao gồm hai dạng: • Dạng hình học:
mô tả các đặc điểm hình dạng, vị trí Ví dụ như tọa độ của điểm, đường…
• Dạng Topology: mô tả quan hệ giữa các đối tượng hình học Ví dụ như những vùng nào kề với một vùng xác định
Trang 15Ví dụ như tên đường phố, dân số…
PDA (Personal
Digital Assistant)
Thiết bị điện tử hỗ trợ cá nhân, giúp người sử dụng lưu trữ các thông tin cá nhân, công việc cần thiết cũng như các phần mềm tối thiểu trên một thiết bị nhỏ gọn Pocket PC Khái niệm này có thể dùng để
chỉ:
• Hệ điều hành nhúng Pocket PC do Microsoft phát triển dựa trên nhân của Hệ điều hành Windows CE 3.0
• Các thiết bị PDA sử dụng hệ điều hành Pocket PC Palm-size Một dạng thiết bị cầm tay, sử
dụng Windows CE 2.21
Đang có khuynh hướng bị Pocket PC thay thế do có nguồn điện và khả năng không tốt Handheld PC Một dạng thiết bị cầm tay, sử
dụng Windows CE 2.21
Có kích thước lớn hơn Pocket PC
Palm OS Hệ điều hành nhúng do Palm phát triển, sử dụng trên các thiết bị cầm tay
Là một trong những hệ điều hành nhúng phổ biến nhất hiện nay, có
Trang 16KHOA CNTT –
ĐH KHTN
Pocket PC của hãng Microsoft
EPOC Hệ điều hành nhúng do Symbian phát triển
Là một trong những hệ điều hành nhúng phổ biến nhất hiện nay Embedded Linux Hệ điều hành nhúng phát triển
dựa trên nhân của Hệ điều hành Linux trên Desktop
Trang 17KHOA CNTT –
ĐH KHTN Chương 1 : Mở đầu
1.1 GIS, các ứng dụng và giải pháp về GIS
GIS (Geography Information System ) là một công nghệ ra đời vào những năm 60 của thế kỉ 20 Công nghệ GIS cho phép đáp ứng các nhu cầu liên quan tới quản lý cũng như khai thác và sử dụng các thông tin, dữ liệu địa lý Từ giai đoạn đầu, được sử dụng trên các hệ thống máy tính lớn ở Mỹ và Canada, đến nay, công nghệ GIS đã được áp dụng và triển khai hết sức rộng rãi trên phạm vi toàn thế giới, trên những hệ thống máy PC và thời gian gần đây là trên cả các thiết bị PDA
Một số ứng dụng GIS nổi tiếng trên thế giới hiện nay đang được ứng dụng rộng rãi như MapInfo, Arc/Info, Spatial Database Engine (SDE), ArcView GIS : được sử dụng với mục đích quản lý, tích hợp, quy hoạch và khai thác các dữ liệu bản đồ
Tại Việt Nam, công nghệ GIS cũng đã được nghiên cứu và có được một số sản phẩm có kết quả đáng khích lệ Thời gian gần đây, việc nghiên cứu công nghệ GIS đã cho ra hàng loạt ứng dụng áp dụng trong thực tế tại Tp.Hồ Chí Minh, như StreetFinder của DolSoft, hệ thống GIS trên website Ngân hàng bản đồ trực tuyến của VDC, DMC, Dolsoft (www.basao.com.vn), hệ thống chỉ dẫn giao thông của nhóm AMI Group - Đại học Khoa học Tự nhiên Tp.Hồ Chí Minh
Các giải pháp về GIS thường được chia làm hai nhóm chính:
• Giải quyết các bài toán phức tạp liên quan đến mạng giao thông
Các bài toán như tìm kiếm đường đi tối ưu, điều phối lộ trình giao thông thường được áp dụng trên các hệ thống máy tính lớn, có cấu hình mạnh
• Hiển thị và tìm kiếm các thông tin bản đồ
Đây là dạng ứng dụng bản đồ điện tử, cung cấp các khả năng cho phép người
Trang 18KHOA CNTT –
ĐH KHTN
1.2 Ứng dụng GIS trên Pocket PC
Sự phát triển mạnh mẽ của Internet, cũng như khả năng của công nghệ phần cứng, đã dẫn đến sự ra đời của các thiết bị ứng dụng Internet Theo các nhà nghiên cứu thị trường, mặc dù PC vẫn giữ vai trò chủ yếu trong việc xử lý và hỗ trợ công việc, nhưng các thiết bị Internet hay thiết bị hỗ trợ cá nhân sẽ ngày càng khẳng định được vai trò của nó trên thị trường
Ra đời vào những năm 90 của thế kỉ 20, Pocket PC là một dạng thiết bị cầm tay PDA (Personal Digital Assistant) sử dụng hệ điều hành Pocket PC, một biến thể của Windows CE, một hệ điều hành nhúng được Microsoft phát triển cho các thiết bị không là PC (non-PC)
Do đặc trưng nhỏ gọn, được thiết kế với mục đích giúp người sử dụng lưu trữ các thông tin cá nhân, công việc cần thiết cũng như các phần mềm tối thiểu trên một thiết bị nhỏ gọn, và sử dụng một hệ điều hành họ hàng Windows, Pocket PC đã được khá nhiều nhà sản xuất phần mềm quan tâm trong lĩnh vực phát triển ứng dụng, trong đó có các ứng dụng GIS
Tuy nhiên, Pocket PC chạy trên nền hệ điều hành nhúng Windows CE, hệ điều hành chỉ cung cấp bộ nhớ một cách giới hạn cho các ứng dụng phát triển trên nó Vì vậy, các ứng dụng liên quan tới hệ thống GIS phát triển trên Pocket PC và hệ điều hành Windows CE gặp phải các vấn đề về tối ưu hoá bộ nhớ cũng như tốc độ và thường có tốc độ chậm hơn nhiều so với các ứng dụng trên PC thông thường Ngoài ra, do khả năng lưu trữ có giới hạn, việc ứng dụng GIS trên môi trường này cũng gặp không ít khó khăn
Trên thị trường, một số sản phẩm GIS trên Pocket PC đã được phổ biến rộng rãi như Pocket Street của Microsoft, MapInPocket của Information Technologies India Ltd
Trang 19KHOA CNTT –
ĐH KHTN
1.3 Các giải thuật nghiên cứu về GIS
Công nghệ GIS liên quan trực tiếp tới lý thuyết đồ thị cũng như trí tuệ nhân tạo trong việc đưa ra các giải thuật để giải quyết các bài toán liên quan Đây là những lĩnh vực nghiên cứu được đầu tư rất nhiều với các cải tiến cũng như đã đưa ra được nhiều giải thuật tốt hoặc tối ưu (chẳng hạn như các giải thuật clipping, kiểm tra điểm trong/ngoài đa giác hay các giải thuật tìm kiếm trên cấu trúc dữ liệu hoặc tìm kiếm lộ trình tối ưu )
Các bài toán về GIS hiện nay vẫn đang được nghiên cứu và có những cải tiến rất tốt, kể cả trong các bài toán phức tạp
1.4 Mục tiêu của đề tài
Hiện nay, một ứng dụng bản đồ điện tử tại Việt Nam nói chung, và Tp.Hồ Chí Minh trên môi trường Pocket PC là rất cần thiết khi lượng khách du lịch từ nước ngoài đến tham quan Việt Nam ngày càng tăng, cũng như sự phổ biến ngày càng rộng rãi của Pocket PC tại Việt Nam Với đặc tính nhỏ gọn và tiện lợi của nó, Pocket PC đặc biệt thích hợp với dạng ứng dụng bản đồ điện tử hỗ trợ người dùng xem bản đồ và tìm kiếm các thông tin cần thiết trong quá trình di chuyển
Do vậy, từ nhu cầu nói trên, chúng em đã đầu tư xây dựng đề tài ““Xây dựng một ứng dụng bản đồ trên Pocket PC 2002 (Windows CE 3.0) cho phép hiển thị một bản đồ điện tử và cung cấp một số chức năng tìm kiếm thông tin”
Đề tài phải giải quyết một số công việc chính:
• Nghiên cứu về Pocket PC 2002 và Hệ điều hành nhúng Windows CE 3.0 để thấy được sự khác biệt về trong mô hình với Windows trên Desktop, cũng như làm rõ được khả năng lập trình trên môi trường này
• Dựa vào những hiểu biết này, xem xét việc xây dựng một ứng dụng bản đồ sẽ phải liên quan trực tiếp tới những vấn đề nào, sau đó, trình bày các giải pháp thực hiện để xây dựng một ứng dụng bản đồ trên Pocket PC 2002
Trang 20KHOA CNTT –
ĐH KHTN
liên quan đến đường phố, địa điểm (như bệnh viện, trường học ) với tốc độ truy xuất, tìm kiếm thông tin có thể chấp nhận đối với người dùng Ngoài ra, chúng em cũng đã hỗ trợ thêm chức năng tìm kiếm lộ trình ngắn nhất giữa hai vị trí trên bản đồ và một số biến thể của bài toán này là giải quyết việc tìm lộ trình ngắn nhất với ràng buộc phải qua một số giao lộ, con đường hoặc phải tránh một số giao lộ, con đường nào đó (vì nhiều lí do như kẹt xe, ngập lụt )
Trang 21KHOA CNTT –
ĐH KHTN Chương 2 : Tổng quan về Pocket PC
và Windows CE 3.0
2.1 Giới thiệu về các thiết bị PDA
Khoảng hai mươi năm trước, đã có một cuộc cách mạng về máy tính khi máy tính IBM PC ra đời Máy tính trở nên thông dụng với mọi người do không còn mang kích thước quá lớn Sau đó, máy tính xach tay (Laptop PC) xuất hiện, cho phép người sử dụng dùng máy tính của mình ở khắp nơi, từ nhà đến văn phòng Các máy PC là những thiết bị tính toán với năng lực mạnh mẽ nhưng mềm dẻo, đã trở nên hết sức thông dụng trên thị trường thế giới Tuy nhiên, đang tồn tại một cuộc cách mạng tiềm ẩn và hứa hẹn khác, đó là sự ra đời của các thiết bị tính toán, xử lý di động hay còn gọi là thiết bị hỗ trợ cá nhân (PDA-Personal Digital Assistant)
Trong vài năm gần đây, các thiết bị dạng này đang ngày càng phổ biến Tuy nhiên, vào thời điểm ban đầu, mỗi thiết bị sử dụng hệ điều hành của riêng nó (các phần mềm trên thiết bị có thể do các nhà cung cấp phần mềm độc lập, bán bản quyền cho nhà cung cấp thiết bị ) Việc này đã dẫn đến sự phân chia thị trường của các hệ điều hành cho thiết bị di động, hay còn gọi là hệ điều hành nhúng, ngăn cản khả năng phát triển các ứng dụng nhúng một cách đồng loạt Hiện nay, thị trường cho các hệ điều hành nhúng đã bắt đầu có khuynh hướng thu hẹp lại với các hệ điều hành có thị phần cao:
• Microsoft Windows CE, bao gồm cả biến thể Pocket PC của hệ điều hành này
• Palm OS do Palm cung cấp • EPOC của Symbian
• Embedded Linux, hệ điều hành ban đầu chỉ được phát triển cho máy chủ và máy desktop
Trang 22Windows CE là hệ điều hành họ Windows, song được thiết kế cho các thiết bị di động, nên có tính năng nhỏ gọn, đồng thời “có thể điều chỉnh” (modular) và dễ chuyên biệt hóa để có thể thích ứng trong việc điều khiển nhiều hệ thống nhúng khác nhau Điều này có nghĩa là các kĩ sư có thể chọn lựa những phần nào của hệ điều hành cần sử dụng, ví dụ như một thiết bị có thể không cần bàn phím hoặc màn hình, nhưng có thể đòi hỏi sử dụng được mạng Bằng cách chọn lựa những module mà thiết bị cần, kích thước và giá thành của thiết bị có thể được giảm xuống
Tuy nhiên, sự điều chỉnh này lại có thể là một khó khăn cho các nhà phát triển ứng dụng, vì có thể Windows CE hỗ trợ một tính năng nào đó, nhưng thiết bị nguồn được sử dụng lại không hỗ trợ
Hiện thời, có khá nhiều sự lẫn lộn quanh các phiên bản của Windows CE cũng như cách gọi tên Sau đây là một vài phiên bản hiện thời của Windows CE:
• Windows CE 3.0: Phiên bản này được thiết kế để cung cấp các đặc tính của một hệ điều hành thời gian thực và một số phát triển khác Thiết bị Pocket PC sử dụng một dạng biến thể phiên bản này
• Windows CE 2.12: Được sử dụng chủ yếu bởi các nhà sản xuất thiết bị nhúng dùng Microsoft Platform Builder Phiên bản này không nhắm tới các thiết bị cho người tiêu thụ cuối
• Windows CE 2.21: Phiên bản của Windows CE dùng cho các thiết bị Windows Handheld và Palm-size
Trang 23Pocket PC giải quyết được nhiều thiếu sót đã làm giảm thành công của Windows CE, như giao diện quá phức tạp, tốc độ chậm, khả năng lưu trữ kém, nguồn cung cấp năng lượng không tốt…
Microsoft đã thêm các tính năng mới cho các thiết bị Pocket PC (Pocket PC – device, những thiết bị PDA sử dụng hệ điều hành Pocket PC) với hệ điều hành Pocket PC chứa phiên bản thu gọn của một số phần mềm như Internet Explorer, Word, Excel, Outlook, Microsoft Reader, Windows Media Player…
Các thiết bị Pocket PC là một dạng thiết bị PDA, do nhiều hãng như Compag, HP, Casio sản xuất PocketPC sử dụng các chuẩn cắm công nghiệp, có tính tương thích và mở rộng cao như có thể kết nối với máy tính để bàn, gắn thêm storage card, modem kết nối Internet
Ghi chú:
Từ đây, trong luận văn, khi đề cập đến Pocket PC xin hiểu đây là thiết bị Pocket PC chạy trên phiên bản hệ điều hành Pocket PC 2002, được phát triển trên nhân hệ điều hành nhúng Windows CE 3.0 Ngoài ra, do là một biến thể của Windows CE 3.0, nên khi đề cập tới các vấn đề liên quan như khả năng lập trình, hạn chế về tốc độ, giải pháp của Windows CE… xin hiểu đó cũng là các vấn đề gặp phải với Pocket PC
Trang 24KHOA CNTT –
ĐH KHTN
2.4 Khả năng lập trình trên Pocket PC và Windows CE 3.0
Trong phương diện lập trình, có nhiều điểm khác biệt từ lớn cho tới nhỏ giữa Windows CE và phiên bản Windows trên Desktop
Lý do gây ra sự khác biệt này là do Windows CE được xây dựng và thiết kế từ kiến trúc nền sao cho nó có thể ở mức nhỏ nhất có thể Windows CE bảo đảm 2 điều: các hàm được chọn lọc lại để sử dụng hoặc không hỗ trợ các hàm này nữa (phụ thuộc vào yêu cầu xác định của thiết bị, như H/PC hay P/PC) Trong các hàm được khai báo và cài đặt trùng nhau giữa Win32 API và các thư viện runtime của ngôn ngữ lập trình (ví dụ: lstrlen/strlen, time/GetSystemTime…), WinCE sẽ chỉ cung cấp và hỗ trợ một hàm
Một thay đổi lớn về mặt cấu tạo là cách Win CE cung cấp các thư viện hệ thống Win CE không còn cung cấp nhiều thư viện khác nhau như GDI, Kernel và User nữa, mà chỉ cung cấp duy nhất một thư viện coredll.lib Thư viện này cung cấp tất cả các hàm API cũng như nhiều hàm nội (internal) không được cung cấp tài liệu
2.4.1 Các hàm Win32 API
Khoảng 3600 hàm Win32 API được hỗ trợ trong Windows NT và Windows 95/98, còn số hàm API mà Windows 2000 lớn hơn rất nhiều Trong khi đó, phiên bản 1.0 của WinCE chỉ hỗ trợ 500 trong số các hàm này, trong phiên bản 2.0( được cấu hình cho H/PC và P/PC), số hàm này tăng gấp 3, khoảng 1500 hàm
Các hàm của Windows CE sử dụng mô hình khai báo hàm cho các phiên bản ANSI và UNICODE giống trên desktop Dựa vào macro UNICODE, hệ điều hành sẽ chọn khai báo hàm tương ứng khi biên dịch chương trình Tuy nhiên, thực chất, chỉ có phiên bản Unicode của các hàm API này được cài đặt, vì vậy, bất kì chương trình nào được xây dựng nhằm mục đích sử dụng trong môi trường Windows CE đều phải định nghĩa macro UNICODE
Trong môi trường Windows CE, các ứng dụng dạng Win32 console không được hỗ trợ Mọi ứng dụng đều bắt buộc phải có hàm WinMain (thay cho main()), trong đó, tham số dòng lệnh lpCmdLine là một chuỗi Unicode Tuy
Trang 25Cấu hình hệ thống cho chương trình trên Windows CE toàn bộ sử dụng Registry như trên desktop, không sử dụng các biến môi trường hay các file INI Mọi chương trình đều phải sử dụng Registry, có cơ chế gần như tương tự với Registry trên Windows- phiên bản desktop
Vì một hay nhiều nguyên nhân, một số phần cơ bản trong Win32 API cũng không được hỗ trợ Các phần này bao gồm:
2.4.2 Các hàm API và SDK phụ trợ
Các hàm này không nằm trong tập hợp các hàm được xem là cơ bản của Win32 Trong khi Win32 hỗ trợ một số lượng khổng lồ các hàm SDK và API ngoại
Trang 26KHOA CNTT –
ĐH KHTN
2.4.2.1 Truyền thông đa phương tiện (Multimedia)
Bắt đầu từ Windows CE 2.0, hệ điều hành này đã hỗ trợ một số hàm sử dụng để chơi hoặc thu lại âm thanh sndPlaySound và các hàm trong họ xử lý wave (waveInStart, waveOutClose ) cũng bắt đầu có thể sử dụng được trong việc tạo và dùng các tập tin WAV
2.4.2.2 WinSock
WinSock được hỗ trợ hạn chế trên Windows CE Chỉ một vài chức năng cơ bản liên quan tới cơ sở dữ liệu (getservbyname ), các hàm không đồng bộ (WSAAsyceSelect ) và Secure Socket Layer (SSL) được hỗ trợ trên Windows CE
2.4.2.3 Telephony API (TAPI)
Một tập con của TAPI được cung cấp và cài đặt nhưng chỉ để hỗ trợ cho các cuộc gọi đi Các hàm API này có thể được sử dụng với các thiết bị modem tích hợp sẵn (built-in) hay PCMCIA
2.4.2.4 Mail API (MAPI)
MAPI không được hỗ trợ trên Windows CE, mà thế vào đó là một bộ API riêng cho Windows CE được cung cấp nhằm giúp lập trình viên có thể tạo, gửi mail và sử dụng address book
2.4.2.5 Active Data Objects (ADO)
ADO là một phần mới được hỗ trợ trong Windows CEvới đầy đủ các chức năng cho Recordset và Field
2.4.3 Các thư viện C-Runtime
Windows CE chỉ hỗ trợ một phần các hàm thư viện C-runtime có trên môi trường Desktop Hỗ trợ ít hàm hơn cho phép Windows CE có thể chạy trên các thiết bị với các tài nguyên hạn chế hơn rất nhiều so với phiên bản Desktop Các thư viện này chứa khoảng vài trăm hàm nằm trong 15 thư viện
Trang 27KHOA CNTT –
ĐH KHTN
Nhóm hàm liên quan đến chuỗi (ghép nối chuỗi, sao chép chuỗi, so sánh chuỗi, chiều dài chuỗi, tìm chuỗi, tìm kí tự, tìm token, gán kí tự cho chuỗi, đổi chuỗi thành chữ hoa/thường, đảo chuỗi)
Tách byte đối với các chuỗi multibyte Không
Truy xuất tham số Không Thiết lập, thông báo về thời gian, định dạng thời gian Không
Các hàm toán học lượng giác, log, exponent, power, trị tuyệt đối
Có
Ép kiểu dấu chấm động Một phần
Random giá trị Có Các hàm toán học và xử lý dấm chấm động khác Một phần
Điều khiển tiến trình, điều khiển môi trường Một phần
Heap Không
Các lệnh gọi hệ thống Không Nhóm hàm liên quan đến stream (đóng/mở stream, Một phần
Trang 28KHOA CNTT –
ĐH KHTN
stream, flushing và buffer)
Nhóm hàm liên quan đến file (Đóng/mở/tạo file, Đọc/ghi file, Định vị con trỏ file)
Không
Điều khiển thư mục Không Xử lý file dựa trên file handle Chỉ một
Xử lý file dựa trên đường dẫn và tên file Không
Bảng 2-1: Sự hỗ trợ của Windows CE 3.0 đối với các hàm thư viện Runtime
<assert.h> Không <ctype.h> Có <errno.h> Không <float.h> Có <limits.h> Có <locale.h> Không <math.h> Có <setjmp.h> Có <signal.h> Không <stdarg.h> Có <stddef.h> Không <stdio.h> Không <stdlib.h> Có
Trang 29KHOA CNTT –
ĐH KHTN
<string.h> Có <time.h> Không
Bảng 2-2: Các thư viện C-Runtime được hỗ trợ trên Windows CE 3.0 Một trong những thư viện bị thiếu quan trọng nhất là thư viện stdio Lý do dễ dàng nhận thấy là vì Windows CE không hỗ trợ ứng dụng dạng console, nên người dùng không có cách tương tác với chương trình thông qua dòng lệnh, và vì vậy, các hàm thư viện stdio được thay thế (ví dụ, hàm printf được thay bằng một hộp thoại - dialog box)
Tuy nhiên, có một điều thú vị là trong khi tài liệu về Windows CE thường nói về vấn đề thiếu các hàm này, thì khi áp dụng lập trình thực tế, có một số vẫn có thể sử dụng được Có lẽ, trong các phiên bản sau, các hàm hoặc cơ chế này sẽ được hỗ trợ
2.4.4 Các thư viện chuẩn C++
So sánh với các thư viện C-RTL (C-Runtime Library), số lượng các hàm C++ còn bị thiếu hơn rất nhiều Mặc dù các tính năng quan trong như template, con trỏ hàm vẫn được cung cấp, song khá nhiều hỗ trợ khác đã bị bỏ qua, như các xử lý ngoại lệ (exception), thông tin kiểu runtime (runtime-type information), và toàn bộ STL (Standard Template Library) (do dựa trên các xử lý exception)
2.4.5 Tiến trình và tiểu trình
2.4.5.1 Hạn chế
Trên hệ điều hành Win 32, không có hạn chế nào về số lượng tiến trình có thể chạy đồng thời, và mỗi tiến trình sở hữu 4GB không gian bộ nhớ ảo của riêng nó Windows CE đã thay đổi nhiều kiến trúc này, chỉ cho phép 32 tiến trình được phép chạy đồng thời Mỗi tiến trình này được coi là một slot, hỗ trợ 32MB không
Trang 30KHOA CNTT –
ĐH KHTN
(event subsystem) giữ một vài slot đầu tiên khi thiết bị khởi động Thông thường, một thiết bị đang chạy với phần shell và các dịch vụ thông tin liên lạc có khoảng 24 slots trống cho các ứng dụng của người dùng
Tuy nhiên, mặt khác, Windows CE không giới hạn số tiểu trình trong một tiến trình Mỗi tiểu trình có quyền truy xuất hoàn toàn lên phần không gian 32MB của tiến trình
Hình 2-1: Phân bố bộ nhớ trong Windows CE
Không giống Windows NT hay 95, không gian stack dành cho một tiểu trình không được cấp phát động, mà có cùng kích thước cố định đối với tất cả các tiểu trình trong một tiến trình Phiên bản trước 2.1 có phần stack cố định là 58KB, và người dùng không thể thay đổi phần stack này Từ phiên bản 2.1, kích thước mặc định được thiết lập bởi việc sử dụng khai báo /stack trong trình linker Nếu không có khai báo này, chương trình sẽ tự động sử dụng giá trị 58KB
Một lưu ý quan trọng là kích thước stack của tiểu trình thứ 2 không thể thay đổi trong quá trình chạy bằng cách chỉ ra giá trị dwStackSize trong hàm API CreateThread hay beginthreadex Tham số này bị bỏ qua và chương
Trang 31• THREAD_PRIORITY_TIME_CRITICAL trên độ ưu tiên bình thường 2 cấp
• THREAD_PRIORITY_HIGHEST trên độ ưu tiên bình thường 1 cấp • THREAD_PRIORITY_ABOVE_NORMAL trên độ ưu tiên bình thường
Có 2 ngoại lệ trong chiến lược Round-Robin khi điều phối các tiểu trình trên
Trang 32KHOA CNTT –
ĐH KHTN
ngay cả bởi 1 luồng THREAD_PRIORITY_CRITICAL khác Nó sẽ hoạt động đến khi hoàn thành hoặc khi hết khối xử lý Các tiểu trình có độ ưu tiên này thường dành riêng cho việc phục vụ các ngắt trong driver thiết bị và các phần của hệ điều hành Không nên sử dụng độ ưu tiên này trong ứng dụng
Ngoại lệ thứ hai xuất hiện khi tiểu trình có độ ưu tiên thấp hơn sở hữu một tài nguyên mà một tiểu trình có độ ưu tiên cao hơn phải sử dụng Trong trường hợp này, tiểu trình có độ ưu tiên thấp sẽ tạm thời được cấp quyền ưu tiên của tiểu trình đang chờ nó để tài nguyên được giải phóng và tiểu trình có độ ưu tiên cao sẽ tiếp tục chạy Sau khi tài nguyên được giải phóng, độ ưu tiên của tiểu trình sẽ được thiết lập trở lại trạng thái ban đầu
2.4.5.2 Đồng bộ hoá tiểu trình
Đồng bộ hoá tiểu trình trên WindowsCE được phân chia thành 3 phần chính • Miền găng
• Các interlocked API
• Các đối tượng hạt nhân (kernel object)
Sử dụng miền găng cũng tương tự như trên Windows32, dùng để bảo đảm không có quá một tiểu trình tại một thời điểm thi hành một khối mã lệnh nào đó Có 4 thao tác chính trên miền găng: initialize, delete, enter và leave, và các hoạt động của chúng cũng tương tự như trên Windows 98 và NT
Các hàm interlock được cung cấp nhằm bảo vệ các thao tác đơn mà không cần dùng miền găng hay mutex Các hàm này gồm
• InterlockedCompareExchange • InterlockedTestExchange • InterlockedIncrement • InterlockedDecrement • InterlockedExchange • InterlockedExchangeAdd
Trang 33KHOA CNTT –
ĐH KHTN
Các hàm interlock rất tốt trong các trường hợp thao tác trên các biến đếm trong ứng dụng đa tiểu trình (thông qua InterlockedIncerment và InterlockedDecrement), nhưng trong các vấn đề phức tạp hơn, nên sử dụng miền găng hoặc mutex
Các đối tượng hạt nhân là các tài nguyên của hệ điều hành có thể được tham chiếu đến, như handle, từ bất kì tiến trình nào Các ví dụ của đối tượng hạt nhân là mutex, tiểu trình, và tiến trình
Win32 cung cấp 4 đối tượng hạt nhân cho việc đồng bộ hoá • Mutex cung cấp chức năng tương tự miền găng
• Event cho phép thông báo tới các tiểu trình khác khi điều kiện được thoả
• Semaphore cung cấp khả năng hạn chế số tối đa người dùng thao tác tới tài nguyên
• Waitable Time cho phép thông báo tới các tiểu trình khác theo một khoảng thời gian xác định
Tuy nhiên, trong Windows CE 3.0, chỉ có mutex, event và semaphore được hỗ trợ
Giống như miền găng, mutex cung cấp các chức năng để hạn chế việc truy xuất vào một khối mã nguồn trong một tiểu trình vào một khoảng thời gian Để giành mutex, ta sử dụng WaitForSingleObject và giải phóng nó bằng cách gọi hàm ReleaseMutex Lợi thế lớn nhất của mutex so với miền găng là ở chỗ mutex là một đối tượng hạt nhân, vì vậy nhó có thể được dùng trong nhiều tiến trình Nếu ta không cần đồng bộ hoá nhiều tiến trình, thì nên sử dụng miền găng bởi
độ nhanh trong xử lý của nó trên thiết bị sử dụng WinCE (xin tham khảo [ 6])
Event có tính năng mềm dẻo hơn nhiều so với mutex và cung cấp khả năng thông báo tới các tiểu trình khác nếu một điều kiện ràng buộc nào đó được thoả Event trên WindowsCE tương tự như trên Windows98 và WindowsNT với việc sử
Trang 34KHOA CNTT –
ĐH KHTN
Semaphore là một đối tượng đồng bộ hoá liên tiến trình có thể có giá trị giữa 0 và một giá trị cực đại nào đó Trạng thái của đối tượng sẽ được thiết lập thành giá trị “bật” nếu số đếm của nó lớn hơn 0 và ngược lại Ta có thể sử dụng các hàm CreateSemaphore hay ReleaseSemaphore để tạo hoặc giải phóng một đối tượng Semaphore (Windows CE không hỗ trợ OpenSemaphore) Đối tượng này có thể dùng trong nhiều tiến trình hoặc trong duy nhất một tiến trình
2.4.6 Vấn đề Unicode
Ở mức độ hệ thống, Windows CE sử dụng duy nhất chuẩn Unicode cho tất cả các chuỗi và kí tự, do đó, các ứng dụng trên Windows CE đều phải hỗ trợ Unicode Đây cũng là một điều thuận tiện nhằm giúp các ứng dụng có khả năng phát triển đa ngôn ngữ, hướng tới thị trường toàn cầu hơn
Tuy nhiên, đây đôi khi lại là khó khăn với các lập trình viên thường gặp khi lập trình với Windows CE Tất cả các hàm API của Windows CE đều dùng chuỗi Unicode thay thế cho các chuỗi 1 byte (single byte string) hay nhiều byte (multi-byte string)
Khi lập trình trên môi trường Windows CE, có một số điểm cần lưu ý:
Quyết định xem mã nguồn này sẽ chỉ được sử dụng trên WinCE hay đôi khi cũng được sử dụng trong các hệ đìều hành họ Windows khác (tính khả chuyển) Nếu muốn duy trì sự khả chuyển này, nên sử dụng riêng từng phần xử lý Unicode
bằng các macro #ifdef _WIN32_WCE và UNICODE
Nếu muốn duy trì tính khả chuyển, nên sử dụng các chuỗi ở dạng TCHAR Có thể dùng WCHAR nếu tính khả chuyển này không quan trọng lắm, còn CHAR được sử dụng đối với các chuỗi được đọc/ghi từ các tập tin văn bản ASCII hay các thiết bị phần cứng (như modem…)
Nếu ta xây dựng phiên bản Unicode của ứng dụng (ví dụ ta định nghĩa _DUNICODE khi dịch chương trình), TCHAR sẽ được chuyển thành WCHAR Còn nếu ta xây dựng phiên bản non-Unicode, TCHAR sẽ được chuyển thành
Trang 35Nếu dùng các biến WCHAR, ta nên sử dụng các hàm xử lý chuỗi riêng cho UNICODE (như wcscpy, wcslen, wcsstr, wcscat…) Nếu ta cần phải hỗ trợ các chuỗi kí tự ASCII, có thể sử dụng các hàm mbstowcs, wcstombs để chuyển chuỗi qua lại UNICODE
Trang 36KHOA CNTT –
ĐH KHTN Chương 3 : Một số vấn đề khi xây
dựng ứng dụng bản đồ trên Pocket PC
3.1 Khả năng tính toán của Pocket PC
Pocket PC sử dụng một loại CPU khác với CPU thông thường Máy Pocket PC 2002 sử dụng CPU StrongARM hoặc XScale của Intel Các CPU này được gọi là các bộ xử lý RISC (Reduced Instruction Set Computer) vì nó chỉ thực hiện một lệnh trong một chu kì CPU (Mỗi chu kì CPU trong một giây gọi là 1 Hertz hay 1 Hz) Máy PC thông thường của chúng ta sử dụng bộ xử lý CISC (Complex Instruction Set Computer), đòi hỏi nhiều chu kì CPU để xử lý một lệnh xác định Do đó, các bộ xử lý RISC như StrongARM theo lý thuyết, có thể tính toán lên tới 206 triệu lệnh một giây nếu nó xử lý ở tốc độ 206 Mhz
Các bộ xử lý StrongARM và XScale cũng xử lý các lệnh 32bit, giống như PC thông thường Tuy nhiên, lại có một khác biệt lớn trong việc xử lý kích thước lệnh Bộ xử lý CISC cho phép lệnh có thể có chiều dài biến đổi, vì vậy, nó phải tính toán kích thước của dữ liệu cần đọc khi xử lý lệnh Trong kiến trúc RISC, mỗi lệnh 32bit sẽ có 32 dữ liệu đi kèm Vì vậy, bộ xử lý luôn biết được phải đọc bao nhiêu dữ liệu., đây là một điểm mạnh của kiến trúc này
Độ rộng của bus cùng với tốc độ bus cũng có một ảnh hướng lớn đến tốc độ xử lý và tính toán của máy tính Độ rộng của bus chỉ ra số lượng bit (hay byte) dữ liệu có thể đọc từ / ghi lên RAM vào bộ vi xử lý Còn tốc độ bus chỉ ra dữ liệu có thể được đọc từ RAM vào bộ vi xử lý với độ nhanh như thế nào Ta có thể hình dung, độ rộng bus như số làn giao thông trên xa lộ, còn tốc độ bus như giới hạn về tốc độ khi lưu thông Hiện này, StrongARM và XScale sử dụng bus tốc độ 100Mhz và thiết kế hiện nay của Pocket PC cho phép dùng bus 16bit Điều này có nghĩa là tốc độ bus tối đa là 200MB/giây
Trang 37KHOA CNTT –
ĐH KHTN
Vấn đề đặt ra ở đây là như vậy, bộ vi xử lý có thể đạt được tốc độ xử lý bao nhiêu Do chúng ta cần đọc 8bytes dữ liệu trước khi xử lý một lệnh, nên giả sử chúng ta có được tốc độ bus tối đa là 200MB/giây, thì thực sử, bộ xử lý chỉ thi hành được 25 triệu lệnh
Ngoài ra, lại có một vấn đề khác, đó là cache Cache là một loại RAM đặc biệt được chứa bên trong CPU và xử lý với cùng tốc độ của CPU Cache trong bộ xử lý StrongARM là 16K cho mã chương trình và 8K cho dữ liệu, cache trong XScale là 32K cho mã chương trình và 32K cho dữ liệu Nếu dữ liệu và mã chương trình cần xử lý được chứa trọn trong cache, hệ thống sẽ có thể thi hành với tốc độ thật của CPU Như vậy, tốc độ của ứng dụng có thể được thi hành sẽ có thể tăng từ 25 lên 206 triệu lệnh một giây, tuỳ theo chương trình và dữ liệu có vừa với kích thước cache không Tốc độ của hệ thống cũng phụ thuộc vào nguồn cung cấp năng lượng, do đó, khi sử dụng Pocket PC, ta có thể nhận thấy sự khác biệt về tốc độ khi thực thi chương trình
Bây giờ, sử dụng các để so sánh về hiệu suất hoạt động giữa máy DesktopPC và Pocket PC Các hệ thống Desktop PC hiện tại thường sử dụng bus 100-133 Mhz Pentium IV có thể sử dụng DDR RAM hoặc RAM BUS (RD RAM) có tốc độ từ 200-800Mhz Vì vậy, chỉ xét trên phuơng diện RAM, nếu sử dụng RAM 133Mhz, hiệu suất Desktop PC đã tăng 1/3 lần (25 lên 33 triệu lệnh một giây) Tốc độ CPU của Desktop cũng lớn hơn rất nhiều khi hiện tại đã đạt tới tốc độ trên 3Ghz dẫn đến hiệu suất toàn hệ thống cao hơn
Khi lập trình ứng dụng bản đồ trên Pocket PC, đặc điểm về bộ xử lý cũng như tốc độ của Pocket PC ảnh hưởng rất lớn đến tốc độ hiển thị, xử lý cũng như tìm kiếm thông tin GIS Để giải quyết vấn đề này, ta cần có những giải pháp phù hợp để tăng hiệu năng của ứng dụng, giúp người sử dụng có thể sử dụng được chương trình với tốc độ chấp nhận được
3.2 Tốc độ và các hỗ trợ khả năng hiển thị
Trang 38KHOA CNTT –
ĐH KHTN
Tương tự trên môi trường Windows – phiên bản desktop, các đối tượng trực quan như văn bản, đồ hoạ được GDI (Graphics Device Interface) điều khiển Với các hàm GDI này, ứng dụng có thể vẽ hoặc hiển thị đường thẳng, đường cong, các đường khép kín, văn bản và các bitmap Màu và kiểu của các đối tượng này dựa trên các đối tượng đồ hoạ mà lập trình viên tạo ra và sử dụng
GDI trên Windows CE cũng sử dụng một ngữ cảnh thiết bị (device context ) để lưu trữ dữ liệu cần được hiển thị trên thiết bị Các đối tượng đồ hoạ được lưu trữ trong device context ở môi trường Windows CE bao gồm một bút vẽ (pen) để vẽ nét, chổi vẽ (brush) để tô màu, font chữ để hiển thị chữ, bitmap phục vụ cho việc sao chép hoặc kéo, bảng màu (palette) để chỉ định màu vẽ, và vùng clipping Windows CE hỗ trợ ngữ cảnh thiết bị máy in (printer device context) của máy in để vẽ lên máy in, ngữ cảnh thiết bị hiển thị (display device context) để vẽ lên thiết bị video, ngữ cảnh bộ nhớ (memory device context ) để vẽ lên bộ nhớ
Khi xây dựng ứng dụng bản đồ trên Pocket PC, cần chú ý tới việc chỉ được sử dụng các tính năng GDI được hỗ trợ trên môi trường này Danh sách các tính năng được hỗ trợ được liệt kê trong bảng sau
Font Raster và TrueType Các font True Type có thể kéo giãn hoặc quay được.Hỗ trợ sẵn 7 font Raster trong ROM
Windows CE chỉ hỗ trợ một loại font, cả raster lẫn TrueType trên 1 loại thiết bị xác định
Bảng màu Hỗ trợ các độ sâu màu 1, 2, 4, 8, 16, 24, và 32 bits per pixel (bpp) Một bpp depth of 2 is unique to Windows CE
Các hàm dịch khối bit và thao tác theo vạch
Cho phép quay, định cỡ và nối các bitmap Enables you to transform and combine bitmaps Pen và brush Hỗ trợ các loại dashed, wide, và solid pen, patterned
Trang 39KHOA CNTT –
ĐH KHTN
brush
In Hỗ trợ in ấn đồ hoạ (graphics printing)
Con trỏ Hỗ trợ đầy đủ về con trỏ, bao gồm cả con trỏ do người dùng định nghĩa
Các thao tác vẽ hình (Shape drawing)
Hỗ trợ vẽ ellipse, polygon, rectangle, và round rectangle
Bảng 3-1: Các tính năng GDI được hỗ trợ trên Windows CE 3.0
Ta nhận thấy, do cần phải thu gọn kiến trúc cũng như các hỗ trợ nhằm mục đích tối ưu tốc độ cho các thiết bị nhúng có tài nguyên giới hạn, Windows CE đã chỉ cung cấp một cách giới hạn các tính năng của GDI
Windows CE GDI không hỗ trợ các đặc tính:
• Thay đổi toạ độ không gian, như SetMapMode, GetMapMode,
SetViewportExt, và SetWindowExt Tọa độ không gian sẽ tương ứng với
không gian của thiết bị
• Các hàm World Transform API
• Các hàm MoveTo và LineTo
• Con trỏ có màu sắc, con trỏ động (animated)
Và điều này cũng là một trong những lí do dẫn đến các thư viện đồ hoạ của MFC cũng không hỗ trợ rất nhiều hàm liên quan tới vấn đề hiển thị Thử nhìn qua các hàm không được hỗ trợ hoặc hỗ trợ nhưng có thay đổi của CWnd, lớp đối tượng hiển thị chuẩn của MFC, trên môi trường Windows CE 3.0, ta đã thấy rất nhiều tính năng quan trọng cần phải sử dụng trong ứng dụng bản đồ không được hỗ trợ Điều này sẽ gây khó khăn trong quá trình xây dựng chương trình
Trang 40KHOA CNTT –
ĐH KHTN
ArrangeIconicWindows OnDeviceChange OnNcRButtonDown CancelToolTips OnDevModeChange OnNcRButtonUp ChangeClipboardChain OnDrawClipboard OnPaintClipboard
CreateGrayCaret OnDSCNotify OnParentNotify
DlgDirListComboBox OnEnterIdle OnQueryEndSession
DlgDirSelect OnEnterMenuLoop OnQueryNewPalette DlgDirSelectComboBox OnExitMenuLoop OnQueryOpen
DragAcceptFiles OnGetMinMaxInfo OnRButtonDblClk DrawMenuBar OnHScrollClipboard OnRButtonDown EnableScrollBar OnIconEraseBkgnd OnRButtonUp EnableToolTips OnInitMenu OnRegisteredMouseWheelFilterToolTipMessage OnMButtonDblClk OnSetCursor
GetClipboardViewer OnMButtonUp OnSizing
GetDSCCursor OnMenuSelect OnStyleChanging GetLastActivePopup OnMouseActivate OnSysColorChange GetSystemMenu OnMouseWheel OnTimeChange GetUpdateRgn OnMoving OnToolHitTest GetWindowContextHelpId OnNcActivate OnVScrollClipboard GetWindowPlacement OnNcCalcSize OnWindowPosChanging GetWindowRgn OnNcCreate SetClipboardViewer
InvalidateRgn OnNcLButtonDblClk SetWindowContextHelpId
LockWindowUpdate OnNcLButtonUp SetWindowRgn
OnActivateApp OnNcMButtonDblClk ShowOwnedPopups OnAskCbFormatName OnNcMButtonDown ShowScrollBar
OnChangeCbChain OnNcMButtonUp UnockWindowUpdate OnChildActivate OnNcMouseMove ValidateRgn OnCompacting OnNcPaint
OnContextMenu OnNcRButtonDblClk
Bảng 3-2: Các hàm thuộc CWnd không được hỗ trợ trên Windows CE