Page 1
TUTORIAL VISUAL C++ UNTUK APLIKASI AKUISISI DAN MONITORING DATA SECARA
REAL TIME Pengantar dan Panduan Training VC++ untuk aplikasi berorientasi Kontrol
(Rev 0, Mei 2009)
Oleh : Iwan Setiawan Automatic Control Lab, Electrical Engineering of UNDIP
http://[email protected]
Page 2
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
Kata Pengantar
Bagi anda yang belum pernah menggunakan sebuah perkakas, misalnya pahat,
kira-kira butuh waktu berapa lama agar mahir memakai alat tersebut? ..satu hari,
satu bulan, atau satu tahun?. Nampaknya, tidak perlu waktu berhari-hari atau
berbulan-bulan hanya untuk belajar menggunakan perkakas semacam pahat,
kurang lebih lima sampai sepuluh menit anda sudah cukup untuk belajar
menggunakan pahat (tapi tentu saja jawabannya akan berbeda jika anda berniat
menjadi seorang pemahat).
Kasus yang hampir sama berlaku juga saat anda berminat mempelajari bahasa
pemrograman Visual C++. Anda pada dasarnya dapat memandang Visual C++
sebagai sebuah perkakas (tool) untuk aplikasi yang sedang direncanakan (misal
untuk simulasi, monitoring, data logging atau pengontrolan). Tidak perlu waktu 6
jam, 24 jam, atau 36 hari,… cukup 1 jam 30 menit!, anda sudah dapat menguasai
Visual C++, bahkan untuk aplikasi yang relative serius sekalipun, yaitu seperti
akuisisi dan monitoring data real time. Syaratnya ?... langsung praktek di depan
komputer secara terbimbing.
Bagi anda (terutama para pemula) yang berniat memanfaatkan Visual C++
sebagai tools pengembang untuk aplikasi yang berhubungan dengan sistem
akusisi dan monitoring data secara real time (banyak ditemukan dalam bidang
Kontrol), tulisan singkat ini dapat digunakan baik sebagai pengantar (karena berisi
beberapa konsep penting yang perlu anda pahami) dan sekaligus juga sebagai
panduan yang menemani anda saat praktek pemrograman Visual C++ secara
langsung. .
2
Page 3
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
Materi
• Pengenalan Visual C++: Konsep, Integrated Development Editor dan
Komponen standar
• Pengaksesan Timer
• Real Time Chart
• Akuisisi dan Monitoring Data secara real time lewat port serial
Perangkat
• Microsoft Visual C++
• Port serial RS232 beserta kabelnya
• Converter RS232 to USB (jika computer/laptop tidak ada port serial)
• Microcontroller AVR, dan Sensor (optional)
3
Page 4
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
Visual C++ Sebagai Bahasa Pemrograman Visual
Pengembangan program aplikasi dengan menggunakan Visual C++ pada dasarnya
bersifat intuitive. Hal ini dikarena Visual C++ menerapkan konsep WYSIWYG
(what you see is what you get), atau dengan kata lain perancang sudah dapat
memperkirakan bentuk tampilan visual program berdasarkan bentuk visual
rancangan (lihat ilustrasinya pada gambar 1).
(a). Form desain
(b). Form hasil eksekusi
Gambar 1. Konsep WYSIWYG
Seperti halnya Delphi dan Visual Basic, Visual C++ dikatagorikan sebagai bahasa
Visual karena Visual C++ menyediakan berbagai komponen visual standar
pembangun sebuah aplikasi: Button, Radio button, Slider, Edit box, Combo box,
dan sebagainya (disamping komponen-komponen visual, visual C++ juga
4
Page 5
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
menyediakan beragam komponen non visual siap pakai yaitu seperti IP address,
COMM – komponen komunikasi serial, dan sebagainya)
Bagi anda yang sebelumnya pernah menggunakan Delphi atau VB, mungkin akan
sedikit kecewa dengan komponen-komponen visual standar Visual C++ yang
nampak “miskin” properties. Tapi jangan khawatir, anda dapat “berburu”
komponen visual di internet, banyak situs-situs yang menyediakan komponen-
komponen visual menarik gratisan maupun komersial.
Karena dalam sistem operasi Windows, komponen Visual C++ umumnya dikenal
sebagai file library dengan ekstensi .dll atau .ocx, maka untuk mendapatkan
komponen-komponen tersebut di internet, pada mesin pencari google misalnya,
anda ketik beberapa kata kunci berikut :ocx, dll, ActiveX, component vc++, free,
dsb.
Untuk mendaftarkan atau menginstal komponen secara manual, ketik
REGSVR32 namafile.ext dalam dos seperti nampak pada ilustrasi gambar 2
dibawah (beberapa komponen juga akan terdaftar secara otomatis saat anda
menginstal program baru pada windows)
Gambar 2. Cara menginstal komponen activeX lewat dos
Tips Praktis Dan Saran
5
Page 6
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
1. Setelah anda memahami konsep bahasa pemrograman visual, sekarang
jalankan Visual C++ pada komputer anda. Pastikan setiap project yang
dirancang memanfaatkan komponen-komponen bawaan VC++, atau dengan
kata lain, saat mulai meng-create project baru, pilih selalu MFC
AppWizar(exe) pada tab project (lihat gambar 3), beri nama project sesuai
kehendak anda (tetapi tentu saja nama tersebut mestinya mencerminkan
aplikasi yang dibangun), click tombol OK.
Gambar 3. MFC : Microsoft Foundation Class
2. Dengan menggunakan Microsoft Foundation Class (MFC) atau komponen
standar VC++, anda akan diberi tiga jenis pilihan aplikasi: Multiple
Document (seperti aplikasi Wordprocessor), Single Document (seperti
Notepad), dan aplikasi tipe Dialog (seperti aplikasi character map). Pada
project-project awal, pilih aplikasi bertipe dialog based seperti nampak pada
gambar 4, click tombol next beberapa kali sampai form dialog perancangan
awal muncul (beberapa pilihan pada jendela antara, anda biarkan saja pada
nilai default-nya), hapus text ”TODO: ...”, tombol OK serta Cancel pada form
6
Page 7
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
tersebut, sehingga sekarang yang tersisa hanyalah form dialog yang kosong
(lihat gambar 5).
Gambar 4. Tiga jenis pilihan aplikasi MFC
Gambar 5. Form Perancangan kosong
7
Page 8
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
3. Kenali terlebih dulu lingkungan VC++ tempat anda nanti melakukan
perancangan. Perhatikan jendela Workspace disebelah kiri form dialog. Pada
jendela tersebut nampak ada tiga buah tab :
• ClassView :Tab ini menampilkan informasi program aplikasi pada
level atau sudut pandang kelas -class (untuk mengetahui konsep kelas,
anda harus sedikit paham tentang bahasa OOP)
• ResourceView: Tab ini menampilkan informasi visual aplikasi yang
sedang dibangun (pada tab inilah nanti anda melakukan desain visual
program)
• FileView: Tab ini menampilkan informasi program aplikasi pada level
file (dalam banyak kasus perancangan, anda nanti akan jarang
berhubungan dengan tab ini)
Setelah familiar dengan lingkungan VC++, mulailah belajar melakukan
perancangan visual: Tempatkan berbagai komponen visual standar (misal,
button, edit box, slider, dan sebagainya) dalam jendela kontrol pada form
dialog sesuai kehendak, jalankan dan amati hasilnya, ubah juga beberapa
properties komponen lewat jendela properties seperti nampak pada gambar 6
(untuk memunculkan jendela tersebut, caranya click mouse kanan, pilih
properties), jalankan dan amati hasilnya.
4. Sampai tahap ini anda seharusnya sudah dapat merasakan apa itu namanya
konsep WYSIWYG pada bahasa pemrograman visual. Jika anda sudah merasa
cukup “bermain-main” dengan komponen standar pada jendela control,
sekarang coba beberapa komponen yang tersimpan di tempat lain: click mouse
kanan, pilih Insert ActiveX Control..., atau click menu project, sorot Add to
project, click Components and Controls, maka nanti akan muncul beragam
komponen yang dapat digunakan untuk project anda. Beberapa nama mungkin
akan bersifat intuitive, sedangkan yang lainnya benar-benar asing, pilih nama
komponen yang kira-kira agak familiar, misal :Microsoft TogleButton,
Microsoft Slider Control, dan sebagainya. Tempatkan komponen-komponen
8
Page 9
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
tersebut pada form dialog, ubah-ubah nilai properties-nya, amati hasilnya
kemudian eksekusi aplikasi anda.
Gambar 6. beberapa komponen visual VC++ dan jendela properties-nya
Untuk banyak tujuan (terutama aplikasi berorientasi Kontrol), salah satu
komponen yang nampaknya ”menarik” anda gunakan adalah chart atau grafik
yang memiliki kemampuan menampilkan data hasil akuisisi dari dunia luar
secara real time (grafik-grafik tersebut umumnya tersedia pada software HMI–
Human Machine Interface komersil).
Dalam VC++ (dan juga VB serta Delphi?), salah satu komponen chart yang
memiliki kemampuan ”grafik bergerak” tersebut adalah Stripchart yang akan
tersedia secara otomatis jika anda sebelumnya telah menginstal sofware
Matlab. Jika belum tersedia, instal terlebih dulu komponen yang dimaksud
dalam sistem anda, caranya ketik (dalam dos): REGSVR32 MWChart.ocx
(file REGSVR32.exe dan MWChart.ocx dapat anda download di
http://iwan.blog.undip.ac.id)
9
Page 10
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
Didalam daftar komponen ActiveX control, MWChart.ocx akan nampak
dengan label Strip Chart ActiveX Control (lihat gambar 7), sorot komponen
tersebut kemudian click tombol OK.
Gambar 7. Komponen Strip Chart untuk menampilkan data real time
Dalam form desain, sekarang akan muncul grafik yang ukurannya dapat anda
sesuaikan lewat mouse, munculkan jendela properties, ubah beberapa nilai,
dan amati pengaruhnya pada chart rancangan (lihat gambar 8).
Sampai langkah ini anda tidak perlu paham dengan cara kerja program
pertama anda, yang paling penting anda sudah mulai merasakan betapa
mudahnya membuat aplikasi menarik dengan komponen-komponen visual
pada Visual C++.
10
Page 11
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
Gambar 8. Tampilan komponen Stripchart beserta daftar properties-nya
Visual C++ Sebagai bahasa Pemrograman event Driven
Selain termasuk bahasa visual, Visual C++ juga digolongkan sebagai bahasa yang
bersifat event driven. Artinya program yang anda bangun pada dasarnya
tidak ”melakukan apa-apa” selain menunggu event atau kejadian.
Apa itu event?. Untuk memahami program event driven yang berjalan pada sistem
operasi Windows, anda harus sedikit paham dengan konsep message atau pesan
dalam Windows: Saat aplikasi dijalankan, apa pun yang anda kerjakan dengan
komputer, Windows akan tahu dan akan selalu memberi pesan pada anda ”hello
anda sekarang lagi menggerakan mouse, ...anda sekarang lagi mengetik
huruf , ...anda sekarang meng-click mouse...., ....anda sekarang meng-click 2x
mouse..., ... anda sekarang meng-close aplikasi, dst,dst..”. intinya ada ratusan
pesan Windows yang akan disampaikan pada aplikasi berdasarkan event yang
terjadi. (bagi anda yang telah terbiasa dengan pemrograman microcontroller,
konsep event ini tidak lain adalah interupsi. Hanya saja jika interupsi, pesan yang
disampaikan pada aplikasi berasal dari perangkat keras, sedangkan event, pesan
yang disampaikan pada aplikasi muncul dari software-sistem operasi)
11
Page 12
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
Terkait dengan pesan yang disampaikan Windows, sekarang masalahnya apakah
aplikasi yang anda bangun mau menangkap dan memproses pesan tersebut atau
tidak. Kalau tidak, berarti pesan dari Windows tersebut abaikan saja, kalau mau...
ya kita tangani (lewat aplikasi tentunya).
Cara penanganan sebuah pesan dalam Visual C++ pada dasarnya relative mudah,
tapi satu hal yang terlebih dulu perlu disampaikan, setiap komponen visual pada
dasarnya hanya memiliki kemampuan menangani sejumlah event tertentu saja:
semakin kompleks sebuah komponen, message dari windows yang mampu
ditangani juga semakin banyak. Gambar 9 dan 10 memperlihatkan sejumlah pesan
berbeda yang mampu ditangani berturut-turut oleh komponen button dan
komponen form dialog. Pesan BN_CLICKED pada button misalnya, akan
disampaikan Windows pada aplikasi jika kita menekan button saat aplikasi
dijalankan (untuk mengetahui pesan apa saja yang mampu ditangani komponen
tertentu, click tombol mouse kanan pada komponen, pilih events. Atau dapat juga
dilakukan lewat jendela MFC ClassWizard : click tombol mouse kanan, pilih
ClassWizard, masuk pada tab Message Map –lihat gambar 11).
Gambar 9. Dua pesan Windows yang mampu ditangani oleh komponen button standar
12
Page 13
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
Gambar 10. Beberapa pesan Windows yang mampu ditangani oleh form dialog utama
Gambar 11. Berbagai pesan yang dapat ditangani komponen
Untuk menangani salah satu pesan dari komponen tertentu, caranya sorot pesan
tersebut, click tombol Add and Edit (lihat kembali gambar 10). Misal jika pesan
yang akan diproses adalah BN_CLICKED sebuah button, maka setelah anda
13
Page 14
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
menekan tombol Add and Edit, selanjutnya akan muncul jendela konfirmasi
nama fungsi atau prosedure default penanganan pesan, nama fungsi bisa anda
ganti sesuai selera atau anda biarkan seperti aslinya, setelah tombol OK ditekan
(lihat gambar 12), sekarang anda akan dibawa ke editor VC++ penanganan pesan
(lihat gambar 13). Ketik kode penanganan pesan di tempat tersebut.
Gambar 12. Nama fungsi default penanganan pesan BN_CLICKED
Gambar 13. fungsi OnButton1() tempat coding penanganan pesan
14
Page 15
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
Sebagai contoh, jika anda ketik perintah :
MessageBox(”Hello kamu tadi mijit aku ya...”);
didalam blok fungsi onButton1 pada gambar 13, maka ketika aplikasi dijalankan
dan tombol button di-click, box pesan seperti nampak pada gambar 14 akan
muncul.
Gambar 14. Keluaran fungsi MessageBox(...)
Gambar 15. Pesan timer windows (WM_TIMER)
15
Page 16
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
Dalam banyak aplikasi, salah satu pesan Windows yang sering digunakan dalam
project adalah timer. Jika anda ingin menangani pesan timer, caranya click mouse
kanan pada form dialog, sorot pesan dengan label WM_TIMER yang terletak di
box sebelah kiri --New Windows messages/events (lihat gambar 15), click
tombol Add and Edit, sekarang VC++ otomatis akan masuk pada jendela editor
tempat coding penanganan pesan timer tersebut (lihat gambar 16).
Gambar 16. Fungsi penanganan pesan WM_TIMER
Sekarang coba ketik perintah dibawah dalam fungsi OnTimer(...)
MessageBox(”Tolong pijit aku dong...”) ; Jalankan aplikasi dan amati, Apa yang terjadi ?.. Ya benar tidak terjadi apa-apa
dengan aplikasi, hal ini dikarenakan anda belum memberi tahu Windows setiap
berapa detik timer expired, atau dengan kata lain anda belum menginisialisasi
timer. Untuk itu anda terlebih dulu perlu menginisialisasinya. Sekarang ketik
perintah inisialisasi dibawah (misal pada fungsi penanganan komponen button1
yang telah anda tempatkan sebelumnya dalam form dialog):
void CTimer0Dlg::OnButton1() { //TODO: Add your control notification handler code here SetTimer(1, 1000, NULL); }
Jalankan, click tombol button, apa yang terjadi?... yang terjadi, setiap 1000 ms (1
detik) akan muncul box pesan seperti yang telah anda ketik pada fungsi
penanganan pesan timer.
Jika anda perhatikan fungsi SetTimer diatas, nampak ada 3 parameter yang
dilewatkan pada fungsi tersebut: Parameter pertama adalah nomer timer (0,1,2,..),
parameter kedua adalah waktu expired timer (dalam satuan ms) dan parameter
ketiga isikan nilai NULL)
16
Page 17
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
Jika misal anda memerlukan 3 buah timer dengan waktu expired masing-masing:
timer 0 = 50ms, timer 1 = 100ms dan timer 3 = 1000 ms. Maka inisialisasinya
adalah:
SetTimer(0, 50, NULL); SetTimer(1, 100, NULL); SetTimer(2, 1000, NULL);
sedangkan dalam fungsi penanganan event timer (OnTimer), anda ketik logika
penanganan masing-masing timer seperti nampak dibawah:
void CTimer0Dlg::OnTimer(UINT nIDEvent) { // TODO: Add your message handler code here and/or call default if(nIDEvent==1) { …… } if(nIDEvent==2) { …… } if(nIDEvent==3) { …… } CDialog::OnTimer(nIDEvent); } Terkait dengan penggunaan timer, pastikan sebelum anda keluar dari aplikasi,
timer telah dimatikan terlebih dulu, ketik perintah
KillTimer(no_Timer);
pada salah satu fungsi penanganan event komponen tertentu. (dalam hal ini misal
komponen tombol – button yang memang difungsikan untuk menghentikan
timer)..
Tips Praktis Dan Saran
1. Buatlah project dari awal lagi dengan langkah-langkah yang telah dijelaskan
pada bagian pertama tulisan ini. Tempatkan beberapa komponen yang
menurut anda menarik, kemudian lihat event-event yang mampu ditangani
17
Page 18
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
komponen tersebut, tidak ada salahnya anda mencoba beberapa event yang
kira-kira namanya relative intuitive.
2. Jika anda benar-benar telah paham tentang konsep event atau message atau
pesan dari Windows, maka kini saatnya anda belajar menggunakan salah satu
komponen yang nantinya difungsikan untuk akuisisi data. Komponen yang
dimaksud adalah komponen PortController. Komponen PortController adalah
komponen dari pihak ketiga yang dapat digunakan sebagai sarana komunikasi
antara komputer dengan dunia luar lewat kabel komunikasi serial.
Untuk tujuan komunikasi serial itu sendiri, VC++ sebenarnya telah
menyediakan komponen standar yaitu Microsoft Communication Control
(nama file mscomm32.ocx-lihat gambar 17)
Gambar 17. Komponen komunikasi standar VC++
Tetapi penggunaan komponen komunikasi serial standar bawaan VC++ ini
secara praktis relative sulit dibandingkan dengan komponen PortController
(lihat http://www.scientificcomponent.com).
Sebelum anda mencobanya, install terlebih dahulu komponen tersebut secara
manual lewat dos:
Ketik REGSVR32 PortController.dll
18
Page 19
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
(file versi trial-nya dapat anda download pada alamat url
http://www.scientificcomponent.com atau http://iwan.blog.undip.ac.id).
Didalam jendela komponen, PortController tersebut akan nampak dengan
label PortController Class seperti terlihat pada gambar 18 berikut:
Gambar 18. Komponen komunikasi serial PortController
Jika komponen tersebut anda pilih, maka sekarang dalam jendela dialog
perancangan akan nampak icon PortController seperti terlihat pada gambar 19
dibawah, kecilkan gambar tersebut lewat mouse kemudian tempatkan pada
wilayah form yang tidak anda gunakan.
Gambar 19. Icon komponen PortController pada form perancancangan
19
Page 20
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
Gambar 20. Properties komponen PortController
Gambar 21. Berbagai jenis event komponen PortController
Selanjutnya, amati properties (gambar 20) dan event-event yang terkait dengan
komponen PortController tersebut (gambar 21).
Walaupun komponen PortController mampu menangani 9 jenis event, tetapi
untuk tujuan komunikasi serial Null Model, pada dasarnya hanya dua event
yang perlu diketahui secara mendalam: DataReceived dan EvCharReceived.
20
Page 21
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
Event DataReceived akan dipicu jika ada sebuah karakter yang masuk ke
dalam buffer memori komputer, sedangkan event EvCharReceived akan
dipicu jika ada sebuah karakter event masuk dari luar ke dalam memori
komputer (karakter event adalah sebuah karakter unik yang sebelumnya anda
isikan pada properties EventChar, misal jika nilai EventChar pada jendela
properties anda isi dengan karakter “:“ (titik dua), maka setiap kemunculan
karakter “:“ pada port serial akan memicu event EvCharReceived).
Untuk tujuan komunikasi serial praktis, event DataReceived dapat kita
gunakan terutama untuk mendeteksi kemunculan data-data biner, sedangkan
event EvCharReceived digunakan jika data yang dikomunikasikan antar
perangkat memiliki format karakter ASCII.
Visual C++ Sebagai Bahasa Pemrograman Berorientasi Objek
Selain termasuk bahasa pemrograman visual dan bersifat event driven, Visual
C++ juga digolongkan sebagai bahasa pemrograman berorientasi objek (walaupun
tidak begitu ketat). Dalam hal ini, hampir semua komponen visual VC++ dapat
diasosiasikan sebagai objek (tetapi tidak semuanya). Setiap objek yang berbeda
memiliki kelas yang berbeda pula.
Dalam Object Oriented Program (OOP) , Konsep kelas (class) pada dasarnya
merupakan perluasan dari tipe data struktur. Dalam hal ini anggota kelas selain
dapat berupa variabel dapat juga berupa fungsi. Berikut ini adalah format standar
deklarasi sebuah kelas class nama_kela private: //optional
s {
anggota_1; anggota_2; : anggota_n; public: //optional anggota_1; anggota_2; : anggota_n; protected: //optional anggota_1; anggota_2;
21
Page 22
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
: anggota_n; } nama_objek;
• Anggota kelas setelah kata kunci private hanya dapat diakses dari
kelas yang sama
• Anggota kelas setelah kata kunci public dapat diakses dari luar kelas
• Anggota kelas setelah kata kunci protected selain dari dalam kelas yang
sama juga dapat diakses dari kelas turunannya.
Ketika anda membuat project berbasis jendela dialog dengan nama katakanlah
my_oop, maka Visual C++ secara otomatis akan meng-create tiga buah kelas
untuk tiga buah objek yang berbeda: CAboutDlg, CMy_oopApp, dan
CMy_oopDlg. Kelas-kelas tersebut beserta anggota kelasnya (baik berupa fungsi
atau variabel-objek) dapat anda lihat pada tab ClassView dalam jendela
workspace (lihat gambar 22). Anggota kelas yang memiliki tanda kunci artinya
bersifat protected sedangkan yang tidak memiliki tanda kunci artinya bersifat
public.
Kelas CAboutDlg adalah kelas yang dimiliki oleh objek jendela about. Jendela ini
akan muncul jika anda meng-click sub-menu about pada gambar icon aplikasi
disebelah ujung kiri atas jendela utama--lihat gambar 23 ( Untuk merancang
tampilan pada jendela tersebut, double click IDD_ABOUTBOX pada tab ResourceView
--lihat gambar 24)
22
Page 23
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
Gambar 22. Tiga kelas dasar pada aplikasi berbasis dialog.
Gambar 23. Jendela about.
23
Page 24
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
Gambar 24. Jendela about.
Sedangkan CMy_oopApp adalah kelas dari objek aplikasi utama yang dipanggil
secara otomatis oleh Windows (dalam banyak kasus perancangan, anda umumnya
tidak akan menyentuh kelas ini), dan terakhir CMy_oopDlg adalah kelas dari
objek komponen jendela dialog. Dalam pembuatan aplikasi, anda dipastikan akan
selalu berhubungan dengan kelas terakhir ini.
Terkait dengan penggunaan komponen Visual C++ pada aplikasi, berikut adalah
sejumlah panduan penting yang dapat membantu perancangan program:
1. Anda perlu mengasosiasikan komponen sebagai sebuah objek (atau sebagai
sebuah variabel), hanya jika nilai dari properties objek tersebut perlu
dimanipulasi atau diakses saat aplikasi dijalankan. Sebagai contoh, komponen
edit box yang kita tempatkan pada form dialog perlu diasosiasikan sebagai
sebuah objek atau variabel karena komponen tersebut dalam program tentunya
digunakan untuk menampilkan data (atau dalam kasus lain, data pada edit box
harus dapat dibaca oleh program). Hal ini berbeda misalnya dengan komponen
button:. Dalam banyak kasus, button yang ditempatkan pada jendela hanya
difungsikan untuk pemicu event OnClick (untuk kepentingan praktis nilai
propertiesnya tidak pernah diubah), sehingga dengan demikian button tersebut
tidak perlu diasosiasikan sebagai objek.
2. Setiap objek dari komponen yang ditempatkan dalam jendela dialog, secara
otomatis menjadi anggota kelas jendela dialog (hal yang sama berlaku juga
pada fungsi-fungsi penanganan pesan atau event). Organisasi kelas dapat
dilihat pada tab ClassView
24
Page 25
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
3. Dalam Visual C++, sejumlah komponen standar selain dapat disosiakan
sebagai objek, juga dapat diasosiasikan sebagai sebuah variabel yang
memiliki tipe data tertentu. Contohnya komponen edit box: Didalam program,
komponen tersebut secara praktis dapat kita asosiasikan sebagai objek
berkelas CEdit (tidak praktis), atau dapat juga kita asosiasikan sebagai sebuah
variabel bertipe sederhana yaitu seperti int, Long, Byte dsb (sangat
disarankan).
4. Untuk mengasosiasikan sebuah komponen sebagai objek (atau variabel),
caranya: pada jendela dialog, pilih komponen, click mouse kanan, pilih
ClassWizard, click tab members variabel pada jendela MFC ClassWizard,
sorot komponen dengan mouse, click tombol Add Variabel, isi nama variabel
atau objek dan terakhir click tombol OK --kalau ditulis jadinya bertele-tele,
jadi langsung aja dipraktekan, gampang kok..:)
Tips Praktis Dan Saran
Jika anda telah benar-benar paham dengan konsep objek, maka sampai tahap
ini, anda sudah dapat membuat aplikasi yang relative lengkap dan “serius”.
Buatlah project-project baru yang memanfaatkan berbagai komponen yang
nanti sering anda gunakan dalam aplikasi akusisi dan monitoring data real
time, yaitu komponen tombol, Stripchart, Portcontroller, slider dan sebagainya.
Contoh-Contoh Aplikasi lengkap
Project 1.
Objective: Menampilkan data dari slider pada chart secara real time.
Komponen yang diperlukan: Tombol, Stripchart, Slider
Langkah:
• Rancang GUI, sehingga tampilan program akan nampak seperti gambar 25
(khusus untuk slider, anda gunakan Microsoft Slider Control 6 yang dapat
25
Page 26
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
diakses pada jendela Insert ActiveX control –lihat gambar 26). Skenario
program: chart akan mulai menampilkan data slider setelah anda meng-click
tombol yang berlabel start, tombol berlabel stop digunakan untuk
menghentikan program.
• Asosiasiakan komponen Slider control dan Stripchart sebagai sebuah objek
dengan cara seperti telah dijelaskan sebelumnya (jika nanti ada peringatan dari
windows, anda tekan saja OK)
Gambar 25. Tampilan Project 1.
Gambar 26. Komponen Slider Control pada jendela ActiveX Control
26
Page 27
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
• Setting beberapa nilai properties kedua komponen tersebut. misal data min-
max slider memiliki jangkauan 0-100, dst.
• Buat fungsi-fungsi penanganan button berlabel Start, button berlabel stop, dan
komponen timer (disini timer digunakan untuk agar setiap selang waktu sekian
ms-- misal 100 ms, program yang dirancang akan membaca nilai slider dan
menampilkannya pada chart (lihat gambar 27)
• Jika anda lakukan secara benar, ketika program dieksekusi dan tombol
berlabel start ditekan maka setiap 100 ms aplikasi akan membaca slider dan
menampilkannya pada char (lihat gambar 28)
Gambar 27. Fungsi-fungsi penanganan pesan
27
Page 28
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
Gambar 28. Tampilan akhir program
Project 2.
Objective: Komunikasi serial “sederhana.
Komponen: Tombol, Edit box, PortControler
Perangkat keras: RS232 dan kabel loop back
Langkah:
• Rancang tampilan GUI seperti nampak pada gambar 29 dibawah: Skenario
program : Ketika tombol berlabel send ditekan maka setiap angka (byte)
pada edit box bawah akan dikirim keluar lewat serial, sedangkan edit box atas
akan menampilkan data byte jika terjadi even DataReceive. Jika pin Rx TX
(pin 2 dan 3) pada port RS232 anda short-kan, maka nantinya setiap angka
byte yang anda kirim akan muncul juga pada edit box atas. Selain itu, disini
dirancang juga, setiap data yang diterima (pada edit box atas) akan
ditampilkan pada chart
28
Page 29
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
Gambar 29. Tampilan Project 2.
• Asosiasiakan komponen Edit box kiri dan kanan sebagai variabel bertipe data
BYTE, dan komponen PortComp sebagai objek komunikasi (Hal yang sama
anda lakukan terhadap komponen Stripchart).
• Ketik Program penanganan setiap pesan: fungsi penanganan button send, stop
monitor, timer dan event dataReceived (lihat gambar 30)
29
Page 30
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
Gambar 30. Penanganan Pesan
• Jangan lupa Inisialisasi timer dan port komunikasi serial-nya, tempatkan
fungsi inisialisasi di OnInitDialog (lihat gambar 31)
Gambar 31. Inisialisasi port serial dan timer
30
Page 31
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
• Jika anda melakukannya secara benar, maka ketika program dieksekusi akan
memiliki tampilan seperti gambar 32. ketik byte pada box bawah , tekan tombol send,
apa yang terjadi?
Gambar 32. Hasil eksekusi project 2
Project 3.
Akan didemokan, project ini menampilkan data real time temperature,
Kelembaban (RH) dan kadar CO2 dari modul DAQ berbasis microcontroller AVR
yang telah penulis bangun. Protokol komunikasi nampak seperti dibawah.
Semoga Bermanfaat
31
Page 32
Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time http://iwan.blog.undip.ac.id
Bahan Bacaan
Antony Pranata, Pemrograman Delphi 6 , 1996
Keterangan:
1. File lib dan file contoh project dapat anda download di
http://iwan.blog.undip.ac.id
2. Informasi yang berkaitan dengan penggunaan Portcontroller dapat anda
lihat di
http://www.scientificcomponent.com
32