Top Banner
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://iwan.blog.undip.ac.id [email protected]
32

daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time Kata Pengantar Bagi anda yang belum pernah menggunakan ...

Jun 29, 2018

Download

Documents

truongtruc
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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: daqvc.pdf - iwan.blog.undip.ac.id · Tutorial Visual C++ untuk Aplikasi Akuisisi dan Monitoring Data secara Real Time  Kata Pengantar Bagi anda yang belum pernah menggunakan ...

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