Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.88 MB, 157 trang )
<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">
GIÁO VIÊN HƯỚNG DẪN
Luận văn của chúng em sẽ rất khó hồn thành nếu khơng có sự truyền đạt kiến thức q 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 tồn thể gia đình, những người đã ni 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 ln 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 hồ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 q 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
</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">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.
<b>Với ý tưởng trên, chúng em đã tập trung thực hiện đề tài “XÂY DỰNG </b>
<b>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ữ </b>
liệu là bản đồ Tp.Hồ Chí Minh.
</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">đề 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.
<b>Chương 2: Tổng quan về Pocket PC và Windows CE 3.0 giới thiệu tổng </b>
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.
<b>Chương 3: Các vấn đề khi xây dựng ứng dụng bản đồ trên Pocket PC </b>
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 tốn, hiển thị, vấn đề lưu trữ trên Pocket PC.
<b>Chương 4: Các giải pháp cho ứng dụng bản đồ trên Pocket PC giới thiệu </b>
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.
<b>Chương 5: Tổ chức dữ liệu bản đồ trên Pocket PC trình bày về dữ liệu </b>
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.
<b> Chương 6: Ứng dụng Pocket Map giới thiệu về ứng dụng bản đồ điện tử </b>
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.
<b>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, </b>
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.
</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">1.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
<b>Chương 2 :Tổng quan về Pocket PC và Windows CE 3.0... 5</b>
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
<b>Chương 3 :Một số vấn đề khi xây dựng ứng dụng bản đồ trên Pocket PC ... 20</b>
3.1 Khả năng tính tố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
<b>Chương 4 :Các giải pháp cho ứng dụng bản đồ trên Pocket PC . 31</b>4.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
</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">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
</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">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
</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">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 tố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
</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">Bả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
</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">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.
</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">Ví 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ó
</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">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
</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17"><b>1.1 GIS, các ứng dụng và giải pháp về GIS </b>
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:
<b>• Giải quyết các bài tốn phức tạp liên quan đến mạng giao thơng </b>
Các bài tố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.
<b>• Hiển thị và tìm kiếm các thơng tin bản đồ. </b>
Đâ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
</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18"><b>1.2 Ứng dụng GIS trên Pocket PC </b>
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. Ngồ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...
</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19"><b>1.3 Các giải thuật nghiên cứu về GIS </b>
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.
<b>1.4 Mục tiêu của đề tài </b>
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.
</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">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 tố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...)
</div><span class="text_page_counter">Trang 21</span><div class="page_container" data-page="21"><b>2.1 Giới thiệu về các thiết bị PDA </b>
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 q 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 tố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 tố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
</div><span class="text_page_counter">Trang 22</span><div class="page_container" data-page="22">Windows 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ễ chun 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.
</div><span class="text_page_counter">Trang 23</span><div class="page_container" data-page="23">Pocket 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...
<b>Ghi chú: </b>
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.
</div><span class="text_page_counter">Trang 24</span><div class="page_container" data-page="24"><b>2.4 Khả năng lập trình trên Pocket PC và Windows CE 3.0 </b>
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.
<b>2.4.1 Các hàm Win32 API </b>
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
</div><span class="text_page_counter">Trang 25</span><div class="page_container" data-page="25">Cấu hình hệ thống cho chương trình trên Windows CE tồ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:
<b>2.4.2 Các hàm API và SDK phụ trợ </b>
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
</div><span class="text_page_counter">Trang 26</span><div class="page_container" data-page="26"><b>2.4.2.1 Truyền thông đa phương tiện (Multimedia) </b>
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.
<b>2.4.2.2 WinSock </b>
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.
<b>2.4.2.3 Telephony API (TAPI) </b>
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.
<b>2.4.2.4 Mail API (MAPI) </b>
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.
<b>2.4.2.5 Active Data Objects (ADO) </b>
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.
<b>2.4.3 Các thư viện C-Runtime </b>
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
</div><span class="text_page_counter">Trang 27</span><div class="page_container" data-page="27">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 tố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 tố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
</div><span class="text_page_counter">Trang 28</span><div class="page_container" data-page="28">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ó
</div><span class="text_page_counter">Trang 29</span><div class="page_container" data-page="29"><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ợ.
<b>2.4.4 Các thư viện chuẩn C++ </b>
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)
<b>2.4.5 Tiến trình và tiểu trình </b>
<b>2.4.5.1 Hạn chế </b>
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
</div><span class="text_page_counter">Trang 30</span><div class="page_container" data-page="30">(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 hồn tồ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
</div><span class="text_page_counter">Trang 31</span><div class="page_container" data-page="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
</div><span class="text_page_counter">Trang 32</span><div class="page_container" data-page="32">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 ngun đượ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
<b>2.4.5.2 Đồng bộ hố tiểu trình </b>
Đồng bộ hố 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ó q 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
</div><span class="text_page_counter">Trang 33</span><div class="page_container" data-page="33">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ộ hố • 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ộ hố nhiều tiến trình, thì nên sử dụng miền găng bởi
<i><b>độ nhanh trong xử lý của nó trên thiết bị sử dụng WinCE (xin tham khảo [ 6]) </b></i>
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ử
</div><span class="text_page_counter">Trang 34</span><div class="page_container" data-page="34">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.
<b>2.4.6 Vấn đề Unicode </b>
Ở 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
<i>bằng các macro #ifdef _WIN32_WCE và UNICODE. </i>
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
</div><span class="text_page_counter">Trang 35</span><div class="page_container" data-page="35">Nế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.
</div><span class="text_page_counter">Trang 36</span><div class="page_container" data-page="36"><b>3.1 Khả năng tính tốn của Pocket PC </b>
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 tố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 tố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ý ln 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 tố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.
</div><span class="text_page_counter">Trang 37</span><div class="page_container" data-page="37">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.
Ngồ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 tồ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.
<b>3.2 Tốc độ và các hỗ trợ khả năng hiển thị </b>
</div><span class="text_page_counter">Trang 38</span><div class="page_container" data-page="38">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
</div><span class="text_page_counter">Trang 39</span><div class="page_container" data-page="39">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:
<b>• Thay đổi toạ độ không gian, như SetMapMode, GetMapMode, </b>
<b>SetViewportExt, và SetWindowExt. Tọa độ không gian sẽ tương ứng với </b>
không gian của thiết bị.
• Các hàm World Transform API
<b>• Các hàm MoveTo và LineTo </b>
• 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 q trình xây dựng chương trình.
</div><span class="text_page_counter">Trang 40</span><div class="page_container" data-page="40">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
</div>