Tìm hiểu lập trình ứng dụng trên hệ điều hành Symbian

MỤC LỤC

KỸ THUẬT CHUNG ĐỂ PHÁT TRIỂN HỆ ĐIỀU HÀNH SYMBIAN

    Symbian’s Generic Technology được thiết kế riêng cho các thiết bị truyền tin không dây nên nó phải đảm bảo những yêu cầu về việc sử dụng tài nguyên phải thật hiệu quả, đặc biệt là nguồn RAM và ROM, yêu cầu về việc truy cập tức thời đến dữ liệu của người dùng, tin cậy trong việc lưu trữ dữ liệu người dùng. Mặt khác, Framework của Symbian còn hỗ trợ cho văn bản ở cấp độ cao bao gồm text content model and rendering, hỗ trợ định dạng đoạn văn bản và ký tự, đồ hoạ kèm theo, những ký tự địa phương trên thế giới… Hỗ trợ phần in ấn, bao gồm đĩa cài đặt máy in cho từng loại máy in thật sự, và các máy tin từ PC nối tới qua Symbian Connect.

    Hình 2.4:  Framework
    Hình 2.4: Framework

    Các hàm APIs của hệ điều hành Symbian

    TCP/IP và sockets API

    Symbian OS còn cho phép các giao thức vận chuyển khác nhau được sử dụng chứ không riêng gì TCP/IP, mà còn có SMS hay hồng ngoại (infrared). Sự lựa chọn giao thức nào để sử dụng được thực hiện trong quá trình khởi tạo trong mã nguồn của ứng dụng, và những đoạn code còn lại thì cùng sự lựa chọn đó mà không cần quan tâm.

    Communication API – các hàm về giao tiếp

    HDH Symbian còn cung cấp socket API để truy cập đến các giao thức mạng. Nó cho phép viết các ứng dụng nhận và gửi các dữ liệu xác định trên kết nối internet.

    Các ứng dụng và dịch vụ

    TIẾN TRÌNH VÀ TIỂU TRÌNH TRONG SYMBIAN .1 Tiến trình

    Quản lý vào điều phối tiến trình

    Bộ điều phối tiến trình hoạt động theo cơ chế độ ưu tiên với nguyên lý không độc quyền sử dụng thuật toán điều phối Round Rubin: trong một chu kỳ, tiểu trình có độ ưu tiên cao nhất sẽ được chạy trước tiên, các tiểu trình khác ở trạng thái tạm hoãn (suspend). Nhân hệ thống kiểm tra độ ưu tiên của các tiểu trình tại đầu chu kỳ và sẽ phục hồi hoạt động (resume) cho tiểu trình nếu tiểu trình này có độ ưu tiên lớn hơn tiểu trình đang hoạt động. Thông thường, để xây dựng cơ chế quản lý sự kiện cho các tiến trình, các hệ điều hành sử dụng cơ chế đa tiểu trình (multi thread): ví dụ một tác vụ tính toán lâu và phức tạp được xử lý bởi một tiểu trình trong khi một tiểu trình khác tiếp tục chờ xử lý các sự kiện nhập của người dùng.

    Cơ chế này Symbian có hỗ trợ nhưng hiếm khi được dung do bộ vi xử lý không mạnh mẽ như trên máy tính và sử dụng tiểu trình cũng không phủ hợp với mô hình sử dụng server trên Symbian. Do đó Symbian đã sử dụng một cơ chế tối ưu hơn cho hoạt động của ứng dụng và các server: Đó là mọi vấn đề quản lý sự kiện và xử lý tác vụ đồng thời đều được thực hiện nhờ một đối tượng đặc biệt trong Symbian, active object.

    SYMBIAN LÀ HỆ ĐIỀU HÀNH ĐA NHIỆM

    Multithreading

    Mỗi tiến trình trong Symbian OS mặc định có 1 thread, có thể thêm các đoạn code vào ứng dụng để tạo thêm các thread khác để tạo một ứng dụng multithread. Mỗi thread có thể được cấp cho một độ ưu tiên tuyệt đối hoặc tương đối với độ ưu tiên của tiến trình cha, và bộ điều phối hệ thống sẽ dựa vào nó để điều phối.

    Co-operative multitasking

    - Quản lý ROM khá đơn giản, ROM bao gồm toàn bộ các file trong một cây thư mục trên ổ Z, được gắn với địa chỉ cố định để dữ liệu có thể được đọc trực tiếp dễ dàng, không cần thông qua file server. Chương trình được thực thi trực tiếp tại ROM và hình ảnh, font được dùng ngay trên ROM cho hiển thị màn hình thay vì phải nạp qua RAM. ( ROM và DULL được nạp vào RAM), vùng nhớ tiến trình (hình biểu tượng cho ứng dụng ( image) và các dữ liệu động) và vùng nhớ cho mỗi tiểu trình bao gồm một ngăn xếp stack rất nhỏ (12K) và một vùng heap.

    Do đó cần tránh dùng các biến cục bộ chiếm nhiều bộ nhớ , có thể làm tràn stack, nên đưa các biến này vào heap bằng phương thức new hay dùng User::Alloc(). Ở đây, một trang 4KB được chia nhỏ ra thành các vùng nhỏ hơn gọi là sector có kích thước 512 byte, phù hợp hơn cho các file có dung lượng nhỏ.

    Hình 2.13: Bộ nhớ RAM
    Hình 2.13: Bộ nhớ RAM

    QUẢN LÝ NGUỒN NĂNG LƯỢNG

    Do không có vùng nhớ ảo bằng cách thay thế trang trên đĩa cứng như trên PC nên tất cả các trang cần để phải lấy từ danh sách trống. Khi không còn trang trống nào mà lại có yêu cầu về bộ nhớ thì lỗi tràn bộ nhớ hoặc đĩa đầy sẽ xuất hiện.

    QUẢN LÝ THỜI GIAN

    CÁC NGÔN NGỮ DÙNG ĐỂ PHÁT TRIỂN ỨNG DỤNG TRÊN HĐH SYMBIAN

    Phát triển ứng dùng bằng C++

    Phát triển ứng dụng bằng Java

    Phát triển ứng dụng bằng WAP và HTML

    Các thiết bị dùng HDH Symbian, và máy giả lập đều có thể nối mạng nội bộ với nhau bằng cách dùng Windows NT Remote Access Services (RAS), để giảm bớt giá thành kiểm tra và tăng tốc độ kiểm tra lên.

    CÁC CHƯƠNG TRÌNH HOẠT ĐỘNG TRÊN SYMBIAN .1 File thực thi

    Cơ chế quản lý lỗi trên Symbian

    - Lỗi Lập trình : là những lỗi có thể sửa chữa bằng cách viết lại đoạn chương trình gây ra lỗi khi phát hiện. Loại lỗi này chúng ta thường gặp trong suốt quá trình phát triển ứng dụng. Những lỗi này không thể sửa chữa bằng cách lập trình lại được, vì vậy cần dự đoán để bao quát và có hướng xử lý khi các loại lỗi này xảy ra.

    Khi lỗi môi trường xảy ra, hàm gây ra lỗi sẽ ngưng hoạt động, tiến hành quét các chỉ thị, các hàm sẽ được thực this au hàm gây lỗi và chuyển đến phần xử lý lỗi đầu tiên mà nó tìm thấy trong các hàm này.

    Quản lý sự kiện

    Công cụ phát triển ứng dụng

    + Application Wizard: có chức năng tạo một thư mục dự án ban đầu cho ứng dụng. + EPOCfromMMP: chuyển file dự án .mmp thành file dự án hoạt động trên IDE VC NET. + Biên dịch tài nguyên: Tài nguyên được biên dịch riêng với trình công cụ biên dịch tài nguyên dòng lệnh với rcomp, epocrc.

    + Biên dịch ứng dụng: trong các bộ SDK cung cấp các trình công cụ để biên dịch ứng dụng từ dòng lệnh.

    LẬP TRÌNH JAVA TRÊN HỆ ĐIỀU HÀNH SYMBIAN

    • PHIÊN BẢN J2ME VÀ CƠ CHẾ ĐỘC LẬP PHẦN CỨNG
      • Micro Edition (J2ME)

        J2ME chia làm các nhóm cấu hình cho các thị trường thiết bị khác nhau trong đó CLDC(Connected Limited Device Configguration) là cấu hình dùng cho thiết bị di động cấp thấp như điện thoại di động và PDA. Tầng máy ảo Java bao gồm KVM (K Virtual Machine) là bộ biên dịch mã Bytecode có nhiệm vụ chuyển mã bytecode của chương trình Java thành ngôn nhữ máy để chạy trên thiết bị di động. Tầng này cung cấp một sự chuẩn hoá cho các thiết bị di động để ứng dụng J2ME sau khi đã biên dịch có thể biên dịch trên bất kì thiết bị di động nào có J2ME sau khi đã biên dịch có thể hoạt động trên bất kì thiết bị di động nào có J2ME KVM.

        - Kết nối cáp dữ liệu từ PC sang cổng dữ liệu của điện thoại di động: Việc này yêu cầu người dùng phải có tập tin JAR thật sự và phần mềm truyền thông để download ứng dụng sang thiết bị di động qua cáp dữ liệu. Form là lớp hữu dụng nhất của các lớp Screen vì nó cho phép chứa nhiều item trên cùng một màn hình, các item có thể là DateField, TextFiels, ImageItem, TextItem, ChoiceGroup. Khi cài đặt MIDlet thành công, biểu tượng chương trỡnh MIDlet xuất hiện trong Application Laucher thỡ MIDlet cú thể thực thi bằng cỏch chọn nú như các chương trỡnh ứng dụng viết bằng C++.

        Hóng Sun cung cấp bộ cụng cụ phỏt triển JDK thỏng 2 năm 1996 giúp các lập trỡnh viờn có thể Test và chạy thử chương trỡnh của mỡnh mà khụng cần phải cú mỏy điện thoại thật.

        Hình 3.2: Kiến trúc J2ME
        Hình 3.2: Kiến trúc J2ME

        XÂY DỰNG ỨNG DỤNG 4.1 HƯỚNG TIẾP CẬN

        THIẾT BỊ ĐƯỢC SỬ DỤNG ĐỂ MÔ PHỎNG

        THIẾT KẾ KIẾN TRÚC VÀ CHỨC NĂNG CỦA ỨNG DỤNG .1 Chức năng của phần mềm tra cứu từ điển trên mobile

        • Thiết kế kiến trúc của ứng dụng

          CSDL của chương trình được thiết kế sử dụng các file text (text) .Các bộ từ sẽ được ghi vào các file text khác nhau dựa vào chữ cái đầu của từ. Cái file đó sẽ được đánh tên bằng các chữ cái đầu , danh sách các chữ cái đầu và tên file được lưu vào 1 file chỉ mục để tiện cho việc tìm kiếm. Khi một điều khiển nào đó có sự thay đổi trạng thái (ở đây là ô tìm kiếm ) thì phương thức tương ứng (itemStateChanged) sẽ được kích hoạt.

          // getFileName() : lấy tên file từ điển dựa vào chữ cái đầu của từ cần tìm final String fileName = this.dictIndex.getFileName(wordSmallCases);. Phương thức getFileName(final String word): có tác dụng dựa vào từ nhập vào (chữ cái đầu tiên) và file chỉ mục index.dat sẽ trả về tên của tệp chứa bộ từ. Sau khi có được thứ tự của từ gần đúng nhất thì phương thức linearSearch() sẽ tìm những từ gần đúng tiếp theo kể từ từ đầu tiên với số lượng yêu cầu và sẽ trả về Vector chứa kết quả.

          // duyệt từng từ trong mảng chứa từ bắt dầu từ cái từ đàu tiền tìm thấy for (int i=startIndex; i < this.dictKeys.length; i++) {.

          Hình 4.1: Giao diện chính của chương trình
          Hình 4.1: Giao diện chính của chương trình