Tutorial Pemrograman VB.NET: Contoh Program Delay (Tundaan)


flight-delayed

Seringkali saya menerima pertanyaan mengenai bagaimana membuat delay pada program, khususnya VB.NET karena hampir semua produk driver relay Teknik Elektro Links menyertakan CD yang berisi contoh program pengendalian relay melalui port serial RS232 atau melalui port paralel LPT yang dibuat menggunakan VB.NET 2005 Express Edition.

Ada kalanya pada suatu aplikasi kita perlu mengaktifkan relay namun hanya sesaat (impulse). Jadi ketika diperintahkan maka relay akan ON, dan sekian detik atau sekian milidetik kemudian relay kembali OFF. Untuk menghasilkan kerja relay yang demikian, maka kita memerlukan fungsi delay atau penunda waktu. Berikut adalah beberapa contoh teknik pemrograman fungsi delay pada VB.NET dengan menggunakan teknik penundaan waktu yang nantinya dapat Anda bandingkan sendiri kelebihan dan kekurangannya.

TEKNIK 1 – Menggunakan Perulangan
Perulangan dapat digunakan untuk menghasilkan delay. Pada VB.NET kita bisa menggunakan perulangan FOR..NEXT sebagai berikut:

Public Class Form1
    Private Sub TombolON_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TombolON.Click
        TextBox1.Text = "ON"
    End Sub

    Private Sub TombolOFF_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TombolOFF.Click
        TextBox1.Text = "OFF"
    End Sub

    Private Sub TombolIMPULSE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TombolIMPULSE.Click
        Dim x As Long
        TextBox1.Text = "ON"
        TextBox1.Refresh()
        For x = 1 To 100000000
         
‘Do Nothing
        Next
        TextBox1.Text = "OFF"
    End Sub
End Class

 

Contoh program memiliki 3 buah tombol yakni Tombol ON, Tombol OFF, dan Tombol IMPULSE. Tombol ON berfungsi mengubah status text menjadi ON. Tombol OFF berfungsi mengubah status text menjadi OFF. Dan Tombol Impulse berfungsi mengubah status text menjadi ON selama beberapa saat dan kemudian mengubah kembali status text menjadi OFF.

delay_for_nextUntuk menghasilkan tundaan, fungsi TombolIMPULSE menggunakan perulangan For..Next (dicetak tebal pada listing program). Program mengeksekusi perulangan x=1 sampai dengan x=10000000 dengan tanpa melakukan apa-apa (Do Nothing).

Dengan cara ini kita bisa menghasilkan tundaan waktu dengan mudah. Namun demikian, kita tidak tahu persis berapa lama waktu tundaan yang kita dapatkan dari perulangan tersebut. Dan lagi, durasi tundaan yang dihasilkan akan berbeda jika program ini dijalankan pada komputer dengan kecepatan prosesor yang berbeda. Semakin tinggi kecepatan prosesor, maka akan semakin kecil waktu tundaan yang dihasilkan.

Jadi teknik delay menggunakan perulangan seperti ini hanya digunakan pada program dengan delay yang non-critical. Yang penting ada delay selama sekian waktu, tidak penting berapa waktu delay yang dibutuhkan.

TEKNIK 2 – Menggunakan Fungsi Sleep()
Windows API memiliki fungsi bawaan sleep() yang berfungsi memberikan tundaan proses selama beberapa milidetik. Untuk mengakses fungsi ini caranya adalah sebagai berikut:

Private Sub TombolIMPULSE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TombolIMPULSE.Click
        Dim x As Long
        TextBox1.Text = "ON"
        TextBox1.Refresh()
        System.Threading.Thread.Sleep(500)
        TextBox1.Text = "OFF"
End Sub

Fungsi TombolIMPULSE di atas masih memiliki fungsi yang sama dengan sebelumnya, hanya saja fungsi tundaan waktu tidak lagi menggunakan perulangan For..Next melainkan menggunakan fungsi sleep(). Dengan fungsi sleep() kita dapat memberikan tundaan waktu dengan tepat dan jelas. Contoh di atas memberikan tundaan waktu selama 500 milidetik atau 0,5 detik.

Pemanggilan fungsi TextBox1.Refresh() mutlak dilakukan agar perubahan properti Text pada komponen TextBox1 terlihat. Jadi TextBox1 harus di-Refresh sebelum fungi tundaan waktu sleep() dipanggil. Jika tidak, maka perubahan properti Text pada TextBox1 tidak akan terlihat.

TEKNIK 3 – Membuat Fungsi Delay Berbasis TickCount
.NET menyediakan sebuah properti TickCount yang menyatakan waktu yang telah terlampaui dalam satuan milidetik semenjak komputer dinyalakan. Fungsi ini dapat diakses melalui Environment.TickCount.

Dengan memanfaatkan properti ini kita dapat membuat sebuah fungsi delay dengan satuan milidetik sebagai berikut.

Sub DelayMs(ByVal n As Integer)
        Dim x As Long
        x = Environment.TickCount
        While (Math.Abs(Environment.TickCount – x) < n)
            Application.DoEvents()
        End While
End Sub

Nah, sekarang kita dapat membuat tundaan waktu dengan satuan milidetik dengan menggunakan fungsi DelayMS() dengan perintah-perintah sebagai berikut.

Private Sub TombolIMPULSE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TombolIMPULSE.Click
        Dim x As Long
        TextBox1.Text = "ON"
        DelayMs(500)
        TextBox1.Text = "OFF"
End Sub

Kelebihan teknik ketiga ini adalah proses akan terus berjalan selama proses tundaan waktu berjalan. Hal ini disebabkan oleh perintah Application.DoEvents(). Dengan demikian, perintah TextBox1.Refresh() dapat dihilangkan.

Catatan
Fungsi Application.DoEvents() juga dapat diletakkan dalam perulangan For..Next pada teknik pertama untuk memastikan bahwa Windows tetap memproses event-event yang terjadi selama proses perulangan.

Demikian sekelumit tentang pembuatan delay pada VB.NET, semoga bermanfaat.

Selamat belajar!

🙂

Tinggalkan Balasan

Isikan data di bawah atau klik salah satu ikon untuk log in:

Logo WordPress.com

You are commenting using your WordPress.com account. Logout / Ubah )

Gambar Twitter

You are commenting using your Twitter account. Logout / Ubah )

Foto Facebook

You are commenting using your Facebook account. Logout / Ubah )

Foto Google+

You are commenting using your Google+ account. Logout / Ubah )

Connecting to %s