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 rCpypada library kernel32 berfungsi untuk mengkopi sebuah string
ke dalam buffer.
•
lSt rCpynpada 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 emorypada library kernel32 berfungsi untuk memindahkan
memory dalam blok 4-bytes yang akan diikuti oleh byte-byte sisanya.
•
hmemcpypada 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 WindowPospada 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 royWindowpada 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 etricspada library user32 berfungsi untuk mengambil system
metric atau seting konfigurasi sistem.
•
Set Window Textpada library user32 berfungsi mengubah teks pada
sebuah window yang telah ditentukan.
•
Set WindowLongpada 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 essagepada 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 Apada 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 ionApada 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