Cài đặt các nhĩm lệnh xử lý của Grass

Một phần của tài liệu NGHIÊN CỨUCHUYỂN đổi PHẦN mềm GRASS từ nền UNIX lên WINDOWS (Trang 124 - 129)

1) Nhĩm lệnh D.*

KHOA CNTT Ờ

ĐH KHTN

Được cài đặt trong thư mục SRC\DISPLAY

Bằng cách sử dụng lại các hàm thư viện được cung cấp trong LIBES, các lệnh thuộc nhĩm Display sau được cài đặt :

a. Lệnh d.mon

Lệnh này cĩ các tham số: start, stop, select, status, release, list, which Vắ dụ: d.mon start=x0 sẽ khởi tạo cửa sổđồ họa monitor x0

d.mon select=x0 sẽ chọn cửa sổ x0 là cửa sổ mặc định

i) Cấu trúc

o Nằm trong thư mục SRC \ DISPLAY \ D.MON \

o Khi gọi thực hiện lệnh này thì hàm main() trong thư mục D.MON \ CMD \ sẽđược thực hiện đầu tiên, nĩ phân tắch cú pháp của chuỗi lệnh được nhập vào, rồi dựa vào tham số được phân tắch ra để quyết định gọi thực hiện module nào trong thư mục D.MON \ PGMS \

o Thư mục D.MON \ PGMS \ sẽ cài đặt các module khác nhau của ham d.mon và các module này sẽ được dịch độc lập ra đối tượng riêng lẻ .obj , để sau này các hàm khác gọi thực hiện chúng (trong Linux)

Vắ dụ:

- Lệnh d.mon start=x0 sẽđược cài đặt trong file PGMS\start.c

- Lệnh d.mon stop=x0 sẽđược cài đặt trong file PGMS\stop.c

.... Ghi chú:

KHOA CNTT Ờ

ĐH KHTN

ẳ Hàm d.mon start là các hàm rất đặc biệt, nĩ thực hiện mở một cửa số monitor bằng cách mở XDRIVER, là một giao thức (protocol) để giao tiếp với

XWindow của Linux. Cách thức chạy của nĩ dựa vào cơ chế SendMessage riêng, sẽđược trình bày trong phần sau.

Cịn thư mục D.MON \ INTER \ chỉ để cài đặt giao diện trực quan (Visual) dùng để tương tác với người dùng, nĩ cũng phải gọi lại các module được cài đặt trong thư mục PGMS trên.

ii) Cách thức chuyển đổi d.mon

- Do đây khơng phải là thư viện, và cách thức biên dịch cũng khác với Win32 (gọi thực hiện một command obj bên ngồi), nên cách chuyển đổi của chúng em ở đây là đọc hiểu cơ chế thực hiện của chương trình, mơ hình hĩa cơ chế đĩ, sau đĩ viết lại hồn tồn cơ chếđĩ trên Win32

- Mơ tả sơ bộ cách thức hoạt động của hàm d.mon start:

Khi hàm d.mon start=xi được gọi (xi = x0, x1, x2, Ầ, là danh sách các monitorname nằm t trong file monitorcap Ờ xem phần sau), chương trình sẽ làm các cơng đoạn sau:

Ớ Tựđộng gọi thực hiện module d.mon select=xi

Ớ Cập nhật biến mơi trường MONITOR=xi .

Ớ Khởi tạo cửa sổ Driver XWindow ỘxiỢ

Ớ Duyệt trong file monitorcap để mở ra 2 file fifo tương ứng. (thường là : dev/fifo.ia, dev/fifo.ib )

Ớ Gọi chạy một process song song để kiểm tra file input là fifo.ia liên tục, xem coi cĩ EVENT nào được gửi tới cho MONITOR xi hay khơng? Nếu cĩ thì thực hiện hành

KHOA CNTT Ờ

ĐH KHTN

