Cài đặt gói nhận dạng trên Mobile

Một phần của tài liệu Môi trường phát triển phần mềm nhúng cho các thiết bị di động (Trang 72)

Sử dụng Visual Studio.Net 2005 để thiết kế giao diện và xây dựng cấu trúc gói nhận dạng gồm các lớp như Hình 4.17:

Hình 4.17. Giao diện và cấu trúc các lớp gói Mobile

Hoạt động chung của gói nhận dạng được thực hiện theo tiến trình:

- Nạp mảng trọng số: mảng trọng số thu được từ quá trình huấn luyện mạng trên Desktop.

- Chọn file ngôn ngữ: nạp nội dung file ngữ nghĩa vào mảng nghĩa. - Nạp ảnh: nạp ảnh chứa các ký tự cần nhận dạng.

- Nhận dạng: dựa vào mảng trọng số và các tín hiệu đầu vào, thực hiện các tính toán trên mạng nơ-ron để tạo ra tập các tín hiệu ra. Các tín hiệu ra tương ứng với một ký tự được tạo thành một khoá để sử dụng làm chỉ số của phần tử nghĩa từ trong mảng ngữ nghĩa.

nhúng cho các thiết bị di động

Các bước này được thực hiện bằng các hàm xử lý sự kiện trên form giao diện Mobile như sau:

/// <summary>

/// Ham nap mang ngu nghia /// </summary>

/// <param name="sender"></param> /// <param name="e"></param>

private void btnSemanticFile_Click(object sender, EventArgs e) {

openImgFile.ShowDialog();

StreamReader objSR = new StreamReader(openImgFile.FileName); LookupSemantic objL = new LookupSemantic();

objL.LoadDictionary(objSR); objSR.Close();

}

/// <summary>

/// Ham nap mang trong so /// </summary>

/// <param name="sender"></param> /// <param name="e"></param>

private void btnSaveFile_Click(object sender, EventArgs e) {

openImgFile.ShowDialog();

StreamReader objSR = new StreamReader(openImgFile.FileName); RecognitionProcess objReg = new RecognitionProcess();

objReg.LoadNetwork(objSR); objSR.Close(); } /// <summary> /// Nap anh ky tu /// </summary> /// <param name="sender"></param> /// <param name="e"></param>

private void btnLoadImg_Click(object sender, EventArgs e) {

LoadImage(); }

nhúng cho các thiết bị di động

Cài đặt tiến trình nhận dạng trên gói Mobile: /// <summary>

/// Ham su kien tren nut nhan dang btnReg /// </summary>

/// <param name="sender"></param> /// <param name="e"></param>

private void btnReg_Click(object sender, EventArgs e) {

//1. Goi ham xu ly dau vao

MobileInputProcess objMIProcess = new MobileInputProcess(); objMIProcess.CreateSetMatrixPixelOfCharacter();

//2. Goi cac ham nhan dang

RecognitionProcess objReg = new RecognitionProcess(); objReg.CreateOutputForAllInput();

//3. Goi cac ham tra nghia tu

LookupSemantic objLook = new LookupSemantic(); objLook.CreateKeyArray();

objLook.LookupMeanning();

//4. Hien thi xau ket qua: String strResult = "Ket qua: ";

for (int i = 0; i < MobileInputResult.NumOfCharacters; i++) {

strResult += Convert.ToString(SemanticMap.arResultMeanning[i]) + " "; }

txtResult.Text = strResult; }

Chi tiết mã nguồn cài đặt các lớp trong gói Mobile sẽ được trình bày trong Phụ lục B

nhúng cho các thiết bị di động 4.5. Kết quả thực nghiệm

Bộ dữ liê ̣u mẫu huấn luyện là mô ̣t ảnh chứa 400 ký tự chữ Nôm chuẩn . Tâ ̣p mẫu ra chuẩn : đươ ̣c ta ̣o ngươ ̣c từ bô ̣ khóa , mỗi khóa thu ộc đoạn 1- 400 được chuyển thành mô ̣t mảng nhi ̣ phân 16 phần tử. Quá trình huấn luyện mạng thực hiện bằng gói Desktop như trong Hình 4.18:

nhúng cho các thiết bị di động

