You are here
Home > Lập Trình > Tự Học Matlab > Matlab Nâng Cao > Lập Trình GUI > Lập Trình Gui Matlab – Trao Đổi Dữ Liệu Giữa 2 Gui Matlab

Lập Trình Gui Matlab – Trao Đổi Dữ Liệu Giữa 2 Gui Matlab

Hướng Dẫn Truyền Dữ Liệu giữa 2 Gui với nhau

Trong bài viết này Tôi xin hướng dẫn đến bạn cách để truyền và nhận một dữ liệu nào đó cho một Gui khác trong phần mền Matlab. Trước khi học bài này thì bạn nên học cách làm sao để liên kết 2 Gui với nhau trước đã. Vì khi bạn biết cách gọi Gui A  sang Gui B thì lúc đó ta mới học cách truyền nhận dữ liệu giữa chúng với nhau.

lap trinh gui matlab truyen du lieu giua 2 gui trong matlab
lap trinh gui matlab truyen du lieu giua 2 gui trong matlab

Việc trao đổi dữ liệu này thực sự rất cần thiết trong việc lập trình chúng ta. Sở dĩ tại sao tôi lại nói vậy? Xin thưa với bạn rằng khi làm một dự án lớn thì đồng nghĩa Code chúng ta quá nhiều. Như vậy ta phải biết cách chia nhỏ ra thành từng thành phần nhỏ khác nhau. Như vậy thì ta cần chia nhỏ Gui ra thành nhiều Gui khác đảm nhaann 1 nhiệm vụ nào đó. Việc chia như vậy đồng nghĩa với bạn cần phải trao đổi dữ liệu qua lại để ta có thể tính toán khi nhận được dữ liệu từ Gui khác.

Thực ra thì để nhận được dữ liệu từ một Gui khác thì cũng không khó lắm đâu. Tôi và bạn cùng làm một ví nhỏ dưới đây nhé. Chúng ta sẽ không đặt quá nặng nề về giao diện cũng như chức năng của nó. Đơn giản là ta hiểu được vấn đề rồi thì từ đó bạn có thể áp dụng vào từng bài toán cụ thể của mình sao cho hợp lý.

Giả sử tôi có 2 Gui như hình phía dưới

lap trinh gui matlab trao doi du lieu giua 2 gui
lap trinh gui matlab trao doi du lieu giua 2 gui

Bài toán của ta sẽ như sau:Đối với GuiA thì cho người dùng nhập 2 số của bienX và bienY sau đó ta sẽ cộng 2 kết quả này. Khi có kết quả rồi ta sẽ gán vào ketQua và truyền dữ liệu của kết quả này sang cho GuiB cụ thể hơn là gán vào ketQuaGuiA. Oke ta cùng bắt tay vào làm nhé,

1. Ở Gui A

Bạn hãy vào Function tinhToan để viết lệnh cho nó

– Tạo một biến global là result

global result

– Lấy giá trị nhận được của Tag bienX

resultX = str2num(get(handles.bienX, 'string'));

– Lấy giá trị nhận được của Tag bienY

resultY = str2num(get(handles.bienY, 'string'));

Trong đó:

  • str2num(): Chuyển đổi kiểu chuỗi sang số. Tại vì ô nhập của ta là Edit Text cho nên nó sẽ trả về kiểu string
  • get(): Lấy giá trị

– Tính giá trị của 2 biến x,y

result = resultX + resultY;

– Gán giá trị vào tag ketQua

set(handles.ketQua, 'string', num2str(result));

Trong đó: num2str(): Truyển kiểu số sang chuỗi.

Oke bạn thử chạy trương trình nên và xem kết quả thế nào nhé.

truyen du lieu giua 2 gui matlab
truyen du lieu giua 2 gui matlab

Và đây là toàn bộ code của file trương trình trong Gui A

file .m gui matlab
file .m gui matlab