động đáp ứng tương ứng với EVENT nhận được. (Cụ thể là nếu EVENT gọi vẽ ra màn hình XWindow ỘxiỢ thì dùng các hàm X để vẽ, cịn nếu EVENT yêu cầu trả về

một kết quả tắnh tốn thì sẽ tắnh tốn để trả kết quả về bằng cách ghi kết quả vào file fifo.ib ).

Ĩ Cơ chế này sẽ được trình bày chi tiết hơn ở phần sau: Cơ chế SendMessage trong GRASS

- Mơ tả sơ bộ cách thức hoạt động của hàm d.mon select:

Khi hàm d.mon select=xi được gọi (xi = x0, x1, x2, Ầ.), chương trình sẽ thực hiện các cơng đoạn sau:

Ớ Kiểm tra xem cửa sổ MONITOR xi cĩ đang được chọn

Ớ Nếu khơng thì chọn (select) cửa sổđĩ (lấy cửa sổđĩ là cửa sổ hiện hành )

- Mơ tả sơ bộ cách thức hoạt động của hàm d.mon stop:

Khi hàm d.mon stop=xiđược gọi (xi = x0, x1, x2, Ầ.), chương trình sẽ thực hiện các cơng đoạn sau:

Ớ Đĩng Process kiểm tra EVENT lại bằng cách gửi EVENT cĩ tên là ỘGRAPH_CLOSEỢ tới MONTOR xi, Process Check Event khi bắt được EVENT này thì sẽ tựđộng End Process lại ..

Ớ Đĩng 2 file kết nối fifo.ia, fifo.ib lại

Ớ Đĩng cửa sổ MONITOR xi đang mở lại (XDestroyWindow(..))

KHOA CNTT Ờ

ĐH KHTN

b. Lệnh d.rast

Lệnh này sử dụng để hiển thị thơng tin của raster chỉ định lên màn hình MONITOR Graphics Windows.

Vắ dụ: Lệnh: d.rast aspect

sẽ hiển thị lên màn hình xi hiện tại thơng tin của raster ỘaspectỢ.

i)Cấu trúc

Nằm trong thư mục SRC\ DISPLAY\ D.RAST\

Khi gọi thực hiện lệnh này thì hàm main() trong thư mục D.RAST \ CMD \ sẽđược thực hiện đầu tiên, nĩ phân tắch cú pháp của chuỗi lệnh được nhập vào, rồi dựa vào tham sốđược phân tắch ra để xác định tên của Raster cần hiển thị.

ii) Cách thức chuyển đổi

- Do đây cũng khơng phải là thư viện, và cách thức biên dịch cũng khác với Win32 (gọi thực hiện một command obj bên ngồi), nên cách chuyển đổi của chúng em ở đây là đọc hiểu cơ

chế thực hiện của chương trình, mơ hình hĩa cơ chếđĩ, sau đĩ viết lại hồn tồn cơ chếđĩ trên Win32

- Mơ tả sơ bộ cách thức hoạt động của hàm d.rast :

Khi hàm d.rast Ộraster_nameỢ được gọi, chương trình sẽ thực hiện các cơng đoạn cơ bản sau:

Ớ Phân tắch cú pháp để lấy ra Ộraster_nameỢ

KHOA CNTT Ờ

ĐH KHTN

Ớ Kiểm tra xem Ộraster_nameỢ yêu cầu cĩ tồn tại khơng trong Location hay khơng?

Ớ Nếu cĩ thì nĩ sẽ đọc biến mơi trường MONITOR hiện hành ra, mở 2 file fifo.ia, fifo.ib tương ứng với monitor.

Ớ Yêu cầu vẽ ra window MONITOR bằng cách gửi EVENT vào file fifo.ia, nếu EVENT cĩ yêu cầu kết quả trả về thì sẽ nhận kết quả trả về trong file fifo.ib (đọc file fifo.ib )

Ầ Ầ

Một phần của tài liệu NGHIÊN CỨUCHUYỂN đổi PHẦN mềm GRASS từ nền UNIX lên WINDOWS (Trang 124 - 129)

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

(157 trang)