Tertanggal 14 Mei 2010, Saya mengunjungi www.vbforums.com kemudian membaca uraian diskusi mengenai interfacing data berupa waveform (grafik yang terbentuk dari distribusi variasi inputan data yang menyerupai gelombang sinusoidal). Berdasarkan uraian tanya jawab dari beberapa narasumber forum tersebut, saya mencoba memvisualkan script Vb.net yang mereka diskusikan. Secara Garis besar diskusi tersebut mencoba memvisualisasikan grafik inputan data serial dari RS232, data contoh yang diinterpretasikan adalah data tegangan DC dengan maksimum (+/-) 5 Volt. Pada Aplikasi ini inputan datanya merupakan data counter (+/-) 4 Volt (hanya data contoh).
Hasil tampilannya perhatikan gambar di atas. ToolBox yang akan kita gunakan perhatikan tabel di bawah ini.
1 UserForm | Name: UserForm1 Caption: V. Hutabalian's Blog "Sinusoidal" |
1 Timer | Name:Timer1 Enable:True Interval: 100 ms |
1 PictureBox | Name:PictureBox1 |
1 Label | Name: Label 1 Caption Label1: Nilai data yang diinterpretasikan berupa grafik data: |
1 TextBox | Name: TextBox1 |
Desain Form dari ToolBox di atas perhatikan gambar di bawah ini.

Setelah Anda mendesain Form di atas dengan mengatur setiap properties yang di miliki oleh setiap object ToolBox. Ketikkan source program di bawah ini dengan mengarahkan kursor pada design Form, Klik kanan lalu pilih View Code.
Source Program:
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++'
' Grafik Counter Data Sinusoidal Real Time '
'======================================================================='
' Graphic Data menyerupai Sinusoidal '
' Berbagi ilmu Sensasi Kepuasan Tersendiri '
' visual by: V. Hutabalian ==>> Source: www.vbforums.com '
' Publish to V. Hutabalian's Blog 16 Mei 2010 '
'+++++++++++++++++++++++========================++++++++++++++++++++++++'
Public Class Form1
Dim volts As Single
Dim voltsQ As New Queue(Of Single)
Dim maxVolts As Single = 5
Dim coun As Integer = 0
Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
Dim g As Graphics = e.Graphics
Dim vertFont As New Font("Verdana", 10, FontStyle.Bold)
Dim horzFont As New Font("Verdana", 10, FontStyle.Bold)
Dim vertBrush As New SolidBrush(Color.Blue)
Dim horzBrush As New SolidBrush(Color.Blue)
Dim horzBrush1 As New SolidBrush(Color.Blue)
Dim BluePen As New Pen(Color.Blue)
g.DrawLine(BluePen, 50, 225, 50, 15)
g.DrawLine(BluePen, 50, 120, 260, 120)
Dim Origin As New Point(50, 119)
Dim xAxisLength As Integer = 230
Dim yAxisLength As Integer = -115
If voltsQ.Count > 1 Then
Dim voltsQarray As Single() = voltsQ.ToArray
Dim DataPoints(voltsQ.Count - 1) As Point
Dim x, y As Integer
For i As Integer = 0 To voltsQ.Count - 1
Dim v As Single = voltsQarray(i)
x = Origin.X + CInt(i * xAxisLength / 40)
y = Origin.Y + CInt(v * yAxisLength / maxVolts)
DataPoints(i) = New Point(x, y)
Next
e.Graphics.DrawCurve(Pens.Green, DataPoints)
End If
Dim vertStrFormat As New StringFormat()
vertStrFormat.FormatFlags = StringFormatFlags.DirectionVertical
g.DrawString("-", horzFont, horzBrush, 49, 113, vertStrFormat)
g.DrawString("-", horzFont, horzBrush, 49, 113, vertStrFormat)
g.DrawString("-", horzFont, horzBrush, 59, 113, vertStrFormat)
g.DrawString("-", horzFont, horzBrush, 69, 113, vertStrFormat)
g.DrawString("-", horzFont, horzBrush, 79, 113, vertStrFormat)
g.DrawString("--", horzFont, horzBrush, 89, 106, vertStrFormat)
g.DrawString("-", horzFont, horzBrush, 99, 113, vertStrFormat)
g.DrawString("-", horzFont, horzBrush, 109, 113, vertStrFormat)
g.DrawString("-", horzFont, horzBrush, 119, 113, vertStrFormat)
g.DrawString("-", horzFont, horzBrush, 129, 113, vertStrFormat)
g.DrawString("--", horzFont, horzBrush, 139, 106, vertStrFormat)
g.DrawString("-", horzFont, horzBrush, 149, 113, vertStrFormat)
g.DrawString("-", horzFont, horzBrush, 159, 113, vertStrFormat)
g.DrawString("-", horzFont, horzBrush, 169, 113, vertStrFormat)
g.DrawString("-", horzFont, horzBrush, 179, 113, vertStrFormat)
g.DrawString("--", horzFont, horzBrush, 189, 106, vertStrFormat)
g.DrawString("-", horzFont, horzBrush, 199, 113, vertStrFormat)
g.DrawString("-", horzFont, horzBrush, 209, 113, vertStrFormat)
g.DrawString("-", horzFont, horzBrush, 219, 113, vertStrFormat)
g.DrawString("-", horzFont, horzBrush, 229, 113, vertStrFormat)
g.DrawString("--", horzFont, horzBrush, 239, 106, vertStrFormat)
g.DrawString(" 4 --", vertFont, vertBrush, 25, 12)
g.DrawString(" --", vertFont, vertBrush, 25, 12)
g.DrawString(" -", vertFont, vertBrush, 25, 17)
g.DrawString(" -", vertFont, vertBrush, 25, 22)
g.DrawString(" -", vertFont, vertBrush, 25, 27)
g.DrawString(" -", vertFont, vertBrush, 25, 32)
g.DrawString(" 3 --", vertFont, vertBrush, 25, 37)
g.DrawString(" --", vertFont, vertBrush, 25, 37)
g.DrawString(" -", vertFont, vertBrush, 25, 42)
g.DrawString(" -", vertFont, vertBrush, 25, 47)
g.DrawString(" -", vertFont, vertBrush, 25, 52)
g.DrawString(" -", vertFont, vertBrush, 25, 57)
g.DrawString(" 2 --", vertFont, vertBrush, 25, 62)
g.DrawString(" --", vertFont, vertBrush, 25, 62)
g.DrawString(" -", vertFont, vertBrush, 25, 67)
g.DrawString(" -", vertFont, vertBrush, 25, 72)
g.DrawString(" -", vertFont, vertBrush, 25, 77)
g.DrawString(" -", vertFont, vertBrush, 25, 82)
g.DrawString(" 1 --", vertFont, vertBrush, 25, 87)
g.DrawString(" --", vertFont, vertBrush, 25, 87)
g.DrawString(" -", vertFont, vertBrush, 25, 92)
g.DrawString(" -", vertFont, vertBrush, 25, 97)
g.DrawString(" -", vertFont, vertBrush, 25, 102)
g.DrawString(" -", vertFont, vertBrush, 25, 107)
g.DrawString(" 0", vertFont, vertBrush, 25, 112)
g.DrawString(" -", vertFont, vertBrush, 25, 117)
g.DrawString(" -", vertFont, vertBrush, 25, 122)
g.DrawString(" -", vertFont, vertBrush, 25, 127)
g.DrawString(" -", vertFont, vertBrush, 25, 132)
g.DrawString(" --", vertFont, vertBrush, 25, 137)
g.DrawString(" -1--", vertFont, vertBrush, 25, 137)
g.DrawString(" -", vertFont, vertBrush, 25, 142)
g.DrawString(" -", vertFont, vertBrush, 25, 147)
g.DrawString(" -", vertFont, vertBrush, 25, 152)
g.DrawString(" -", vertFont, vertBrush, 25, 157)
g.DrawString(" --", vertFont, vertBrush, 25, 162)
g.DrawString(" -2--", vertFont, vertBrush, 25, 162)
g.DrawString(" -", vertFont, vertBrush, 25, 167)
g.DrawString(" -", vertFont, vertBrush, 25, 172)
g.DrawString(" -", vertFont, vertBrush, 25, 177)
g.DrawString(" -", vertFont, vertBrush, 25, 182)
g.DrawString(" --", vertFont, vertBrush, 25, 187)
g.DrawString(" -3--", vertFont, vertBrush, 25, 187)
g.DrawString(" -", vertFont, vertBrush, 25, 192)
g.DrawString(" -", vertFont, vertBrush, 25, 197)
g.DrawString(" -", vertFont, vertBrush, 25, 202)
g.DrawString(" -", vertFont, vertBrush, 25, 207)
g.DrawString(" --", vertFont, vertBrush, 25, 212)
g.DrawString(" -4--", vertFont, vertBrush, 25, 212)
vertFont.Dispose()
horzFont.Dispose()
vertBrush.Dispose()
horzBrush.Dispose()
BluePen.Dispose()
Dim Font1 As New Font("Comic Sans MS", 10, FontStyle.Bold)
g.TranslateTransform(30, 148)
g.RotateTransform(180)
g.DrawString("Volts (V)", Font1, _
Brushes.Blue, 0, 0, New StringFormat(StringFormatFlags.DirectionVertical))
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
coun = coun + 1
If coun > 4 Then
coun = -4
End If
TextBox1.Text = coun
voltsQ.Enqueue(coun)
If voltsQ.Count > 40 Then voltsQ.Dequeue()
Me.Refresh()
End Sub
End Class
Setelah Anda mengetikkan listing source program diatas tekan F5, maka hasil tampilan visualnya seperti gambar di bawah ini.