Để trông chuyên nghiệp hợp thì bạn có thể cho Tag ketQua Off Enable đi cũng được. Vì nó cũng chỉ nhận kết quả cho nên ta cũng không cần thiết để người dùng nhập dữ liệu vào ô này làm gì cả.

2. Ở Gui B

Oke để Gui B có thể nhận được dữ liệu từ Gui hay nói rõ hơn để lấy được giá trị từ biến result. Thì ta làm sau.

Giả sử khi bạn chạy trương trình của Gui B nên thì sẽ có kết quả luôn thì ta sẽ tiến hành viết vào function OpeningFcn 

– Lấy dữ liệu

global result

Trong đó: global result: Đã khởi tạo ở Gui A

– Gán giá trị và Tag ketQuaGuiA ở Gui B

set(handles.ketQuaGuiA, 'string', result);

Bạn chạy trương trình nên để xem kết quả.

trao doi du lieu giua 2 gui trong matlab
trao doi du lieu giua 2 gui trong matlab

Như vậy ta đã hoàn thành nhiệm vụ giải ví dụ trên rồi đó.

Mấu chốt của bài học này đó là nếu bạn muốn truyền giá trị nào đó từ Gui A chẳng hạn.Thì bạn chỉ cần cho giá trị đó vào một biến nào đó sau đó đặt trước nó kiểu global. Khi muốn nhận giá trị từ biến đó thì Gui B chẳng hạn bạn có thể gọi nó bằng

global bienTruyenDuLieu

Chỉ một câu đơn giản trên là bạn đã có gán và lấy dữ liệu từ một Gui khác rồi đó.

Tổng Kết:

Trên đây tôi và bạn đã học cách truyền dữ liệu giữa 2 Gui thành công rồi. Qua bài học này bạn có thể tự áp dụng vào từng trường hợp của bạn. Vi vọng bài viết này giúp ích cho bạn! Chúc bạn thành công!

4 1 bỏ phiếu
Đánh giá bài viết

Thủ Thuật Windows

Nếu như trong quá trình bạn tải file Active về mà bị thông báo là "tệp chứa virus" và bị xóa thì hãy làm theo các bước sau trước khi tải về nhé:

Bước 1: Tắt Windows Defender (Win 10), bạn hãy làm theo các bước này để tắt Defender tạm thời nhé, sau khi Active xong, bạn có thể bật lại:
1. Mở ứng dụng Settings.
2. Trên cửa sổ Settings, bạn tìm và click chọn Update & security.
3. Tiếp theo click chọn Windows Defender.
4. Chuyển trạng thái tùy chọn Real-time protection sang OFF.

Bước 2: Ngoài ra, Nếu trong quá trình tải về mà bạn dùng trình duyệt Chrome hay Cốc Cốc thì sau khi file tải xong không được bấm "Hủy" mà bạn nên bấm tổ hợp phím “Ctrl + J” để vào phần quản trị download, tìm đến file mà bạn tải rồi click vào ô “Khôi phục tệp…” nhé.

Có một số trường hợp file Active tải về mặc định bị xóa, nếu gặp trường hợp này bạn cần chắc chắn rằng Windows Defender hay phần mềm diệt virus trên máy đã được tắt. Sau đó bạn bấm “Ctrl +J“, tại link tải active mà bạn vừa tải về đã bị xóa, bạn hãy click vào đó để trình duyệt tải lại một lần nữa và lần này là sẽ thành công.

BQT: VuTienBlog

Subscribe
Thông báo
guest
1 Comment
Phản hồi nội tuyến
Xem tất cả các ý kiến
Icandoit
Icandoit
3 year ago

Cho mình hỏi khi nào thì cần khai báo global biến nào đấy. Nếu không khai báo thì bị gì . Với như các định dạng số %s %d %f là gì , chuẩn định dạng của từng cái như thế nào

Damas
Damas
10 months ago

Hi!
nếu truyền qua 2 GUI trên 2 pc dc ko ad?

Top
0
Bác có thắc mắc? Nhấn vào đây để bình luận!x
()
x