Chào các bạn.
Sau khi các bạn đã biết cách để viết một giao diện GUI, biết cách dịch ra file .exe tự chạy trên một máy khác thì bây giờ mình kết hợp làm sao đây ??
Bài này mình dịch một project GUI tương đối là nhiều thành phần: RS232 Communication đã được post trong bài Lập trình giao tiếp RS232 qua Matlab
Bước 1: Thiết lập môi trường dịch (bước này bỏ qua nếu đã làm rồi )
Bước 2: Gõ lệnh deploytool và vào menu File chọn New Project, chọn Standalone Application, chọn tên project và nơi lưu project.
Giao diện Deployment Tool sẽ gồm có Main function, Other files và C/C++ files.
Một project GUI sẽ gồm có 2 file .m và .fig và có thể thêm các file .m và .fig nếu gọi các figure khác. Như vậy file add vào trong Main Function là file .m là file chính sẽ chạy project GUI đó.
Các bạn browse đến thư mục RS232 Communication và sẽ thấy nó chỉ cho phép chọn file .m. Ở đây mình phải chọn file RS232_Communication.m vì là file chính, còn modaldlg.m là file để mở cửa sổ yêu cầu chọn Yes, no.
Tiếp tục, click chuột phải vào Other files, chọn Add files và add các file còn lại trong project (chỉ các file .m và .fig thôi).
Xong xuôi thì giao diện sẽ ra như thế này:
Bước 3: Dịch project
Bây giờ là bước dịch, các bạn vào menu Tools -> Build (Ctr + B). Sau đó đi uống nước chờ nó dịch xong hehe. Cái này chờ lâu phết, đừng có nóng nhé. Không báo lỗi gì thì ok ngay.
Xong vụ rồi thì vào thư mục \distrib sẽ thấy file .exe của mình. Nhấn thử vào chạy xem thế nào.
Còn muốn đem sang máy khác thì phải đóng gói, vào Tools chọn Package (Ctr + P):
Sang máy không cài Matlab thì copy đồng thời file package và McrInstaller vào một thư mục, chạy ngon lành luôn. Mình thử nghiệm rồi.
Chạy nó sẽ ra thế này:
Mình có upload file .exe mà mình đã dịch làm bằng chứng he he.
Các bài viết liên quan:
- Tạo file .exe trong Matlab dùng Matlab Compiler Có nhiều bạn khá băn khoăn về việc dịch một ứng dụng trong Matlab ra file .exe để chạy độc lập trên các máy không cài Matlab đúng không ?? Hay là cách để đóng gói sản phẩm của mình thì nên làm thế nào ? Để có thể dịch ra file .exe yêu cầu [...]...
- Lập trình giao diện GUI trong Matlab (Phần 1) Mình viết bài này để tổng hợp lại các hướng dẫn về thiết kế giao diện GUI trong Matlab để các bạn dễ dàng thực hiện. Phần mềm: Matlab R2007a Bài đầu tiên mình sẽ giới thiệu các bạn giao diện GUI. 1. Mở phần mềm Matlab, gõ lệnh sau vào cửa sổ Command >> [...]...
- Tạo hình nền cho giao diện GUI Chào các bạn. Trong bài này mình sẽ hướng dẫn các bạn tạo hình nền hoặc một phần của giao diện GUI. Ý tưởng: dùng một Axes control để load hình ảnh. Như vậy, ngay khi chạy GUI thì ảnh đã hiển thị lên axes rồi nên trông như là hình nền của GUI vậy. [...]...
- SkyDrive- 25 GB lưu trữ trực tuyến với giao diện tiếng Việt Mình đọc bài viết này tại trang "Xã hội thông tin" thấy hay nên copy sang đây để cập nhật thêm cho cái SkyDrive. Như vậy bây giờ chúng ta có tận 25GB để chia sẻ tài liệu rồi, tha hồ mà dùng hehe. Điều quan trọng là không có quảng cáo, tốc độ download [...]...
- Hiển thị Led 7 thanh trên GUI Matlab Chào các bạn. Mình cũng đang làm cái giao diện cho đồ án tốt nghiệp và có tìm kiếm source Matlab cho Led7 thanh và tìm được một project rất hay. Từ đó, có thể nhúng vào trong GUI của mình. Các bạn có thể xem Project đó tại đây. Demo cái hình trông cho [...]...
- GUI Matlab: Hộp thoại mở file như Open của Windows Chào các bạn. Nay lướt Web đột nhiên thấy hàm cho phép mở hộp thoại Open như trong Windows Tham khảo: http://www.caspur.it/risorse/softappl/doc/matlab_help/techdoc/ref/uigetfile.html...