Artikel terkait mengenai Tips ini:
INPUT LISTBOX Vs PLOTTING (X,Y) Vs PICTUREBOX===>>Klik disini
Grafik Dynamic Line Visual Basic 2008===>>Klik disini
ThreadGraph Dynamic Line Visual Basic 2008===>>Klik disini
Dynamic Line Plotting Data Random Visual Basic 2008===>>Klik disini
Grafik 2D PictureBox Visual Basic 2008===>>Klik disini
Pengembangan lebih lanjut, disesuaikan dengan kebutuhan variasi data inputan Anda. Semoga bermanfaat.
Selamat mencoba Guys! Nantikan Tips Aplikasi Cantik Lainnya by Verynandus Hutabalian.
3 komentar:
bro gw tertarik ma postingan ini, coz gw lg ta sekarang,,,
klo ngambil data dari rs232 gmn ya??
gw bingung bgt,,
mohon bantuannya ya,,,,
Kamu bisa hunting, di internet....
di sana sudah tersedia cara penggunaanya..........
Saya pngen tahu data yang kamu ambil dari mana?? mis: mikrokontroler atau apa gitu???
Oh yaa, kalau masih bingung kirim saja ke email saya atau alamat email kamu apa????
saya ambil data dari mikrokontroller ATmega 8535,,,
saya lagi bkin ekg jadi bingung bgt,,,
klo pingin dikotak2 bs g??
email saya lxpato@gmail.com,,
mohon bantuannya ya mas,,,
Posting Komentar