Hê ̣ thống đươ ̣c thử nghiê ̣m trên môi trường Windows Mobile 5.0 với thiết bị mô phỏng Pocket PC 2003. Một số giao diện và kết quả thử nghiệm với tập mẫu huấn luyện gồm 400 mẫu sử dụng để huấn luyện mạng trên Desktop sau đó đưa file trọng số lên Pocket PC để nhận dạng được chỉ ra dưới đây:

- Form giao diện ứng dụng như mô tả trong Hình 4.19:

Hình 4.19. Form ứng dụng trên PocketPC

- Giao diện nạp file trọng số và file từ điển như trong Hình 4.20:

nhúng cho các thiết bị di động - Giao diện nạp ảnh như Hình 4.21:

Hình 4.21. Giao diện nạp ảnh nhận dạng

- Một số kết quả nhận dạng như Hình 4.22:

nhúng cho các thiết bị di động

Trong quá trình kiểm thử, chúng tôi cũng đã tiến hành một số thử nghiệm trên gói Desktop với các tập mẫu có số lượng mẫu khác nhau và cho nhận dạng lại một phần trong tập mẫu đã học. Số lượng mẫu trong tập mẫu huấn luyện mạng thay đổi từ 50 đến 4232. Kết quả được thống kê trong Hình 4.23:

nhúng cho các thiết bị di động

KẾT LUẬN

Từ các nội dung đã trình bày ở trên, chúng ta thấy các hệ thống nhúng, phần mềm nhúng có ý nghĩa đặc biệt quan trọng trong đời sống xã hội. Việc nghiên cứu xây dựng các hệ thống nhúng, phần mềm nhúng giúp chúng ta có tầm nhìn chiến lược, có định hướng đúng đắn về xu hướng phát triển của công nghệ thông tin. Đồng thời căn cứ vào đó để có những kế hoạch cụ thể từng bước phát triển công nghệ thông tin nước ta cả về chất và lượng, giúp công nghệ nước ta không bị tụt hậu quá xa so với các nước phát triển. Tuy nhiên, hệ thống nhúng là lĩnh vực rất rộng, ở Việt Nam mới phát triển ở mức sơ khai do đó luận văn chỉ tập trung vào nghiên cứu các môi trường phát triển phần mềm nhúng cho các thiết bị di động. Nội dung luận văn đã trình bày và tổng hợp cũng như xây dựng thử các ví dụ chạy trên một số môi trường điển hình là: RTOS, Symbian, .NET Compact Framework, J2ME.

Trên cơ sở lý thuyết đó, chúng tôi đã xây dựng thử nghiệm ứng dụng nhận dạng chữ Nôm trên môi trường Pocket PC với .NET Compact Framework. Ứng dụng được thử nghiệm với 400 ký tự truyện Kiều 1866 để huấn luyện trên Desktop sau đó sử dụng mảng trọng số cho mô-đun Mobile nhận dạng với một phần trong mẫu đã học thì thu được kết quả khả quan nhưng khi tiến hành các thử nghiệm khác trên Desktop với số lượng mẫu lớn thì kết quả nhận dạng còn thấp. Tuy chưa đạt được kết quả mong muốn và còn nhiều vấn đề cần khắc phục nhưng thực nghiệm nhận dạng chữ Nôm trên Pocket PC cũng có ý nghĩa nhất định góp phần nhỏ trong định hướng khôi phục văn hoá dân tộc. Từ kết quả nghiên cứu và thực nghiệm luận văn cũng mở ra một số hướng nghiên triển sau:

Một là tiếp tục tìm hiểu về hệ điều hành thời gian thực và các mô hình tích hợp phần mềm nhúng thời gian thực trong đó đi sâu về hệ điều hành C/OS.

Hai là tiến hành thử nghiệm tối ưu cấu trúc mạng nơ-ron để tăng độ chính xác cho bài toán nhận dạng chữ Nôm.

Ba là tích hợp ứng dụng nhận dạng chữ Nôm trên các môi trường khác như: Symbian, J2ME.

Bốn là mở rộng ứng dụng nhận dạng chữ Nôm trên Desktop như: từ điển đa mức Nôm - Việt – Anh, nhận dạng chữ Nôm viết tay.

nhúng cho các thiết bị di động

TÀI LIỆU THAM KHẢO

Tiếng Việt:

