Pada bagian ini
kita akan membahas aplikasi yang dibuat menggunakan Visual Basic yang digunakan
untuk mengelola atau mengatur perangkat pewaktu 8 zone masukan yang dibuat.
Aplikasi yang akan disampaikan diutamakan untuk membaca dan mengirim data
pewaktu yang diperlukan.
Jika Sobat
mengikuti semua langkah yang akan dipaparkan maka akan menghasilkan tampilan
jendela aplikasi seperti di bawah ini:
Untuk menghasilkan
seperti di atas ikuti langkah-langkah berikut:
Bukalah aplikasi
Visual Basic dan mari kita mulai pembuatan programnya. Hal pertama pada
tampilan View Object, kita akan mulai mendesain tampilan dan obyek apa saja
yang diperlukan. Oh iya, kita nama proyek yang dibuat dengan prjDelay8Zone.
Buatlah sebuah
forms dengan nama frmDlyUtama. Property BorderStyle dipilih 1 – Fixed Single
dengan ControlBox dipilih False. Pada Property Caption isilah “Aplikasi 8
Channel Delay”. Terkhir adalah menentukan StartUpPosition pada 2 –
CenterScreen.
Agar tampilan
jendela aplikasi kita terlihat lebih manis, kita perlu menambahkan Menu Bar.
Pada keyboard tekan Ctrl+E untuk menampilkan Menu Editor. Mulailah membuat
obyek yang diperlukan.
Pada Menu Editor
buatlan menu dengan nama mnuTools dengan Caption “&Tools” dan mnuHelp
dengan Caption “&Help”. Di bawah mnuTools akan kita buat beberapa sub-menu
antara lain mnuBaca dengan Property Caption “&Retrieve” dan buatlah sebuah
Shortcut “Ctrl+R”, kemudian mnuKirim dengan Caption “&Send data” dan
Shortcut “Ctrl+S”, terakhir mnuKeluar dengan Caption “&Exit”. Pada mnuHelp
hanya sebuah sub-menu yaitu mnuAbout dengan Caption “&About” dan Shortcut
“Ctrl+A”. Nah bagian Menu Bar sudah selesai.
Forms yang kita
buat akan diisi dengan beberapa obyek. Satu per satu akan dilengkapi hingga
memperoleh seperti tampilan pada gambar awal tulisan ini.
Buatlan frame
dengan fraTimer. Isilah Property Caption dengan “Timer Settings”. Pada fraTimer
akan diisi dengan beberapa label bernama lblTimer yang dibuat secara array
sebanyak 8 buah. Ubahlan Property Caption masing-masing dengan lblTimer(0)
dengan “Timer 1”, lblTimer(1) dengan “Timer 2” dan seterusnya sampai
lblTimer(7) dengan “Timer 8”. Kemudian masih label yang lain adalah lblMenit
yang juga array sebanyak delapan dengan Property Caption sama yaitu “minutes”
untuk lblMenit(0) sampai lblMenit(7). Yang lainnya dalam fraTimer adalah
membuat beberapa TextBox, juga secara array yaitu txtTimer(0) sampai
txtTimer(7). Pilihlah Property Alignment 1- Right Justify. Tetapkan MaxLength
sebanyak 3 dan kosongkan isi Property Text.
Berikutnya
tambahkan sebuah frame dengan nama fraReport dengan Property Caption
dikosongkan. Di dalam fraReport kita akan menambahkan 2 buah label
masing-masing dengan nama lblUnit dengan Caption “Disconnect” dan lblReport
dengan Caption “Preparing connection to device” sebagai Property Caption Awal
yang nanti semua akan diubah pada program Code. Kita juga menambahkan sebuah
obyek Shape dengan nama shpTimer dengan Property Shape 0 – Rectangle.
Setelah kita
membuat 2 buah Frame, pada obyek Forms kita akan ditambahkan 3 buah
CommandButton, yaitu bernama cmdBaca dengan Caption “RETRIEVE”, cmdKirim dengan
Caption “SEND” dan cmdKeluar dengan Caption “EXIT”.
Nah, semua obyek
sudah kita lengkapi. Sekarang kita akan menambahkan beberapa komponen yang
diperlukan. Dari ToolBox General kita akan menambahkan 2 buah komponen Timer
yaitu bernama Timer 1 dengan Interval 250 dalam satuan mili detik dan Timer 2
dengan Interval 100 ms.
Agar aplikasi kita
dapat menjalankan perintah komunikai serial melalui gerbang RS-232 maka kita
harus menambahkan komponen MSComm. Biasanya pada Tabulasi ToolBox General
komponen ini belum ada. Untuk itu ada beberapa cara untuk menampilkan Kotak
dialog Components. Klik kanan mouse pada ToolBox General lalu pilih Components.
Cara lainnya adalah melalui Menu Bar dengan memilih Project lalu pilih
Components. Atau dengan keyboard kita bisa menekan Ctrl+T. Terserah Sobat mau
pilih yang mana. Yang penting akan tampil kotak dialog seperti berikut:
Pada kotak dialog
Components cari dan pilihlah Microsoft Comm Control 6.0 lalu Apply.
Pada ToolBox
sekarang sudah ada ikon bergambar telepon. Masukkan ikon komponen tersebut pada
form kita dengan nama MSComm1. Ubahlah Property Rthreshold dengan nilai 1.
Langkah berikutnya
adalah membuat beberapa modul yang berisi pernyataan yang akan dijalankan oleh
aplikasi. Pada View Code, kita lanjutkan pekerjaan membuat aplikasi.
Pertama menentukan
beberapa variabel yang dibutuhkan pada aplikasi yaitu variabel Status, Scan,
Buffer dan Timer yang berjenis string. Sobat bisa menggunakan pernyataan As
String tapi aku lebih suka dengan tanda $. Kemudian variabel lainnya adalah
Integer dengan nama Nomor dan Port.
Option
Explicit
Dim Status$,
Scan$, Buffer$, Nomor%, Port%, Timer$(7)
Berikut adalah modul dan pertanyaan untuk CommandButton. Pada
Sub cmdBaca diawali dengan penjebakan kesalahan On Error. Perintah utamanya
adalah menon-aktifkan Timer2 dan mengosongkan Buffer. Yang terpenting dari
cmdBaca adalah mengirim informasi serial dengan data “<T>”.
Private Sub
cmdBaca_Click()
On Error Resume Next
lblReport.Caption = "Request data from
device": Timer2.Enabled = False: Buffer = "": MSComm1.Output =
"<T>"
End Sub
Pada Sub cmdKeluar, aku sedikit show-up dengan menampilkan
mnuAbout_Click sebelum menututp gerbang serial dan keluar.
Private Sub
cmdKeluar_Click()
mnuAbout_Click
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End
End Sub
Pada Sub cmdKirim dimulai dengan mengisi variabel Timer$(0)
sampai Timer$(7) dengan isi dari txtTimer(0).Text sampai txtTimer(7). Isi
variabel timer harus berupa 3 buah karakter angka jika kurang maka akan
ditambahkan dengan “0” termasuk jika isi txtTimer ternyata kosong. Pernyataan
selanjutnya adalah mengisi variabel Nomor dengan 0 dan mengaktifkan Timer1
serta menon-aktifkan Timer2.
Private Sub
cmdKirim_Click()
For Nomor = 0 To 7 Step 1
Timer(Nomor) = Right(("000"
& val(txtTimer(Nomor).Text)), 3)
Next Nomor
Nomor = 0: lblReport.Caption =
"Request to send": Timer1.Enabled = True: Timer2.Enabled = False
End Sub
Inilah modul yang pertama akan dilaksanakan saat aplikasi
dijalankan. Ini akan menon-aktifkan hampir semua obyek kecuali cmdKeluar dan
fraReport.
Private Sub
Form_Load()
On Error Resume Next
Scan = "OK": fraTimer.Enabled =
False: Port = 1
cmdBaca.Enabled = False: cmdKirim.Enabled =
False
mnuBaca.Enabled = False: mnuKirim.Enabled =
False
For Nomor = 0 To 7 Step 1
txtTimer(Nomor).Enabled = False:
lblTimer(Nomor).Enabled = False
lblMenit(Nomor).Enabled = False
Next Nomor
End Sub
Di bawah adalah Sub mnuAbout yang berfungsi menampilkan
keterangan tentang aplikasi dan pembuatnya dengan MessageBox.
Private Sub
mnuAbout_Click()
MsgBox "Remote 8 Channels Delay
Trigger Software, Ver. 0.1" & vbCrLf & _
"Create by Sigit Widodo"
& vbCrLf & _
"Powered by ARSYTEC" &
vbCrLf & vbCrLf & _
"Thank 's for use our
product.", , "About Me"
End Sub
Menu-menu selanjutnya hanya akan menjalankan perintah dari modul
CommandButton. Ketiga menu tersebut adalah seperti berikut ini:
Private Sub
mnuKeluar_Click()
cmdKeluar_Click
End Sub
Private Sub
mnuKirim_Click()
cmdKirim_Click
End Sub
Private Sub
mnuBaca_Click()
cmdBaca_Click
End Sub
Sub MSComm1_OnComm adalah semacam jebakan yang akan dijalankan
bilamana adanya data yang diterima melalui gerbang serial. Seluruh data akan
ditampung pada Buffer dan baru akan diproses setelah menjumpai karakter “>”.
Karakter kode pertama dari perangkat yang diperiksa adalah “T” untuk isi dari
Timer perangkat dan disimpan pada variabel Timer. Kode lainnya adalah “S” namun
hanya akan digunakan untuk menentukan isi variabel Status dengan “OK”. Sub ini
juga membatasi data serial yang masuk sampai dengan 35 byte pada Buffer.
Private Sub
MSComm1_OnComm()
On Error Resume Next
Buffer = Buffer & MSComm1.Input
If Right(Buffer, 1) = ">" Then
If Mid(Buffer, 2, 1) = "T"
Then
Timer(0) = Mid(Buffer, 3, 3):
Timer(1) = Mid(Buffer, 7, 3): Timer(2) = Mid(Buffer, 11, 3)
Timer(3) = Mid(Buffer, 15, 3):
Timer(4) = Mid(Buffer, 19, 3): Timer(5) = Mid(Buffer, 23, 3)
Timer(6) = Mid(Buffer, 27, 3):
Timer(7) = Mid(Buffer, 31, 3)
For Nomor = 0 To 7 Step 1
txtTimer(Nomor).Text =
Val(Timer(Nomor))
Next Nomor
Buffer = "":
lblReport.Caption = "Received data complete": Timer2.Enabled = True
ElseIf Mid(Buffer, 2, 1) =
"S" Then
Status = "OK"
End If
Else
If Len(Buffer) > 35 Then Buffer =
""
End If
End Sub
Sub Timer1 adalah modul untuk mengirimkan data pewaktu ke
perangkat dimulai dari pewaktu A sampai dengan H. Setelah selesai Sub ini akan
menon-aktifkan dirinya sendiri dan menjalankan Timer2.
Private Sub
Timer1_Timer()
On Error Resume Next
lblReport.Caption = "Sending to Timer
" & Nomor + 1 & " with value " & Val(Timer(Nomor))
Select Case Nomor
Case 0: MSComm1.Output =
"<A" & Timer(Nomor) & ">": Nomor = Nomor + 1
Case 1: MSComm1.Output =
"<B" & Timer(Nomor) & ">": Nomor = Nomor + 1
Case 2: MSComm1.Output =
"<C" & Timer(Nomor) & ">": Nomor = Nomor + 1
Case 3: MSComm1.Output =
"<D" & Timer(Nomor) & ">": Nomor = Nomor + 1
Case 4: MSComm1.Output =
"<E" & Timer(Nomor) & ">": Nomor = Nomor + 1
Case 5: MSComm1.Output =
"<F" & Timer(Nomor) & ">": Nomor = Nomor + 1
Case 6: MSComm1.Output =
"<G" & Timer(Nomor) & ">": Nomor = Nomor + 1
Case 7: MSComm1.Output = "<H"
& Timer(Nomor) & ">": Nomor = Nomor + 1
Case 8: lblReport.Caption =
"Download data completed": Timer1.Enabled = False: Timer2.Enabled =
True
End Select
End Sub
Sub Timer2 diperlukan untuk mendeteksi keberadaan perangkat
dengan melakukan penyisiran atau scan pada COM1 sampai COM10. Tadinya aku
sempat buat hingga 99 karena menggunakan konverter USB ke RS-232 dan mendapat
jatah COM55. Meski bisa diubah menjadi COM4 tapi setiap kali baru dikonfigurasi
secara otomatis oleh PC selalu kembali ke COM55. Pada saat scan Timer2
menggunakan Interval 500ms. Setelah perangkat diketemukan maka Timer2 akan
melakukan penyegaran dengan Interval 5s. Baik scan atau penyegaran dengan
mengirim data “<I>” ke perangkat.
Private Sub
Timer2_Timer()
On Error Resume Next
If Status = "OK" Then
If Scan = "OK" Then
Scan = "":
fraTimer.Enabled = True
lblUnit.Caption =
"Connected": shpTimer.FillColor = vbGreen
lblReport.Caption = "Found
device on COM" & Port - 1: Timer2.Interval = 5000
cmdBaca.Enabled = True:
cmdKirim.Enabled = True
mnuBaca.Enabled = True:
mnuKirim.Enabled = True
For Nomor = 0 To 7 Step 1
txtTimer(Nomor).Enabled = True:
lblTimer(Nomor).Enabled = True: lblMenit(Nomor).Enabled = True
Next Nomor
End If
Else
If Scan = "" Then Form_Load
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
If Port > 10 Then Port = 1
Timer2.Interval = 500
lblUnit.Caption =
"Disconnect": shpTimer.FillColor = vbRed
lblReport.Caption = "Looking for
device on COM" & Port
MSComm1.CommPort = Port:
MSComm1.Settings = "9600,n,8,1": MSComm1.PortOpen = True: Port = Port
+ 1
End If
Buffer = "": Status =
"": MSComm1.Output = "<I>"
End Sub
Modul berikut untuk mengatur masukan pada TextBox dari txtTimer.
Kita akan melakukan jebakan untuk membatasi masukan pada nilai 0 sampai 255
sesuai dengan nilai byte yaitu yaitu maksimal 255 (FFH).
Private Sub
txtTimer_Change(Index As Integer)
If Val(txtTimer(Index).Text) > 255
Then
MsgBox "Please set timer value
from 0 to 255", , "Entry Failure": txtTimer(Index) =
Val(Timer(Index))
End If
txtTimer(Index).Text =
Val(txtTimer(Index).Text)
End Sub
Demikian aplikasi untuk perangkat pewaktu 8 saluran yang dibuat.
Sekarang kita bisa mengatur nilai pewaktu dari perangkat. Aplikasi lain yang
berkaitan dengan perangkat akan dibahas pada kesempatan lain. Setidaknya
sekarang perangkat sudah dapat dioperasikan dan dikelola.
Untuk koneksi
antara Serial Port PC dengan perangkat, perhatikan gambar berikut:
Pada konektor
sebelah kanan, hubungkan terminal TXD dengan pena 2 dari konektor DB9, RXD
dengan pena 3 dan GND pada pena 5.
Udah ya, makasih udah baca postingan aku. Semoga bisa bermanfaat,
sukur-sukur bisa diterapkan oleh sobat semua.
Salam....