Chương 3 : THIẾT KẾ
3.4. Thiết kế thuật toán xử lý ảnh và điều khiển
3.4.4. Giao tiếp điều khiển giữa phần mềm Mach3 và xử lý ảnh
Vì Mach 3 là một phần mềm được đóng gói một cách hồn chỉnh, nên việc can thiệp và chỉnh sửa phần mềm để có thể tương tác với xử lý ảnh là vơ cùng khó khăn. Nhóm sử dụng giải pháp sẽ thực hiện việc điều khiển Mach 3 kết hợp với xử lý ảnh thông qua việc viết một chương trình con tự động thực hiện các tương tác “click” chuột và thao tác phím lên giao diện của phần mềm Mach 3. Chương trình con này cũng được viết bằng python với một mô-đun được gọi là pywinauto. Pywinauto là một tập hợp các mơ-đun python để tự động hóa Microsoft Windows GUI. Ở mức đơn giản nhất, nó cho phép bạn gửi các hành động chuột và bàn phím tới các hộp thoại và điều khiển của Windows, nó cũng hỗ trợ cho các hành động phức tạp hơn như lấy dữ liệu văn bản. Các công nghệ được hỗ trợ: Win32 API (backend="win32"; được sử dụng theo mặc định), MS UI Automation (backend="uia"). Mô-đun hoạt động trên cả Windows và Linux.
77
Hình 3.37: Lưu đồ tương tác giữa xử lý ảnh và điều khiển
Ngay khi người dùng thực thi chương trình, một loạt câu lệnh sẽ được thực thi theo cấu trúc như lưu đồ 3.38 bên dưới. Mục đích của việc này là giảm thiểu tối đa thao tác của người sử dụng cũng như đảm bảo tối đa yêu cầu về đồng bộ thời gian khi xử lý ảnh.
Để thực thi các thao tác như trong lưu đồ 3.38 cần sử dụng các hàm của mô- đun Pywinauto. Cấu trúc của các hàm trong mô-đun Pywinauto được quy định như sau:
App.<DialogName>.<ControlName>.<method>(<params>) Trong đó:
78 App: được xác định bằng công nghệ hỗ trợ của chương trình cần tương tác (UIA hay WIN32) và tên của chương trình.
DialogName: xác định vùng cửa sổ chính của chương trình và một vài các thành phần khác như nút nhấn, hộp thoại.
ControlName: là một lớp nhỏ hơn DialogName, lớp này sẽ xác định cụ thể vị trí, nút nhấn, edit box,… cần tương tác đến.
Method: là thao tác muốn thực thi lên đối tượng.
Trong lưu đồ 3.38 các lệnh “click chọn” sẽ có method là click, “gõ” sẽ có thao tác là type_keys và “gửi phím” sẽ được thực thi bằng hàm send_keys().
Yêu cầu quan trọng để các thao tác này được thực thi đúng là khi phần mềm “Mach3 CNC Controller” phải được mở sẵn và đang trong trạng thái sẵn sàng (đã nhấn Reset và đang trong cửa sổ Program Run Alt-1) trước khi thực thi XuLyAnh.py.
79
80