Você está na página 1de 3

[all about matlab]

February 21, 2013

USE TIMER MATLAB TO CONTROL TYPING ANIMATION in MATLAB

Pada artikel kali ini akan dibahas mengenai penggunaan dari TIMER Matlab untuk membantu dalam menghasilkan animate typing pada ui kontrol teks GUI. Pada artikel sebelumnya dibahas mengenai alternatif penggunaan looping while untuk menangani kasus tersebut, tapi kelemahannya adalah aktifitas looping bisa diinterupsi oleh looping yang lain sehingga akan menghambat satu sama lain. Tapi dengan menggunakan fungsi Timer Matlab diharapkan hal tersebut bisa dihindari sehingga animasi tetap bisa berjalan dengan semestinya walaupun ada aktifitas looping yang sedang terjadi. Object Timer bisa dipanggil dengan bentuk t = timer; Banyak properti dari Timer yang bisa kita set untuk mendapatkan fungsi yang optimal dari object ini. Tapi dalam artikel ini akan kita bahas hanya 3 properti saja yakni Period dan ExecutionMode serta TimerFcn. Perhatikan syntax di bawah untuk mendapatkan Timer yang akan eksekusi selama 1 detik (period) pada rate yang sama (fixedRated) secara berulang-ulang hingga ditemukan stoping condition (syarat berhenti). Untuk memanggil fungsi di luar dari Timer, maka bisa digunakan properti TimerFcn.
t = timer('Period', 2); set(t, 'TimerFcn', @animate, 'ExecutionMode', 'fixedRate');

Dengan menggunakan properti properti di atas maka salah satu contoh animasi yang saya berikan adalah sebagai berikut:
function main setappdata(0, 'k', 1); string = 'jans hendry'; t = timer('Period', 2); set(t, 'TimerFcn', @animate, 'ExecutionMode', 'fixedRate'); set(t, 'UserData', string); start(t); end

[janshendry@gmail.com]

Page 1

[all about matlab]

February 21, 2013

Fungsi di atas akan memanggil subfungsi ANIMATE yang akan dieksekusi secara kontinyu oleh timer hingga ditemukan kondisi berhenti yakni saat panjang data string yang akan ditampilkan sudah sama dengan panjang sebenarnya. Berikut ini adalah subfungsi tersebut
function animate(obj, event) string = get(obj, 'UserData'); k = getappdata(0, 'k'); if k <= length(string) temp = string(1 : k); k = k + 1; setappdata(0, 'k', k); disp(temp); else stop(obj); end end

Perlu diingat saat memanggil subfungsi oleh object timer sejauh yang saya tau harus dituliskan dalam format
function animate(obj, event)

yang saya cetak tebal berarti harus dituliskan. Penggunaan timer dalam GUI saya berikan pada contoh di bawah
function pushbutton1_Callback(hObject, eventdata, handles) main; function main hMainGui = getappdata(0, 'hMainGui'); handles_teks = getappdata(hMainGui, 'handles_teks'); handles_teks2 = getappdata(hMainGui, 'handles_teks2'); string = get(handles_teks, 'String'); set(handles_teks2, 'UserData', 1); t = timer('Period', 0.5); set(t, 'TimerFcn', @animate, 'ExecutionMode', 'fixedRate'); set(t, 'UserData', string); start(t);

function animate(obj, event) hMainGui = getappdata(0, 'hMainGui'); handles_teks2 = getappdata(hMainGui, 'handles_teks2'); k = get(handles_teks2, 'UserData');

[janshendry@gmail.com]

Page 2

[all about matlab]

February 21, 2013

string = get(obj, 'UserData'); if k <= length(string) temp = string(1 : k); set(handles_teks2, 'String', temp); k = k + 1; set(handles_teks2, 'UserData', k); else stop(obj); end

sementara dalam OpeningFcn nya harus anda tuliskan


function AnimatebyTimer_OpeningFcn(hObject, eventdata, handles, varargin) clc; handles.output = hObject; % Update handles structure guidata(hObject, handles); setappdata(0, 'hMainGui', gcf); setappdata(gcf, 'handles_teks', handles.edit2); setappdata(gcf, 'handles_teks2', handles.edit3);

Tujuannya agar program anda tidak perlu menggunakan variabel GLOBAL yang menyita banyak memori dan memberatkan matlab GUI. Dengan menggunakan setappdata anda bisa memanggil variabel ini dari mana saja karena telah tersimpan di penyimpanan data root GUI. Ini adalah salah satu cara pemrograman yang advance. Selain itu anda bisa juga menggunakan struct data. Hasil eksekusi dari program di atas adalah

semoga bisa membantu.. @thankssss

[janshendry@gmail.com]

Page 3

Você também pode gostar