[1]. PGS.TS. Nguyễn Ngọc Bình, “MỘT SỐ Ý KIẾN VỀ PHÁT TRIỂN, ỨNG DỤNG CÔNG NGHỆ THÔNG TIN CỦA VIỆT NAM”, Hội thảo Quốc gia “Hội nhập Quốc tế về Khoa học và Công nghệ”, Bộ KH-CN, 2005.

[2]. PGS. TS Phạm Thượng Cát, “HỆ THỐNG NHÚNG VÀ SỰ PHÁT TRIỂN CỦA CÔNG NGHỆ THÔNG TIN”, 2005.

[3]. Phan Anh Dũng, Dương Văn Việt, Hoàng Thị Ngọc Dung - Trung tâm công nghệ thông tin Thừa Thiên Huế, “Đưa Chữ Hán -Nôm Vào Thiết Bi ̣ Cầm Tay ”, 2006.

[4]. Phan Anh Dũng, Nguyễn Thế, “Từ điển Trực tuyến Việt-Hán-Nôm”, Hội nghị chữ Nôm 2006.

[5]. Phòng nhận dạng và xử lý ảnh Viện công nghệ thông tin , “Báo cáo phần mềm nhận dạng chữ Viê ̣t in ”, 2000.

Tiếng Anh:

[6]. Daniel Admassu, “Unicode Optical Character Recognition”, Advertise on the Code Project , 2006.

[7]. David E.Simon, “An Embedded Software Primer”, 1999, ISBN 0-201-61569. [8]. Jack G.Ganssle, “Art of Designing Embedded Systems”, 2003.

[9]. Jean J.Labross, “Embedded Systems, Building Blocks, Complete and Ready to Use, Modules in C”, R&D Books, 2002.

[10]. Jean J. Labrosse, “uCOS-II, the real-time kernel”, R&D Publication 1999. [11]. John.Wiley.and.Sons, “Programming.Java.2.Micro.Edition.for.Symbian”, Jul.2004.

[12]. Karim Yaghmour, “Building Embedded Linux Systems”, Publisher: O’Reilly, 2003.

[13]. Michael Barr, Anthony Massa, “Programming Embedded Systems”, 2003. [14]. Martin Tasker – Jonathan Allin – Jonathan Dixon, “Professional Symbian Programming”, 2002.

[15]. Michael Barr, “Programming Embedded System in C and C++”, Publisher: O'Reilly , First Edition January 1999.

nhúng cho các thiết bị di động

[16]. Microsoft Coporation, “Visual Studio 2005 Documentation”.

[17]. Qing Li and Carolyn Yao, “Real-Time Concepts for Embedded Systems”, ISBN:1578201241, CMP Books © 2003.

[18]. Sacha Barber, “An introduction into Neural Networks”, 2003, pp 277-280. [19]. Stephen C. Perry, “Core C# and .NET”, September 06, 2005.

Website: [20]. http://02hcb.net/forum/forumdisplay.php. [21]. http://www.thongtinmobile.com. [22]. http://www.vietnamnet.vn. [23]. http://www.Micrium.com. [24]. http://codeproject.com. [25]. https://communicationmarket. [26]. http://www.CoreJ2ME.com. [27]. http://www.forum.nokia.com. [28]. http://java.sun.com/j2me. [29]. http://www.symbian.com. [30]. http://www.sourceforge.net. [31]. http://www.microsoft.com/windowsembedded

nhúng cho các thiết bị di động

PHỤ LỤC A. Windows Embedded CE 6.0

Phụ lục này nhằm bổ sung thêm thông tin cho mục môi trường phát triển .NET Compact Framework trên Windows Mobile. Nội dung trong phụ lục trình bày tổng quan về họ Windows CE, quan hệ giữa Windows CE và Windows Mobile, chi tiết về Windows Embedded CE 6.0 [31].

A.1. Các hệ điều hành họ Windows CE

Lịch sử phát triển của Windows Mobile đã trình bày trong phần trước. Do đó ở đây chỉ đưa ra mô hình phát triển của họ Windows CE để làm nổi bật quan hệ giữa các hệ điều hành họ Windows CE và quan hệ giữa chúng. Mô hình tiến hóa của họ Windows CE được chỉ ra một cách tổng quan trong Hình A.1 [31] sau:

Hình A.1. Lịch sử Windows CE

