Use Timer Matlab To Control Typing Animation in Matlab
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
Page 1
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');
Page 2
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
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
Page 3