{ 36 comments… read them below or add one }
Bác này biết nhiều về MATLAB ghê.
ở bước 1: anh có thể giải thích giùm môi trường dịch ở đây là gì không, em đọc mà chẳng hiểu?
Em đánh lệnh deploytool mà đâu có được, em dùng cả matlab 6.5 và 7 cũng kô được, nó báo lỗi là “Undefined function or variable ‘deploytool’.”. Anh có thể giải thích giùm em.
Ủa e có cái Help Matlab Compiler sao gõ lệnh Deploytool vẫn bị báo lỗi như bạn trên là sao a nhỉ?
À thế e dùng cái Matlab builder for COM có thể dịch được không vậy a? Đã làm thử nhưng báo lỗi nên ko thực hiện tiếp được. Thế cho e hỏi thời gian của thực hiện 1 chương trình trong GUI và chương trình sau khi dịch ra file .exe thì có giống nhau ko?Thanks a
Em biên dịch file adder.m bằng lệnh :mcc -m adder.m
theo file help của Matleb nhưng khi chạy file adder.exe thì chỉ chạy ra màn hình lệnh của dos thôi. Anh làm thử và chỉ giúp em đã sai chỗ nào với.
Cám ơn nhiều.
Chào bạn, mình không biết nhiều về các ngôn ngữ lập trình. Mình cũng đang tìm hiểu để tạo một giao diện cho giao tiếp RS232 giữa PC và PIC. Theo bạn, với vấn đề này thì giải quyết bằng Matlab hay VB hay VC++ cái nào dẽ dàng và hệu quả nhất (mình cũng đã xem về vấn đề này bên picvietnam nhưng thật sự là chưa nắm được nhiều)? à, mình ko có đĩa cài VB 6.0 và VC++ nên mình vào trang của microsof download VB 2008 và VC++ 2008 về, nhưng thấy bảo cái này và cái VB 6.0 … có nhiều điểm khác nhau phải ko bạn? Cái nào thông dụng và dễ dùng hơn?
Cảm ơn bạn! Bạn có thể so sánh ưu nhược điểm giữa VC++ và Matlab trong việc giải quyết vấn đề này giúp mình được ko?
Hay quá ! Anh có thể hướng dẫn tạo file .dll ko? Em tìm nhưng chưa thấy có hướng dẫn step by step . Nên gặp nhiều trở ngại quá. Mong anh reply sớm.
Anh Bac cho em hoi lam sao tao duoc file .fig trong khi viet vay?Em viet ham xu ly anh nhung hok biet viet file .fig nen no bao loi
Anh Bắc ơi cho em hỏi. Sao em copy đồng thời file package và McrInstaller vào một thư mục rùi cho chạy sang máy không cài matlab mà ko được nhỉ. Em làm tất cả các bước đều được giống như của anh.
thanks.
Các bạn cho mình hỏi, mình cũng build ra exe giong nhu hướng dẫn nhưng do project của mình cần DATABASE ( trong project mình su dung cac file trong database theo duong dan tuong toi) mà cái FOLDER DATABASE minh ko dua vao bien dich duoc nen khi bien dich xong mình de no vao trong cung folder distrib, nhưng khi chay bị báo lỗi ở hàm callback. Khong biet fai build cach nao mới đúng?
các bạn cho mình hỏi, project cua minh da chay thanh cong tren matlab, nhung khi minh build ra exe theo huong dan tren thi bi loi (loi o ham callback), nguyen nhan theo minh la do: project cua mình sử dụng 1 folder database , khi build thi ko thể build nó, nên khi build project xong minh chep no vao cung folder distrb nhưng no chay bi lỗi, có ai có kinh nghiem trong van de nay giup minh voi, cam on cac ban nhieu
chào bạn, project cua minh da chay thanh cong tren matlab, nhưng khi mình build ra thì chuong trinh chay bị loi o ham callback. Vấn đề của mình là project của mình chạy cần database nên khi build xong mình chép folder DATABASE ( khi viet chuong trinh minh dung duong dan tuong doi ” \DATABASE\ “) đó vào folder distrb (cung thu muc voi file exe), khi chay thi co loi, mình ko biết nó bị lỗi gì. Mong bạn giúp cho.
Khi bạn chạy file .exe sau khi dịch đó, nếu có thông báo lỗi gì thì sẽ hiện lên cái cửa sổ DOS đó, bạn đọc và xem kĩ xem có vấn đề gì không nhé. Mình nghĩ là có vấn đề gì đó về đường dẫn của thằng Database mà thôi.
Chúc bạn thành công.
A Bắc giup e voi! e có bài tâp về matlab. Viet giao diện nhập vào ham truyền G(s) rồi nhắn nút OK sẽ hiện thị biểu đồ bode. e mới hoc nên ko biết nhiều xin a giup đỡ.
Chào Anh Bắc,
Cho em hỏi thăm, em viết một file t.m trong matlab rất đơn giản n/d như sau
” clear
clc
X=input(‘a=’);
ss=X+1 ”
và da biên dịch thành công thành t.exe
tuy nhiên khi chạy file t.exe thì kết quả hiện ra rồi ngay lập tức màn hình command promt đóng lại.
Nếu viết một chuong trình có kết quả dài hơn thì sẽ ko kịp xem kết quả.
Có cách nào để cửa sồ command promt ko bị tắt ko anh
em sử dung matlab r2008a
Cảm ơn Anh rất nhiều
Anh trả lời qua email của em rồi nhé. Có gì hỏi tiếp ở đây cũng dc.
Em chào anh ạ
Anh có thể chỉ cho em cách để viết Chương trình giao tiếp với cổng Com Dùng C và sau đó Xuất ra file .exe được không ạ
Ah anh ở Nam định anh ở đâu thế ạ
Em ở Giao Thuỷ nè
Rất mong nhận được sự giúp đỡ của anh
Bạn ơi cho mình hỏi m-file của mình chạy rất bình thường nhưng sao khi xuất ra file exe như bạn nói quá trình thực hiện không thấy báo lỗi gì nhưng khi chạy đến giao diện mình kích hoạt chức năng như kiểu nhập ảnh thì máy báo hàm Callback có vấn đề
nếu mình có một tích phân 4 lớp (4 biến số) thì phải viết code trong matlab như thế nào? xin nhờ giúp đỡ…..
nho anh ti
em moi vao hoc matlab ma thay cho bai tap lon ve giao dien GUI. em thu lam 2 bai tap nho nhung sao no khong chay, em chui anh cai doan ma code em duoc, neu sai cho nao, nho anh sua giup em.
function varargout = DoThi(varargin)
% DOTHI M-file for DoThi.fig
% DOTHI, by itself, creates a new DOTHI or raises the existing
% singleton*.
%
% H = DOTHI returns the handle to a new DOTHI or the handle to
% the existing singleton*.
%
% DOTHI(‘CALLBACK’,hObject,eventData,handles,…) calls the local
% function named CALLBACK in DOTHI.M with the given input arguments.
%
% DOTHI(‘Property’,'Value’,…) creates a new DOTHI or raises the
% existing singleton*. Starting from the left, property value pairs are
% applied to the GUI before DoThi_OpeningFcn gets called. An
% unrecognized property name or invalid value makes property application
% stop. All inputs are passed to DoThi_OpeningFcn via varargin.
%
% *See GUI Options on GUIDE’s Tools menu. Choose “GUI allows only one
% instance to run (singleton)”.
%
% See also: GUIDE, GUIDATA, GUIHANDLES
% Edit the above text to modify the response to help DoThi
% Last Modified by GUIDE v2.5 20-Sep-2011 16:01:42
% Begin initialization code – DO NOT EDIT
gui_Singleton = 1;
gui_State = struct(‘gui_Name’, mfilename, …
‘gui_Singleton’, gui_Singleton, …
‘gui_OpeningFcn’, @DoThi_OpeningFcn, …
‘gui_OutputFcn’, @DoThi_OutputFcn, …
‘gui_LayoutFcn’, [] , …
‘gui_Callback’, []);
if nargin && ischar(varargin{1})
gui_State.gui_Callback = str2func(varargin{1});
end
if nargout
[varargout{1:nargout}] = gui_mainfcn(gui_State, varargin{:});
else
gui_mainfcn(gui_State, varargin{:});
end
% End initialization code – DO NOT EDIT
% — Executes just before DoThi is made visible.
function DoThi_OpeningFcn(hObject, eventdata, handles, varargin)
% This function has no output args, see OutputFcn.
% hObject handle to figure
% eventdata reserved – to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% varargin command line arguments to DoThi (see VARARGIN)
% Choose default command line output for DoThi
handles.output = hObject;
% Update handles structure
guidata(hObject, handles);
% UIWAIT makes DoThi wait for user response (see UIRESUME)
% uiwait(handles.figure1);
% — Outputs from this function are returned to the command line.
function varargout = DoThi_OutputFcn(hObject, eventdata, handles)
% varargout cell array for returning output args (see VARARGOUT);
% hObject handle to figure
% eventdata reserved – to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Get default command line output from handles structure
varargout{1} = handles.output;
function a_Callback(hObject, eventdata, handles)
% hObject handle to a (see GCBO)
% eventdata reserved – to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,’String’) returns contents of a as text
% str2double(get(hObject,’String’)) returns contents of a as a double
% — Executes during object creation, after setting all properties.
function a_CreateFcn(hObject, eventdata, handles)
% hObject handle to a (see GCBO)
% eventdata reserved – to be defined in a future version of MATLAB
% handles empty – handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,’BackgroundColor’), get(0,’defaultUicontrolBackgroundColor’))
set(hObject,’BackgroundColor’,'white’);
end
function b_Callback(hObject, eventdata, handles)
% hObject handle to b (see GCBO)
% eventdata reserved – to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,’String’) returns contents of b as text
% str2double(get(hObject,’String’)) returns contents of b as a double
% — Executes during object creation, after setting all properties.
function b_CreateFcn(hObject, eventdata, handles)
% hObject handle to b (see GCBO)
% eventdata reserved – to be defined in a future version of MATLAB
% handles empty – handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,’BackgroundColor’), get(0,’defaultUicontrolBackgroundColor’))
set(hObject,’BackgroundColor’,'white’);
end
% — Executes on button press in pushbutton1.
function pushbutton1_Callback(hObject, eventdata, handles)
% hObject handle to pushbutton1 (see GCBO)
% eventdata reserved – to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% — Executes on button press in close.
function close_Callback(hObject, eventdata, handles)
% hObject handle to close (see GCBO)
% eventdata reserved – to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
function DoThi_Callback(hObject, eventdata, handles)
a=str2double(get(handles.a,’string’))
b=str2double(get(handles.b,’string’))
x= 0:pi/100:5*pi;
y=a*sin(x)+ b*cos(x);
plot(x,y,’b')
set(handles.axes,’string’)
Bình thường mà em. Em xem và thử nghiệm hướng dẫn của anh đi nhé.
Cho e hỏi:có cách nào làm mất màn hình dos khi chạy file exe ko?Em lập trình giao diện rùi nên khi chạy ko cần hiện lên màn hình dos.Em cám ơn!
Chào em.
Có lẽ Deploytool này chỉ có từ bản Matlab R2006 hay R2007 trở đi thì phải. Mình chưa khảo sát kĩ.
Bạn kiểm tra xem trong Help có toolbox Matlab Compiler thì sẽ có thể dịch được ra file .exe, tuy nhiên bạn phải gõ lệnh thôi.Có lẽ mình phải viết bài hướng dãn này.
Còn môi trường dịch thì nếu đã có Matlab Compiler thì mặc định lựa chọn 1 sẽ luôn có, còn không cài toolbox này thì chắc là không có rồi.
Em có Matlab Compiler nhưng version của Toolbox đó không support Deploytool, em phải dùng lệnh như mcc – chứ không dùng được giao diện này.
Tốt nhất em nên mua phần mềm Matlab bản mới nhất dùng cho thoải mái.
Anh chưa dùng Matlab builder for COM nên chưa nói được gì cho em cả.
Còn tất nhiên là thời gian thực hiện 1 chương trình trong GUI và sau khi dịch là phải giống nhau rồi em. Mà có khi nhanh hơn vì không khởi động Matlab mà
. Các thư viện cần thiết đều được dịch hết rồi em ạ. Em xem một file package nó lên đến gần 10MB cơ mà.
Chúc em thành công.
Được rồi anh ơi. Ra rồi.
Chào em.
Chúc mừng em đã thành công khi dịch nhé.
Khi chạy file .exe thì em phải chờ một tẹo nha. Nhất là khi chạy lúc đầu nó phải dịch ra một file gì đó nữa anh quên rồi.
Chúc em thành công.
Chào bạn.
Giao diện thì có nhiều chương trình để viết như VB, VC++, Matlab, … tuy nhiên cái nào dễ dang thì còn tùy thuộc vào thói quen sử dụng của bạn mà thôi. Mỗi chương trình có điểm mạnh và yếu riêng.
VB2008 và VC++2008 là bản .Net còn bạn định dùng là bản 6.0. Mấy cái này có khác nhau đôi chút thôi. Dùng bản 2008 sẽ cảm thấy thích thú hơn nhiều.
Chúc bạn thành công.
Vấn đề của bạn chỉ là giao tiếp giữa PC và PIC qua RS232 thôi. Nên cái gì cũng làm được cả.
Tuy nhiên, nếu thiên về tính toán, xử lý nhiều dữ liệu thì nên dùng Matlab. Còn chỉ đơn giản là giao diện và xử lý đơn giản thì dùng VC++.
Còn vấn đề bản quyền nữa, cũng nên xem xét khi triển khai ứng dụng.
Chúc bạn thành công.
Chào em.
Không có cách nào đâu em ạ. Khi chạy nó phải hiện ra cái màn hình DOS ấy, giống như khi chạy Matlab cần phải có cửa sổ Command Windows đó, nó sẽ hiện lên các kết quả, …
Chúc em thành công.
cám ơn anh nhiều.
Không có gì em ạ.Cố gắng lên nhé.
Chúc em thành công.
Chào em.
Anh chưa làm ra cái .dll này. Nhưng anh nghĩ,nó chẳng khác gì so với các bước mà anh hướng dẫn cả. Chỉ có output là khác nhau mà thôi.
Em thử làm xem rồi report nhé.
Chúc em thành công.
Anh không hiểu ý của em như thế nào cả. Sao lại không biết viết file .fig nên báo lỗi ??
Chào em.
Không được là như thế nào em ?
Chạy file package xong nó bắt cài MCRInstaller, cài xong thì chạy cái file .exe nó giải nén ra đó là được.
Chúc em thành công.