Lịch sử phát triển của Windows Mobile được chỉ ra trong Hình A.2 [31]:

nhúng cho các thiết bị di động

Đến năm 2007, Windows Mobile 6.0 ra đời dựa trên Windows Mobile 5.0. Các tính năng chính của Windows Mobile phiên bản 5.0, 6.0 và tương lai chỉ ra trong Hình A.3 [31]:

Hình A.3. Tính năng của một số phiên bản Windows Mobile

Từ lịch sử phát triển hệ điều hành họ Windows CE có thể thấy Windows Mobile được phát triển dựa trên Windows CE và hỗ trợ thêm các tính năng mới. Quan hệ giữa hai hệ điều hành này được chỉ rõ trong Hình A.4 [31] sau:

Hình A.4. Quan hệ giữa Windows CE và Windows Mobile

Theo quan hệ của các hệ điều hành họ Windows CE đã trình bày ở trên ta thấy Windows Mobile có mức trừu tượng cao hơn, dễ dàng phát triển ứng dụng hơn nhưng mức độ can thiệp phần cứng của Windows Embedded CE 6.0 lại sâu hơn vì thế Windows Embedded sẽ thích hợp hơn cho các hệ thống nhúng dụng hệ điều hành họ Windows CE. Trong phần sau sẽ trình bày chi tiết về hệ điều hành Windows Embedded CE 6.0.

nhúng cho các thiết bị di động A.2. Windows Embedded CE 6.0

A.2.1. Tính năng của Windows Embedded CE 6.0

Ngoài các tính năng được hỗ trợ bởi Windows CE 5.0, hệ điều hành nhúng Windows Embedded CE 6.0 có các tính năng nổi bật [31] sau:

- Khả chuyển, tương thích và hỗ trợ nền tảng: là hệ điều hành có nhân đa nhiệm ưu tiên, hỗ trợ kiến trúc bộ nhớ ảo và xử lý đa luồng.

- Quản lý tiến trình theo chế độ người dùng (user mode) và chế độ nhân (kernel mode).

- Độc lập kiến trúc phần cứng.

- Hỗ trợ nhiều vi xử lý: ARM, MIPS, SH4, x86. - Có thể chọn nhiều thiết bị lưu trữ.

- Là hệ điều hành thời gian thực cho các thiết bị vừa.

A.2.2. Kiến trúc Windows Embedded CE 6.0

Đăc điểm của Windows Embedded CE 6.0 so với Windows CE 5.0 là kiến trúc dựa trên bộ nhớ ảo. Nghĩa là không gian địa chỉ logic của tiến trình tách biệt với không gian địa chỉ vật lý nhờ đó mà không gian nhớ dùng cho nhân được bảo vệ tốt hơn. Với vi xử lý 32 bits, không gian bộ nhớ ảo là 232 (4GB) trong đó sử dụng 2GB cho không gian địa chỉ nhân và 2GB cho không gian địa chỉ tiến trình người dùng. Kiến trúc mô hình bộ nhớ ảo như Hình A.5 [31] sau:

Hình A.5. Mô hình bộ nhớ ảo trong Windows Embedded CE 6.0

nhúng cho các thiết bị di động

Việc ánh xạ không gian địa chỉ logic vào không gian địa chỉ vật lý thực hiện như Hình A.6:

Hình A.6. Không gian địa chỉ logic và không gian địa chỉ vật lý

Dựa trên mô hình bộ nhớ ảo, Windows Embedded CE 6.0 được xây dựng với kiến trúc như trong Hình A.7:

nhúng cho các thiết bị di động

A.2.3. Lập trình ứng dụng trên Windows Embedded CE 6.0

Với kiến trúc đã đề cập trong phần trước, việc xây dựng ứng dụng trên Windows Embedded CE 6.0 cũng như trên Windows CE tuân theo mô hình trong Hình A.8 [31]:

