• Tidak ada hasil yang ditemukan

Implementasi API dalam aplikasi

BAB I PENDAHULUAN

4.2. Implementasi API dalam aplikasi

Dalam proyek ini, penyusun hanya menitikberatkan pembahasan pada data

transfer yang akan ditangani oleh socket atau lebih dikenal dengan nama winsock.

Pembahasan mengenai fungsi-fungsi API yang akan menangani pengambilan citra

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

resource webcam untuk mengambil gambar dan mentransfernya ke client.

Pada kernel32.dll (library kernel32), fungsi yang akan digunakan adalah

sebagai berikut ini

Declare Funct ion lStrCpy Lib " kernel32" Alias " lstrcpyA" (ByVal lpString1 As Long, ByVal lpSt ring2 As Long) As Long

Declare Funct ion lSt rCpyn Lib " kernel32" Alias " lst rcpynA" (ByVal lpSt ring1 As Any, ByVal lpString2 As Long, ByVal iM axLengt h As Long) As Long

Declare Sub RtlM oveM emory 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)

Penjelasan dari masing-masing fungsi API tersebut adalah sebagai berikut :

lSt rCpy

pada library kernel32 berfungsi untuk mengkopi sebuah string

ke dalam buffer.

lSt rCpyn

pada library kernel32 memiliki fungsi yang hampir sama

seperti lStrCpy, hanya saja fungsi ini lebih mengarah pada pengkopian

sejumlah karakter dari sebuah string saja.

Rt lM oveM emory

pada library kernel32 berfungsi untuk memindahkan

memory dalam blok 4-bytes yang akan diikuti oleh byte-byte sisanya.

hmemcpy

pada library kernel32 berfungsi untuk mengkonversi

user-defined variable menjadi sebuah string.

Pada user32.dll (library user32), fungsi yang akan digunakan adalah sebagai

berikut ini:

Declare Funct ion Set WindowPos Lib " user32" (ByVal hw nd As Long, ByVal hWndInsert Aft er As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal w Flags As Long) As Long

Declare Function Dest royWindow Lib " user32" (ByVal hndw As Long) As Boolean Declare Function Get Syst emM et rics Lib "user32" (ByVal nIndex As Long) As Long Declare Funct ion Set Window Text Lib " user32" Alias " Set Window TextA" (ByVal hw nd As Long, ByVal lpSt ring As St ring) As Long

Declare Funct ion Set Window Long Lib " user32" Alias " Set Window LongA" (ByVal hw nd As Long, ByVal nIndex As Long, ByVal dw NewLong As Long) As Long

Declare Funct ion SendM essage Lib "user32" Alias " SendM essageA" (ByVal hw nd As Long, ByVal wM sg As Long, ByVal w Param As Int eger, ByVal lParam As Long) As Long

Penjelasan dari masing-masing fungsi API tersebut adalah sebagai berikut :

Set WindowPos

pada library user32 berfungsi untuk mengubah ukuran,

posisi dan Z order dari sebuah child, pop-up atau top-level window.

Window-window tersebut akan diurutkan berdasarkan penampakan

atau tampilnya di layar.

Dest royWindow

pada library user32 berfungsi untuk menutup sebuah

window. Fungsi ini akan mengirimkan pesan WM_DESTROY dan

WM_NCDESTROY kepada window untuk menonaktifkan window

dan melepaskan fokus keyboard dari window tersebut.

Get Syst emM etrics

pada library user32 berfungsi untuk mengambil system

metric atau seting konfigurasi sistem.

Set Window Text

pada library user32 berfungsi mengubah teks pada

sebuah window yang telah ditentukan.

Set WindowLong

pada library user32 berfungsi mengubah atribut dari

window yang telah ditentukan. Fungsi ini juga mengeset nilai 32-bit

pada offset yang telah ditentukan ke dalam extra window memory.

SendM essage

pada library user32 berfungsi memanggil prosedur

window pada window yang telah ditentukan dan tidak akan

mengembalikan nilai hingga prosedur window selesai memproses

pesan tersebut.

Pada avicap32.dll (library avicap32), fungsi-fungsi yang digunakan adalah

sebagai berikut:

Declare Function capCreat eCapt ureWindow A Lib " avicap32.dll" ( _ ByVal lpszWindow Name As St ring, _

ByVal dw St yle As Long, _

ByVal X As Long, ByVal Y As Long, ByVal nWidt h As Long, ByVal nHeight As Integer, _ ByVal hWndParent As Long, ByVal nid As Long) As Long

Declare Function capGet DriverDescriptionA Lib " avicap32.dll" ( _ ByVal wDriver As Int eger, _

ByVal lpszName As St ring, _ ByVal cbName As Long, _ ByVal lpszVer As St ring, _ ByVal cbVer As Long) As Boolean

Penjelasan dari masing-masing fungsi API tersebut adalah sebagai berikut :

capCreat eCaptureWindow A

pada library avicap32 berfungsi untuk

membuat atau membentuk window capture frame yang akan

digunakan untuk menampilkan hasil capture dari imaging device.

Window capture frame ini nanti akan penyusun letakkan di dalam

sebuah picture box.

capGet DriverDescript ionA

pada library avicap32 berfungsi untuk melihat

satu-persatu driver imaging device yang telah terinstall pada sistem.

Proses pengambilan citra dilakukan dengan memanggil fungsi berikut ini

pada rutin event timer:

Privat e Sub tmrCam_Timer() On Error GoTo hell Dim i As Integer

If isCameraON <> True Then GoTo hell

Else

'get preview w indow frame Call capGrabFrame(lw ndCap)

' Copy current frame t o Clipboard Call capEdit Copy(lw ndCap)

' Put Clipboard's dat a t o picPreview , but verified it first (is it DIB?) If Clipboard.Get Format(8) Then

' clear clipboard Clipboard.Clear End If End If hell: End Sub

Fungsi-fungsi API di atas lebih banyak dipergunakan oleh aplikasi server,

karena aplikasi serverlah yang langsung menggunakan webcam.

Dokumen terkait