SKRIPSI
Ditujukan Untuk Memenuhi Salah Satu Syarat Memperoleh Gelar
Sarjana Teknik Jurusan Teknik Informatika
Disusun Oleh :
Zeno Danny Kuncoro
035314036
TEKNIK INFORMATIKA
FAKULTAS SAINS DAN TEKNOLOGI
UNIVERSITAS SANATA DHARMA
YOGYAKARTA
2009
LAN (LOCAL AREA NETWORK) REMOTE
WEBCAM APPLICATION
A THESIS
Presented as Partial Fulfillment of the Requirements to obtain the Sarjana
Teknik Degree in Department of Informatics Engineering
Created by :
Zeno Danny Kuncoro
035314036
Saya menyatakan dengan sesungguhnya bahwa skripsi yang saya tulis ini
tidak memuat karya atau bagian karya orang lain, kecuali yang telah disebutkan
Penyusun
iv
THANKS TO :
Terimakasih atas segala sesuatu yang telah kau ajarkan ke adikmu ini.
Terimakasih atas waktu, semangat dan telah menjadi yang terbaik buatku.
v
ABSTRAKSI
Hingga saat ini, solusi yang diambil hanyalah menggunakan kamera pengawas
atau CCTV (Closed-Circuit Television), dan ini membutuhkan biaya yang lebih.
yang digunakan karena pada umumnya warnet sudah memiliki webcam disetiap
pendukung saja.
server dan komputer operator menjalankan aplikasi client. Server akan merespon
request client berupa pengiriman citra yang telah ditangkap lalu diproses oleh
periodik inilah yang akan dilakukan terus menerus selama client melakukan
dan webcam yang telah terintegrasi ke dalam sistem operasi dengan baik sebagai
vi
ABSTRACT
crime against theft internet cafes devices by the user. Until now, solutions that are
general, Internet Cafe has a webcam in every workstation that this is only used as
where the workstation computer run the server application and the operator
computer run the client application. The server will respond to client requests in
form of image that has been captured and processed by the server to the client.
Processes the image and send them periodically is what will be done continuously
This application is using Microsoft ® Visual Basic ® 6.0 as the compiler and a
webcam that has been integrated into the operating system as the device that will
vii
LEMBAR PERNYATAAN PENYETUJUAN
Yang bertanda tangan di bawah ini, saya mahasiswa Universitas Sanata Dharma :
Beserta perangkat yang diperlukan (bila ada). Dengan demikian saya memberikan
atau media lain untuk kepentingan akademis tanpa perlu meminta ijin dari saya
maupun memberikan royalty kepada saya selama tetap mencantumkan nama saya
sebagai penyusun.
Dibuat di Yogyakarta
Yang menyatakan
viii
KATA PENGANTAR
Puji dan syukur kepada Tuhan Yang Maha Esa yang telah
Dalam proses penyusunan tugas akhir ini ada begitu banyak pihak yang
tugas akhir ini dapat diselesaikan. Oleh karena itu penyusun mengucapkan terima
ini.
3. Bapak JB. Budi Darmawan, S.T., M.T. dan Bapak Puspaningtyas Sanjoyo
Adi, S.T., M.T. selaku panitia penguji yang telah memberikan kritikan,
5. Bapak Emanuel Belle Bau, Spd. Dan Yustinus Nugroho sebagai laboran
ix
6. Seluruh staff dosen Teknik Informatika Universitas Sanata Dharma yang
angkatan 2003.
10. Seluruh pihak yang telah membantu penulisan, baik secara langsung
maupun tidak langsung yang tidak dapat penyusun sebutkan satu persatu.
Dengan rendah hati penyusun menyadari bahwa tugas akhir ini masih
jauh dari sempurna, oleh karena itu berbagai kritik dan saran untuk perbaikan
tugas akhir ini sangat penyusun harapkan. Akhir kata semoga tugas akhir ini
Penyusun.
x
DAFTAR ISI
BAB I PENDAHULUAN
1.1. Latar Belakang ………………………………………………………….. 1
1.2. Rumusan Masalah ………………………………………………………. 2
1.3. Batasan Masalah ………………………………………………………... 2
1.4. Tujuan Penelitian ……………………………………………………….. 3
1.5. Metodologi Penelitian …………………………………………………... 3
1.6. Sistematika Penulisan …………………………………………………... 4
xi
BAB II LANDASAN TEORI
2.1. Web Camera (webcam) …………………………………………………. 6
2.1.1. Pengertian ………………………………………………………. 6
2.1.2. Teknologi ……………………………………………………….. 6
2.2. Bitmap…………………………………………………………………… 7
2.2.1. Algoritma Penyimpanan ………………………………………... 8
2.2.2. Format file pada umumnya ……………………………………... 9
2.3. JPEG (Join Photographics Expert Group) ……………………………… 10
2.3.1. Encoding ………………………………………………………... 11
2.3.2. Color Space Transformations …………………………………... 11
2.3.3. Downsampling ………………………………………………….. 12
2.3.4. Compression Ratio dan Artifacts ………………………………. 12
2.4. Windows API (Application Program Interface) ………………………... 13
2.5. Windows Socket (Winsock) ……………………………………………. 16
2.6. Pemrograman menggunakan Visual Basic 6.0 …………………………. 20
2.6.1. Integrated Development Environment (IDE) …………………… 20
2.6.2. Program Visual Basic yang sangat sederhana ………………….. 25
2.6.3. Socket Programming menggunakan WinSock …………………. 27
xii
3.3.2.1. Flowchart aplikasi server ……………………………….. 41
3.3.2.2. Flowchart aplikasi client ………………………………... 45
3.3.2.3. Flowchart GUI Server …………………………………... 47
3.3.2.4. Flowchart GUI Client …………………………………... 48
3.3.3. Aplikasi Server………………………………………………….. 49
3.3.3.1. Proses pengambilan citra melalui webcam ……………... 49
3.3.3.2. Proses komunikasi dengan client ……………………….. 50
3.3.4. Aplikasi Client …………………………………………………. 53
3.3.4.1. Proses pengolahan citra ………………………………… 53
3.3.4.2. Proses komunikasi dengan server ………………………. 54
3.3.5. Perancangan GUI (Graphical User Interface) …………………. 54
3.3.5.1. Sketch Graphical User Interface ………………………... 55
3.3.5.2. Mock-up Graphical User Interface ……………………... 60
3.4. Perancangan perangkat keras …………………………………………… 65
xiii
BAB V ANALISIS HASIL
5.1. Konfigurasi aplikasi …………………………………………………….. 93
5.2. Manfaat dan kemudahan ………………………………………………... 96
5.3. Keunggulan dan kekurangan …………………………………………… 97
xiv
DAFTAR TABEL
xvii
DAFTAR GAMBAR
xv
Gambar 3.22. Mock-up form password aplikasi server 60
Gambar 3.23. Mock-up form setting aplikasi server 61
Gambar 3.24. Mock-up form speed setting aplikasi server 61
Gambar 3.25. Mock-up form driver aplikasi server 62
Gambar 3.26. Mock-up form about aplikasi server 62
Gambar 3.27. Mock-up form main aplikasi client 63
Gambar 3.28. Mock-up form password Aplikasi Client 63
Gambar 3.29. Mock-up form setting aplikasi client 64
Gambar 3.30. Mock-up form about aplikasi client 64
Gambar 4.1 Aplikasi server ketika dijalankan 86
Gambar 4.2 Input authentifikasi password 87
Gambar 4.3 Window konfigurasi server 88
Gambar 4.4 Window format video 88
Gambar 4.5 Window Video Source Setting 89
Gambar 4.6 Window konfigurasi kecepatan transfer 89
Gambar 4.7 Window About 90
Gambar 4.8 Aplikasi client ketika dijalankan 91
Gambar 4.9 Window konfigurasi Auto Capture 92
xvi
BAB I
PENDAHULUAN
Tindak kejahatan pencurian dapat terjadi di mana saja, kapan saja dan
menimpa siapa saja termasuk sebuah badan usaha seperti warnet. Pencurian yang
dimaksud adalah pencurian terhadap perangkat keras yang dimiliki sebuah warnet,
seperti RAM, Hard Disk Drive, Processor dan lain-lain yang terdapat di setiap
mampu mengambil gambar (citra) dari obyek yang berada dalam jangkauan
aplikasi PC Video Call terkenal seperti AOL Instant Messenger, MSN Messenger,
Skype, Windows Live Messenger dan Yahoo Messenger. Oleh beberapa protokol
messenger itu webcam dimanfaatkan sebagai sarana penangkap citra yang akan
dikirimkan kepada lawan chatting pada protokol yang sama, sehingga selama
melakukan chatting, user akan merasa seolah-olah ia berada dekat dengan lawan
1
2
kamera pengawas yang berjalan di jaringan komputer. Karena rata-rata saat ini
software ini nanti diharapkan dapat menjadi sebuah solusi terhadap kedua masalah
yang telah dijabarkan di awal tadi. Software ini akan berjalan sebagai aplikasi
client berupa pengiriman data citra yang telah ditangkap lalu diproses oleh server
inilah yang akan dilakukan terus menerus selama client melakukan request kepada
server. Selama proses inilah pengawasan akan dilakukan, data citra yang diterima
oleh client akan ditampilkan kembali menjadi citra yang dapat dilihat oleh mata.
menggunakan clipboard.
atas adalah :
1. Studi pustaka.
2. Perancangan sistem.
didefinikan.
5. Implementasi system.
perancangan sistem.
berikut :
BAB I PENDAHULUAN
Bab ini berisi tentang landasan teori yang digunakan oleh penyusun
dibangun.
Bab ini berisi jawaban dari rumusan masalah yang telah dinyatakan
pada pendahuluan.
BAB VI KESIMPULAN
Bab ini berisi tentang kesimpulan yang dapat diambil dari analisa hasil
LANDASAN TEORI
2.1.1. Pengertian
2.1.2. Teknologi
1
http://en.wikipedia.org/wiki/webcam
2
http://upload.wikimedia.org/wikipedia/commons/thumb/5/51/Axis_network_webcam.jpg/180px-
Axis_network_webcam.jpg
6
7
dengan rata-rata frame rate 25 frames per second sampai 30 frames per
second. Resolusi tertinggi yang dimiliki webcam saat ini adalah 1,3
megapixel.
2.2. Bitmap
pemetaan bit grafis yang digunakan secara internal oleh subsistem grafis OS/2 dan
Microsoft Windows (GDI), dan biasanya digunakan sebagai format file grafis
( 4-bit), 256 ( 8-bit), 65,536 ( 16-bit), atau 16.7 juta ( 24-bit) warna ( bit
http://upload.wikimedia.org/wikipedia/commons/thumb/c/c8/Sweex_USB_webcam_PCB_with_w
ithout_lens_close_up.jpg/284px-Sweex_USB_webcam_PCB_with_without_lens_close_up.jpg
8
direpresentasikan sebagai bit per pixel). 8-bit citra dapat juga menjadi greyscale
sebagai ganti dari warna yang diindekskan. Alfa channel (untuk ketransparanan)
dapat disimpan dalam suatu file yang terpisah, serupa dengan sebuah citra
greyscale. Sebuah versi 32-bit dengan alfa channel yang terintegrasi telah
temanya
yang lebih besar dari format citra yang dikompres untuk citra yang sama.
Sebagai contoh, sebuah citra 800x600 24-bit memiliki ukuran hampir sebesar
1,4 megabyte. Untuk contoh yang lebih konkretnya, citra 1024x768 yang
jika disimpan dengan format BMP, sedangkan jika disimpan dengan format
format BMP tidak cocok untuk pengiriman citra di Internet atau media
akan disimpan menggunakan satu atau lebih byte. Warna dari pixel akan
dihitung (sebagai contoh adalah Picture Viewer) berdasarkan pada nilai dari
byte dan nilai-nilai yang berhubungan yang dibaca dari palet warna.
dihitung sebagai :
9
lebar × tinggi × n
Ukuran file BMP ≈ 54 + 4 × 2 n + , di mana tinggi dan lebar
8
Pada formula di atas, 54 adalah ukuran dari header file bitmap dan
4 × 2 n adalah ukuran dari palet warna. Perlu diingat bahwa ini hanyalah
perkiraan pada sebuah n-bit citra bitmap, meskipun dapat menjadi maksimum
oleh citra, ukuran sebenarnya palet warna akan lebih kecil dari 4 × 2 n .
Bitmap 8-bit atau kurang menggunakan palet warna, untuk bitmap 16-bit atau
lebar × tinggi × n
Ukuran dari file BMP ≈ 54 +
8
lebar × tinggi × n
Ukuran dari file BMP ≈ 54 + u (15 − n) × 4 × 2 n + ,
8
file bitmap secara detil. Perlu diingat bahwa ini adalah standar format file
bitmap, beberapa citra bitmap dapat disimpan menggunakan format yang jauh
kompresi untuk citra fotografi. Nama JPEG merupakan akronim dari Joint
Photographics Experts Group, yang merupakan nama dari sebuah komite yang
standar pada tahun 1992 yang kemudian disetujui pada tahun 1994 sebagai ISO
10918-1.
bagaimana sebuah citra dikompres menjadi sebuah aliran byte dan didekompres
kembali menjadi citra juga format file yang digunakan untuk menyimpan aliran
tersebut. Metode kompresi biasanya kompresi yang merugi, dalam artian beberapa
4
http://en.wikipedia.org/wiki/JPEG
11
kualitas visual akan hilang dalam proses, meskipun ada beberapa variasi pada
garis dasar standar JPEG yang tidak akan merugi. Ada juga format progresif, yang
mana data dikompres dalam beberapa lewatan detil tertinggi secara progresif.
Format ini cukup ideal untuk citra yang besar yang akan ditampilkan selagi
akal sebelum seluruh data diterima. Meskipun demikian progresif JPEG tidak
2.3.1. Encoding
Pertama, citra harus diubah dari RGB menjadi ruang warna yang
berbeda yang disebut YCbCr yang memiliki tiga komponen yaitu Y, Cb dan
YCbCr sama seperti ruang warna yang digunakan oleh PAL, MAC dan
transmisi televisi warna digital (tetapi bukan oleh NTSC, yang menggunakan
ruang warna yang yang serupa YIQ). Konversi ruang warna YCbCr
memungkinkan kompresi yang lebih besar untuk kualitas citra yang sama atau
menerapkan langkah ini dan tetap menyimpannya dalam ruang warna sRGB,
2.3.3. Downsampling
kebutuhan untuk menjadi lebih atau kurang agresif dalam pembagian yang
menghasilkan citra yang tidak dapat dibedakan oleh mata dengan citra yang
asli. Kompresi 100 banding 1 dimungkinkan, namun akan terlihat dengan jelas
programmer dapat membangun sebuah aplikasi yang berjalan dengan baik pada
semua versi Windows selama berpedoman pada fitur-fitur dan kapabilitas yang
sistem
• Diagnosa.
5
http://msdn.microsoft.com/en-us/library/aa383723(VS.85).aspx
14
• Jaringan.
• Keamanan.
shared system object, kontrol hak akses, manajemen hak, dan audit
keamanan.
• Layanan Sistem.
perangkat, proses dan thread. Akses yang dapat dilakukan dapat berupa
DLL (Direct Link Library) yang spesifik, yang memiliki fungsi-fungsi untuk
C/C++, Java dan Delphi. Fungsi-fungsi utama API terdapat dalam 3 file-file DLL
sistem yang terletak pada semua sistem operasi berbasis Windows. Ketiga file-file
• User32.dll
• Kernel32.dll
memori sistem.
• Gdi32.dll
sistem.
sehingga akan jauh lebih cepat dalam pemrosesan data ketimbang menggunakan
fungsi standar yang tersedia di Visual Basic. Akan tetapi pemanggilan dan
eksekusi fungsi API tersebut akan membutuhkan waktu juga, sehingga lebih
dianjurkan untuk menggunakan fungsi API yang tidak terdapat pada fungsi
standar Visual Basic ketika kita akan melakukan sebuah tugas khusus.
selain 3 DLL di atas, selama kita mengerti bagaimana deklarasi untuk mengakses
beberapa program pun dapat mengakses sebuah fungsi API yang sama dalam
socket hampir sama dengan antarmuka jaringan perangkat keras yang digunakan
berkomunikasi dengan remote system melalui protokol transport (TCP atau UDP).
API yang digunakan oleh pengembang aplikasi, dan Service Provider Interface
(SPI), yang menyediakan arti bagi pengembang perangkat lunak jaringan untuk
menambahkan modul protokol baru ke dalam sistem . API menjamin bahwa suatu
penggunaan yang sesuai dari API, suatu aplikasi Winsock dapat bekerja pada
lapisan OSI. TCP/IP adalah protokol jaringan berada pada lapisan 3 dan 4 pada
data transport, routing dan logical connection melalui jaringan. Dua komputer
harus menggunakan protokol jaringan jika program yang berjalan pada komputer
tersebut ingin berkomunikasi. Protokol jaringan yang umum lainnya adalah IPX
pada Novell, 3Com pada IBM, NetBIOS pada Windows, DECNet pada Digital
6
http://tangentsoft.net/wskfaq/glossary.html
7
http://tangentsoft.net/wskfaq/glossary.html
18
Pada saat ini Winsock telah mencapai versi 2.0. Versi ini merupakan
pengembangan dari versi pendahulunya yaitu versi 1.1. Versi 2.0 memberikan
dukungan untuk beberapa protokol transport, meskipun versi 1.1 tidak terbatas
pada TCP/IP saja Versi 2.0 juga mendukung prakarsa teknis seperti Quality of
Service (QoS) dan multicasting. Teknologi ini akan meningkat seiring dengan
konferensi tanpa menduplikasi data lagi. Winsock 2.0 bekerja dengan mekanisme
high efficiency I/O overlapped Win32 sejak Windows NT mendukung I/O overlap
2.0 juga memperbolehkan Layered Service Provider (LSP) untuk yang membuka
banyak hal seperti plug-ins keamanan: drop in, say, dan SSL.
koneksi antar titik dalam jaringan harus tersambung terlebih dahulu sebelum
8
http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/rzab6/rxab6500.gif
9
http://publib.boulder.ibm.com/infocenter/iseries/v5r4/topic/rzab6/rxab6300.gif
20
memperbaiki, lalu menciptakan file yang dapat dieksekusi oleh mesin. File-
file ini berdiri sendiri di luar lingkungan dan karenanya dapat dikirimkan
Visual Basic.
program Visual Basic untuk pertama kali, maka kita akan diminta untuk
memilih tipe project yang akan diciptakan. Pilih Standard EXE sebagai awal
Gambar 2.7 Kotak dialog New Project yang tampil saat menjalankan
10
• Project Window
• Form Designer
Designer kita dapat mengatur posisi dan ukuran kontrol objek di dalam
form. Aplikasi dapat memiliki banyak form, dan hanya dapat dibuka
• Toolbox Window
Toolbox window memiliki satu set kontrol objek yang secara default
• Code Window
• Properties Window
nama dari form yang kita pilih dengan mengedit nilai pada property
Caption.
• Color Palette
• Form Layout
tampil saat program berjalan. Kita bisa mendrag form ke tempat yang
• Immediate Window
• Object Browser
• Locals Window
Locals window hanya akan aktif ketika program dijalankan, yang akan
menampikan list dari nilai semua variabel modul atau prosedur lokal.
• Watches Window
Call Stack Window hanya akan tampil saat melakukan break pada
Gambar 2.8 Lingkungan Visual Basic 6.0 dengan beberapa jendela yang
tampil
25
Pilih icon pada Toolbox lalu klik kiri pada form dan
“cmdExit”.
aplikasi
memilih “Start With Full Compile” pada menu Run Visual Basic
berikut ini
11
11
http://www.phoenixbit.com/site/tutorials/Programming/Visual%20Basic/winsock1/WinsockSour
ce.zip
29
yang lost), host mati atau offline dan lain-lain. Untuk menangani
5. Ada event yang akan terpicu ketika koneksi tertutup, event ini
tertutup.
host
'penanganan error
'(sebagai contoh, penyusun akan menangani error
ketika akan mengirimkan data saat belum terkoneksi)
Exit Sub
t:
MsgBox "Error : " & Err.Description
sock1_Close 'tutup koneksi
End Sub
dalam event _DataArrival yang akan terpicu setiap kali ada data
yang diterima. Berikut ini adalah kode yang menangani data yang
12
dan “TxtSend”.
12
http://www.phoenixbit.com/site/tutorials/Programming/Visual%20Basic/winsock1/WinsockSour
ce.zip
34
klik kanan pada Toolbox lalu pilih “Component” dan cari “Microsoft
diset remote IP dan Port yang akan digunakan, lalu mencoba untuk
local port lalu listening pada port tersebut, yang berarti bahwa
dalam setiap form server dan form client, maka dapat menggunakan shortcut
Perancangan Sistem
akan saling berkomunikasi melalui media jaringan LAN (Local Area Network).
Mengapa berjalan pada jaringan LAN, apakah tidak dapat berjalan pada jaringan
Internet ? Sebenarnya secara kemampuan aplikasi ini dapat berjalan pada jaringan
Internet, akan tetapi dikarenakan keterbatasan lebar pita data (bandwidth) yang
dimiliki setiap komputer berbeda dan kecepatan transfer data yang dibutuhkan
oleh aplikasi ini cukup tinggi, maka ada kemungkinan bahwa akan terjadi jeda
waktu penampilan citra yang cukup lama, sehingga citra akan ditampilkan dengan
terputus-putus.
melakukan request koneksi kepada server, lalu server akan meminta autentifikasi
berupa password kepada client. Jika password yang diterima sesuai dengan
pengiriman data citra yang telah ditangkap oleh server kepada client. Setiap
alamat IP yang melakukan request koneksi, hasil dari autentifikasi password dan
37
38
waktu terjadinya akan dicatat oleh server dan disimpan ke dalam file log untuk
dapat dilakukan tracing terhadap status webcam. Proses pengambilan citra oleh
server dan mengirimkannya ke client akan dilakukan terus menerus selama tidak
ada request untuk menghentikan proses oleh client atau koneksi yang terputus.
sebagai berikut :
7x 8x 9x 10 x 11x 12 x 7x 8x 9x 10x 11 x 12 x
Ethernet
C
7 8 9 101112
A 1 23 45 6 1x 2x 3x 4x 5x 6x 1x 2x 3x 4x 5x 6x
A B
berbasiskan text. Sistem operasi pada workstation dan monitoring server adalah
>>
de
clu
in
<<
3.3.2. Flowchart
Secara keseluruhan, aplikasi server akan mulai listening pada port yang
request untuk connect dari client, aplikasi server akan mulai mengambil
Start
Port in use?
false
insocket[int]
int index
index=0
listening state
false
connection
request ?
true
true
index++
index < 10
false
end
Pada proses ini, socket sisi server akan melemparkan requestID dari
connection request sisi client kepada socket lain pada sisi server yang
sedang menganggur atau free lalu membuat socket tersebut yang akan
request connect dari sisi client hingga mencapai jumlah index port yang
Start
false
Create capture
preview
Capture device
Paste clipboard to
PictureBox
Export PictureBox to
JPG Stream
end
Start
Temp string
true
end false
dahulu, ketika image stream tersebut ada, maka aplikasi server akan
Aplikasi client akan mencoba untuk connect ke server pada port yang
ke server diterima maka aplikasi client akan mulai menerima paket data
ditolak atau timeout, maka aplikasi client akan menutup port yang
Start
Connected?
true
Temp string
false false
Write temp to file
Latest buffer
package
true
end
buffer
Untuk menyimpan image stream yang telah diterima dari server, aplikasi
client akan menerima satu persatu data stream buffer dari server lalu
Inti dari software ini berada pada sisi server. Kegagalan proses akan
setiap kegagalan proses yang terjadi. Ada dua proses berbeda yang dilakukan
dan kernel32.dll. Aplikasi server akan mencari driver control webcam jika
capture citra yang ada pada jendela preview maka digunakanlah fungsi
diletakkan dalam sebuah control object picture berupa citra yang berformat
BMP (bitmap) dan memiliki ukuran file yang cukup besar. Melalui control
object picture citra yang akan dikirimkan itu dapat dilihat secara visual.
Karena ukuran file citra yang cukup besar untuk ditransferkan melalui
50
untuk mendapatkan ukuran file citra yang kecil namun tetap memiliki
kualitas yang baik. Hasil dari pengubahan tersebut yang akan disimpan
menjadi file buffer untuk dapat digunakan oleh proses berikutnya, yaitu
komunikasi.
membentuk sebuah komunikasi yang baik dan relevan antara server dengan
sandi tertentu.
berikutnya.
perintah dan data citra akan dikirimkan dan diterima oleh server. Untuk
dapat menerima paket data, maka winsock harus berada pada kondisi
listening state. Selama state listening, server akan menerima data yang
perintah dan autentifikasi saja, selain dari itu hanya akan diacuhkan dan
berupa paket data citra dan akan mengirimkan data tersebut kepada client
pengambilan citra akan dibaca dan diubah menjadi bit-bit data lalu dipecah-
client dan proses pengiriman citra ini akan dilakukan secara periodik dengan
dengan aplikasi pada sisi server, yang membedakan hanyalah proses yang
dilakukan. Adapun proses yang akan dilakukan pada sisi client adalah sebagai
berikut :
yang mencolok. Perbedaan yang ada hanyalah pada bagian proses, dimana
pada sisi client tidak membutuhkan proses pengambilan citra, namun tetap
ada proses pengolahan citra dikarenakan data citra yang telah dikirim oleh
aplikasi server perlu diolah kembali agar dapat ditampilkan menjadi citra
yang dapat dilihat secara visual. Hasil terjemahan proses komunikasi yang
berupa bit-bit data citra yang terpecah-pecah akan digabungkan lalu diolah
buffer. Melalui control object picture, file buffer tersebut akan diload dan
visual. Proses ini merupakan kebalikan dari proses yang dilakukan pada
aplikasi server.
(Internet Protokol). Untuk dapat menerima paket data citra dari server, client
harus berada pada kondisi listening state. Selama state listening, client akan
yang berupa data citra saja, selain dari itu hanya akan diacuhkan dan tidak
diambil tindakan apa-apa. Begitu juga saat mengirimkan data, client hanya
oleh pengguna, maka perlu dibuatlah sebuah rancangan antarmuka atau GUI
sehingga pengguna dapat berinteraksi dengan aplikasi yang akan dibuat oleh
maka penyusun pun perlu untuk membuat sketch atau sketsa terlebih dahulu
diambil mock-up atau screen capture aplikasi server dan client ini. Mock-
dengan kecepatan proses yang cukup tinggi, memiliki webcam yang telah terinstall
dengan baik pada sistem operasi dan terkoneksi melalui kabel USB (Universal Serial
Bus), memiliki satu buah kartu jaringan dan telah terinstall aplikasi server pada sistem
kecepatan proses yang cukup tinggi, memiliki 1 buah kartu jaringan dan telah
terinstall aplikasi client pada sistem operasinya. Masing-masing kartu jaringan pada
3. RAM : 128 (non shared), 256 (32 MB shared) atau lebih tinggi
4. VGA : 32 MB
Jika fitur auto capture pada aplikasi client digunakan, maka harus
memiliki kapasitas hard disk sebesar 20GB dengan maintenance secara manual setiap
Switch atau hub yang akan digunakan sebagai konsentrator pada jaringan
webcam pada LAN. Karena aplikasi ini berbasiskan jaringan, maka tidak menutup
kemungkinan aplikasi ini dapat dipergunakan pada internetwork atau internet, namun
di sini penyusun hanya akan membahas mengenai implementasi pada LAN saja.
sebagai berikut :
SP2
sebagai berikut :
1024Mb RAM
66
67
1024Mb RAM
1024Mb RAM
Card
transfer yang akan ditangani oleh socket atau lebih dikenal dengan nama winsock.
dan konversi citra tidak akan dibahas secara mendetail, mengingat ruang lingkup
yang akan meluas pada API dan juga waktu yang dibutuhkan tidak mencukupi.
Fungsi-fungsi API yang penulis gunakan, telah dideskripsikan oleh E. J. Bantz Jr.
yang menggabungkan semua fungsi pengolahan citra menjadi sebuah modul pada
Visual Basic.
Seperti telah dijelaskan pada sub bahasan di atas, proses pengambilan citra
melalui API akan memanfaatkan DLL windows, yaitu avicap32.dll , kernel32.dll dan
user32.dll. Penggunaan API ini lebih banyak digunakan pada aplikasi server, karena
aplikasi server yang langsung berhubungan dengan webcam dan akan mengakses
Declare Function lStrCpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As Long, ByVal
lpString2 As Long) As Long
Declare Function lStrCpyn Lib "kernel32" Alias "lstrcpynA" (ByVal lpString1 As Any,
ByVal lpString2 As Long, ByVal iMaxLength As Long) As Long
Declare Sub RtlMoveMemory Lib "kernel32" (ByVal hpvDest As Long, ByVal hpvSource
As Long, ByVal cbCopy As Long)
Declare Sub hmemcpy Lib "kernel32" (hpvDest As Any, hpvSource As Any, ByVal
cbCopy As Long)
69
ke dalam buffer.
seperti lStrCpy, hanya saja fungsi ini lebih mengarah pada pengkopian
memory dalam blok 4-bytes yang akan diikuti oleh byte-byte sisanya.
Pada user32.dll (library user32), fungsi yang akan digunakan adalah sebagai
berikut ini:
posisi dan Z order dari sebuah child, pop-up atau top-level window.
70
window yang telah ditentukan. Fungsi ini juga mengeset nilai 32-bit
pesan tersebut.
sebagai berikut:
' Put Clipboard's data to picPreview, but verified it first (is it DIB?)
If Clipboard.GetFormat(8) Then
picPreview.Picture = Clipboard.getData
72
penanganan terhadap file buffer, penanganan terhadap log citra dan penanganan
aplikasi ini untuk mencegah aplikasi crash, dikarenakan jika tidak ada kontrol
terhadap koneksi maka pengiriman data akan dilakukan asal-asalan tanpa peduli
apakah koneksi masih terjalin ataukah tidak. Dengan memanfaatkan timer control
maka proses pengecekan konektivitas dapat dilakukan secara berkala sehingga error
atau crash dapat sedikit ditekan. Selain itu proses di dalam timer control akan
menutup koneksi yang menganggur terlalu lama untuk mencegah aplikasi membanjiri
Berikut ini merupakan proses yang dilakukan pada timer control client dan
server, event pada timer control inilah yang melakukan pengecekan terhadap
lblStatus.Caption = "Status : Port " & inSock.LocalPort & " " & inState
hell:
If Err.Number = 10048 Then
'err.number 10048 == address in use then exit program
MsgBox "Port " & FormMain.inSock.LocalPort & " already in use. Please specify other port at
Setting Window", vbExclamation, "Port in use"
tmrSocketState.Enabled = False
frmSetting.Show
74
End If
End Sub
Timer control juga digunakan untuk menangani file buffer dan log citra
karena saat aplikasi menggunakan sebuah file, file tersebut akan terkunci dan tidak
dapat digunakan oleh proses yang lain sampai file tersebut ditutup oleh proses yang
membukanya. Ketika sebuah proses lain akan membuka file yang sedang digunakan
oleh proses lain maka akan timbul konflik di dalam aplikasi yang akan menyebabkan
aplikasi crash. Sebuah proses di dalam timer control akan melakukan penjadualan
Penjadualan pada proses juga perlu dilakukan dan ditangani oleh timer
control. Masing-masing proses dalam aplikasi akan diurutkan sesuai urutan yang
seharusnya dan dipanggil oleh timer control. Proses yang berada di dalam timer
clipboard, peletakan citra ke dalam picture box, pengeksportan citra menjadi buffer
dan dikonversi menjadi JPEG lalu mengirimkannya kepada client. Jika runtutan
proses tersebut tidak berjalan secara urut, maka akan timbul konflik di dalam aplikasi,
'writeImage
'SavePicture picPreview.Picture, FileName
Call SAVEJPEG(getWidth(lwndCap), getHeight(lwndCap), FileName, JPEGQUALITY, picPreview)
'send file buffer to remote host and then load file buffer to _
preview window after all buffer has been send
If ISAUTHENTICATED(Index) Then
If sendFile(FileName, Index) Then
'imgView.Picture = LoadPicture(FileName)
End If
Else
lblpackage.Caption = "Session Not Authenticated"
closeSession (Index)
End If
'checking for connection. if not connected then stop camera routine
If Not isReadyToCommunicate(outSock(Index)) Or Not NextPart(Index) Then
tmrSender(Index).Enabled = False
closeSession (Index)
End If
'delete file buffer
'If Dir(FileName) <> "" Then Kill FileName
End If
hell:
End Sub
Untuk melakukan logging terhadap gambar webcam yang telah diterima dari
server, pada aplikasi client juga menggunakan timer control. Proses logging akan
dilakukan berdasarkan interval pada timer control yang mengatur proses logging
End If
End Sub
yang sama, akan tetapi secara proses masing-masing aplikasi memiliki alur yang
berbeda. Pada sisi server, socket akan bersifat multiple sehingga sisi server mampu
untuk menerima multiple connection dari beberapa host. Fungsi seperti ini dilakukan
dengan cara menyiapkan satu socket untuk selalu listening pada port yang sudah
didefinisikan sebelumnya, lalu disediakan juga socket lain yang akan berkomunikasi
secara langsung dengan client yang melakukan request connect ke server. Sedang
pada sisi client, masing-masing socket akan dialokasikan hanya untuk satu connection
ke server, meskipun secara tampilan sisi client memiliki banyak target host, namun
Berikut ini merupakan proses pada sisi server untuk menangani event
request connect.
GoTo hell
End If
End If
For i = 0 To 10
If FreeConn(i) Then
FreeConn(i) = False
outSock(i).Close
outSock(i).Accept requestID
'MsgBox "Porting Connection to index " & i
Exit For
End If
Next
hell:
inSock.Close
End Sub
Pada proses ini, socket sisi server akan melemparkan requestID dari connection
request sisi client kepada socket lain pada sisi server yang sedang menganggur atau
free lalu membuat socket tersebut yang akan berkomunikasi dengan sisi client. Proses
penerimaan requestID tersebutlah yang akan dilakukan secara terus menerus selama
Ketika konektivitas sudah terjalin maka antara client dengan server dapat
memulai untuk mengirimkan data. Untuk dapat saling berkomunikasi dengan baik,
dibuatlah sebuah protokol lain selain TCP/IP yang akan berfungsi untuk
membahasakan isi dari paket data yang dikirimkan. Seperti halnya protokol YM
(Yahoo! Messenger), protokol ini penyusun beri nama protokol ITP (invisible_theater
protokol) Berikut ini merupakan protokol ITP yang dirangkum dalam satu module
Visual Basic:
78
Option Explicit
'******************************************************************************
' Author: invisible_theater (invisible_theater@yahoo.com) '
' (invisible.theater@gmail.com) '
' '
' Date: 07/02/2007. '
' Copyright: Copyright© 2007, invisible_theater. '
' Purpose: webcamera syncronization and comunication as '
' internet protocol. '
' '
' Details: '
' ITP module (invisible_theater Protocol) '
' '
' NOTE: '
' '
' '
'******************************************************************************
End Function
getCommand = arrDATA(1)
Debug.Print "getCommand :: " & arrDATA(1)
End Function
Public Function setFrame(ByVal Command As String, Optional password As String, Optional data As
String) As String
'Dim dataPacket As String
End Function
menjadi paket data yang terenkripsi, seperti paket data autentifikasi password. Selain
itu, modul tersebut memiliki fungsi-fungsi yang berguna untuk menterjemahkan dari
paket data mentah menjadi paket data yang siap dikirimkan melalui jaringan dan
sebaliknya.
maupun aplikasi client harus selalu melakukan sinkronisasi mengenai paket data yang
telah diterima dan yang akan dikirimkan. Sinkronisasi tersebut berguna untuk
memastikan apakah paket data tersebut rusak atau tidak, selain itu berguna untuk
memastikan akhir dari sebuah stream paket data. Sinkronisasi tersebut berupa
Proses yang akan terjadi pada sisi server ketika menerima data dari client :
Else
End If
End Sub
dahulu, apakah koneksi dengan client sudah terjalin atau belum. Ketika koneksi telah
terjalin maka setiap paket data yang diterima oleh server akan diterjemahkan
Ketika hasil terjemahan tersebut berupa permintaan untuk mengirimkan paket stream
'writeImage
'SavePicture picPreview.Picture, FileName
Call SAVEJPEG(getWidth(lwndCap), getHeight(lwndCap), FileName, JPEGQUALITY, picPreview)
'send file buffer to remote host and then load file buffer to _
preview window after all buffer has been send
If ISAUTHENTICATED(Index) Then
If sendFile(FileName, Index) Then
'imgView.Picture = LoadPicture(FileName)
End If
Else
lblpackage.Caption = "Session Not Authenticated"
84
closeSession (Index)
End If
'checking for connection. if not connected then stop camera routine
If Not isReadyToCommunicate(outSock(Index)) Or Not NextPart(Index) Then
tmrSender(Index).Enabled = False
closeSession (Index)
End If
'delete file buffer
'If Dir(FileName) <> "" Then Kill FileName
End If
hell:
End Sub
terlebih dahulu, setelah melewati kedua validasi tersebut maka aplikasi server akan
mengirimkan paket data kepada aplikasi client pada socket yang bersangkutan.
Proses pada aplikasi client ketika menerima paket data dari server :
.Picture.Width / 26.46, _
.Picture.Height / 26.46
End With
Else
End If
Case ""
lblStatus.Caption = "NOT DEFINED COMMAND"
'writeLogDataIn (PartFile & " BLANK : " & packetData)
Else:
End If
hell:
End Sub
86
Seperti halnya pada sisi server, proses ini juga akan menerjemahkan paket data yang
diterima menjadi perintah yang akan dilakukan oleh client. Setelah paket data
diterjemahkan, maka client juga akan mengirimkan paket data kepada server
capture citra dari webcam dan akan listening pada socket yang telah didefinisikan
pada konfigurasi.
yang dapat diterapkan pada aplikasi server, seperti ubah password, filter IP,
Untuk melihat mengenai informasi aplikasi server, pengguna dapat memilih menu
Pada aplikasi client, ketika aplikasi dijalankan pengguna akan diminta untuk
memasukkan hostname dan port yang digunakan oleh aplikasi server, setelah itu
Untuk menjalankan fitur auto capture pada aplikasi client, pengguna dapat memilih
ANALISA HASIL
Pada bab ini penyusun akan memberikan analisa mengenai konfigurasi aplikasi,
buat.
melakukan analisa terhadap hasil serta kinerja aplikasi adalah sebagai berikut ini :
2 RAM 512 Mb
3 VGA 64 Mb dedicated
2 RAM 1024 Mb
3 VGA 32 Mb dedicated
93
94
Dari ujicoba yang telah penyusun lakukan pada dua warnet yang sama-sama
memiliki traffic local yang cukup tinggi, didapatkan hasil rerata sebagai berikut
ini :
Dari tabel hasil di atas, refresh rate yang dihasilkan tidak selalu
berbanding lurus dengan peningkatan nilai speed dan MTU, dimana semakin
besar nilai MTU maka besar data yang akan dikirimkan per-transmit akan
semakin besar, dan semakin kecil nilai speed maka jumlah stream citra yang akan
95
dikirimkan semakin banyak. Namun jika nilai kualitas gambar diturunkan maka
akan memiliki pengaruh yang cukup signifikan terhadap nilai refresh rate.
Sebagai bukti atas ujicoba yang telah penyusun lakukan, berikut ini
Dari hasil capture destop tersebut di atas, terlihat juga nilai penggunaan CPU
antara 15-18%, dan pada aplikasi client penggunaan CPU berkisar antara 3-10%.
Hal ini membuktikan bahwa aplikasi yang telah penyusun buat, tidak
jaringan LAN dan jaringan internet. Aplikasi ini memiliki manfaat dan
server.
3. Kualitas citra dan kecepatan transfer antara client dan server dapat
kemampuan jaringan.
menggunakan password.
98
server.
saran mengenai hal-hal yang terkait dengan aplikasi remote webcam yang penyusun
buat.
6.1. Kesimpulan
2. CPU usage aplikasi remote webcam pada sisi server dan sisi client
menggunakan webcam untuk aplikasi yang lain, selain itu clipboard pun
99
100
default.
6.2. Saran
Mandelbrot Set, The, Advanced Microsoft Visual Basic 6.0 , Microsoft® Press,
1998
Press, 1993
http://webster.cs.ucr.edu/Page_win32/kernelref.pdf
JPEG
http://en.wikipedia.org/wiki/JPEG
http://msdn.microsoft.com/en-us/library/aa383723(VS.85).aspx
http://tangentsoft.net/wskfaq/glossary.html
Winsock Example
http://www.phoenixbit.com/site/tutorials/Programming/Visual%20Basic/w
insock1/WinsockSource.zip
101