Hình A.8. Mô hình lời gọi hệ thống trong Windows Embedded CE 6.0 Môi trường lập trình ứng dụng trên Windows Embedded CE 6.0 hỗ trợ các ngôn ngữ C/C++, C#, VB.net. Với kiến trúc đã đề cập trước, việc thay đổi nhân không ảnh hưởng đến các ứng dụng mức trên vì tiến trình người dùng làm việc với nhân thông qua các giao diện chính là các lời gọi hệ thống. Đồng thời nhân Windows Embedded CE 6.0 có tính mô-đun cao, làm việc với nhiều trình điều khiển thiết bị và có khả năng làm việc với các trình điều khiển mới thông qua các giao diện cổng và tuân theo chuẩn của các dịch vụ hệ thống. Do vậy một tính năng chắc chắn sẽ làm cho Windows Embedded CE 6.0 trở lên phổ biến chính là khả năng biên dịch lại và đóng gói ứng dụng tùy biến theo thiết bị. Ý tưởng này cũng giống như việc biên dịch nhân trong Linux hoặc Linux nhúng (Embedded Linux – là nhân Linux được dịch cho một thiết bị nhúng). Thuật ngữ OS Design có ý nghĩa tổng quan nói lên việc biên dịch Windows Embedded CE 6.0 cho một thiết bị cụ thể dựa trên các gói công cụ đưa thêm vào IDE Visual Studio.NET 2005 hoặc mới hơn.

Việc xây dựng ứng dụng trên Visual Studio.NET 2005 có cài thêm các công cụ hỗ trợ Windows Embedded CE 6.0 được thực hiện tương đối trực quan như đã đề cập trong phần môi trường .NET Compact Framework cho Windows Mobile. Dưới đây là ví dụ về mã nguồn đọc/ghi file cho ứng dụng dòng lệnh trên Windows Embedded CE 6.0:

// FileIO.cpp : Defines the entry point for the console application. // FileIO demo program

// Shows how to create, write, and read a file using CE file APIs // Remember CE uses 16-bit Unicode for character strings!

nhúng cho các thiết bị di động // _T("....") generates a Unicode string

// TCHAR is a Unicode string type #include "stdafx.h"

int _tmain(int argc, TCHAR *argv[], TCHAR *envp[]){ HANDLE hFile;

DWORD cBytes;

char cBuffer[] = "Hello File World\n"; printf("\nCreating CE_Demo.txt file\n"); // Open File for Write

hFile = CreateFile(_T("\\Temp\\CE_Demo.TXT"), GENERIC_WRITE,

FILE_SHARE_WRITE, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);

// Check for file open errors

if (hFile == INVALID_HANDLE_VALUE){ printf("file write open errors\n"); Sleep(1000);

return 0; }

if (!WriteFile(hFile, cBuffer, strlen(cBuffer), &cBytes, NULL)){ printf("file write errors\n");

Sleep(1000); return 0; }

// Close File

CloseHandle(hFile); // Open File again for read

hFile = CreateFile(TEXT("\\Temp\\CE_Demo.TXT "), GENERIC_READ, FILE_SHARE_READ, NULL,

OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); // Check for file open errors

if (hFile == INVALID_HANDLE_VALUE){ printf("file read open errors\n"); Sleep(1000);

return 0; }

// Read back data just written to new file

if (!ReadFile(hFile, cBuffer, 79, &cBytes, NULL)){ printf("file read errors\n");

Sleep(1000); return 0; }

// Display Data read back and delay 4 seconds before exiting printf("%s\n",cBuffer,cBytes);

printf("the file data was written and read back OK\n"); Sleep(4000); // Close File CloseHandle(hFile); return 1; }

nhúng cho các thiết bị di động

PHỤ LỤC B. Mã nguồn các lớp gói Mobile

B.1. Lớp giao diện gói Mobile: frmMainApp using System; using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Threading; using System.IO; using MobileDevNOMRegconition1._0.AppClasses; namespace MobileDevNOMRegconition1._ {

public partial class Form1 : Form {

#region Cac thuoc tinh /// <summary>

/// Anh chua cac ky tu can nhan dang /// </summary>

public static Bitmap InputImage; public Form1()

{

InitializeComponent(); }

/// <summary>

/// Ham nap mang ngu nghia /// </summary>

/// <param name="sender"></param> /// <param name="e"></param>

private void btnSemanticFile_Click(object sender, EventArgs e) {

openImgFile.ShowDialog();

StreamReader objSR = new StreamReader(openImgFile.FileName);

Một phần của tài liệu Môi trường phát triển phần mềm nhúng cho các thiết bị di động (Trang 72)

Tải bản đầy đủ (PDF)

(112 trang)