2012-01-22 21 views
8

Tôi đã tạo một GUI nhỏ để thao tác dữ liệu và gần đây tôi đã quyết định di chuyển cơ sở dữ liệu sang máy chủ MySQL. Tôi đã tạo một chương trình Java để mang dữ liệu qua lại và tôi bắt đầu nhận thấy sự chậm trễ khi truy cập các máy chủ ở nước ngoài.Làm cách nào để biết nếu Matlab bận khi sử dụng GUI?

Khi bạn chạy tập lệnh thông qua cửa sổ lệnh, Matlab hiển thị văn bản "bận" ở góc dưới bên trái nhưng không hiển thị khi tôi đang chạy GUI.

Vậy làm cách nào để biết nếu Matlab bận khi sử dụng GUI?

Xin cảm ơn trước.

Chỉnh sửa: Ví dụ nhanh.

tôi chạy trong cửa sổ lệnh (hoặc một test.m script)

for i = 1:100000 
    a = i+i; 
    disp(a); 
end 

Thanh trạng thái nói "Bận".

Khi tôi tạo GUI, với nút "Nhấp vào tôi" thực thi cùng một tập lệnh chính xác. Dấu hiệu bận trên thanh trạng thái không xuất hiện.

Tại sao điều này và tôi có thể làm gì? Tôi muốn có thể xem GUI của tôi có bận hay không.

+0

Thay vì dựa vào dấu bận trong IDE chính, bạn có thể không thực hiện một số loại thanh chờ hoặc in thông báo tiến trình của riêng bạn vào dấu nhắc lệnh không. Cả hai ý tưởng này đều được thảo luận [ở đây] (http://blogs.mathworks.com/loren/2007/08/01/monitoring-progress-of-a-calculation/). – Chris

Trả lời

3

Bạn có thể sửa đổi thông báo trên thanh trạng thái của cửa sổ MATLAB chính bằng cách gửi statusbar từ Yair Altman trên MathWorks File Exchange. Ông thảo luận về cách thức hoạt động của nó trong a post on his blog "Undocumented Matlab".

Với tiện ích này, bạn sẽ có thể đưa ra thông báo "Bận ..." ngay cả khi MATLAB không tự động làm điều đó. mã của bạn cho "Nhấp chuột tôi" nút gọi lại có lẽ sẽ giống như thế này:

... 
statusbar(0, 'Busy...'); %# Set the status message 
test;      %# Run your function/script 
statusbar(0, '');   %# Clear the status message 
... 
+0

Vâng, đó là một công cụ nhỏ gọn nhưng khi tôi nói rằng tôi đã tạo ra một GUI nhỏ tôi đã nói dối. Đối với tôi, một người mới, nó là một giao diện khá lớn và thêm điều này vào tất cả các callbacks của tôi (cần nó) là nhiều rắc rối. Nó sửa chữa vấn đề tôi đã có nhưng không phải là giải pháp tôi đã hy vọng. Tôi xem vấn đề này đã được giải quyết. Cảm ơn vì đầu vào của bạn. –

4

Nó nói như vậy trong thanh trạng thái của cửa sổ chính!

EDIT:
Vì vậy, câu trả lời là không, ngay bây giờ không có cách nào để (dễ dàng) nói nếu MATLAB đang bận làm một việc khác ngoài công việc dòng lệnh.

+0

Có nhưng không dành cho GUI. –

+0

Đây có thể là phiên bản phụ thuộc, nhưng tại sao bạn cần phải biết điều này, tôi có nghĩa là tôi hiểu rằng nó sẽ rất tốt đẹp nhưng nó làm cho bất cứ điều gì rối loạn chức năng? – Ali

+0

Không chỉ muốn hỏi xung quanh nếu có một cách đơn giản để cắm vào thông báo "Bận" này trong cửa sổ chính. Phải mất một vài giây để lấy một lượng lớn dữ liệu, 10.000x10 ma trận khi máy chủ không ở trước cửa nhà bạn. Nó sẽ làm cho GUI thân thiện với người dùng hơn. GUI là bỏ qua các lệnh khi bận nên không phải là vấn đề lớn. Cảm ơn bạn đã trả lời của bạn. –

2

Bạn có thể thêm một văn bản tĩnh trên giao diện chính nó và đặt văn bản của mình để 'bận rộn'/'nhàn rỗi' trước/sau của bạn tính toán được thực hiện, nếu làm cho GUI thân thiện với người dùng hơn là mối quan tâm.

2

Có lẽ những gì bạn đang tìm kiếm:

Nhập bất kỳ mã arbritary nào vào dòng lệnh.

ví dụ: somthing như

asdfasdfasdfasdf

Nếu thói quen GUI vẫn chạy, sau đó nó sẽ hiển thị bận rộn, cho đến khi chức năng GUI đã kết thúc. Chỉ khi đó nó mới có thể bắt đầu thực thi asdfasdfasdfasdf.

Nếu Gui đã hoàn tất, sau đó nó sẽ thực thi asdfasdfasdfasdf ngay lập tức và hiển thị thông báo lỗi theo.

Trước đó tất cả Matlabs cũng hiển thị thông báo bận, khi bắt chước thực thi hàm Gui-started. Kể từ năm 2012, điều này dường như không còn là trường hợp.

0

Thêm hộp văn bản tĩnh vào GUI của bạn. Trong tính toán biểu tượng gọi lại của bạn, hãy viết này:

set(handle.text,'string','busy') 
pause(0.1) 
. 
. 
. 
// Your code 
. 
. 
. 
pause(0.1) 
set(handle.text,'string','done') 
0

This thread qua tại MathWorks nói nó có thể được thực hiện bằng cách sử dụng File Exchange entry CmdWinTool. Nếu bạn tải xuống tệp đó, bạn có thể sử dụng tệp đó để tìm hiểu xem MATLAB có đang bận với CmdWinTool('isBusy') hay không. Lưu ý rằng CmdWinTool tận dụng các tính năng không có giấy tờ trong việc sử dụng Java của MATLAB, do đó MathWorks không có khả năng hỗ trợ nó.

Các vấn đề liên quan