Pada kali ini saya akan membagikan cara mengakses zedgraph dengan menggunakan bahasa basic pada visual studio 2013. Pada tutorial ini kalian perlu untuk mendownload framework zedgraph disini. Kemudian kalian add reference dengan cara berikut :
Kemudian pastikan bahwa zedgraph sudah tercentang pada add reference project yang anda buat, seperti ini :
Lalu buatlah project baru dengan susunan komponen seperti ini :
dengan rincian :
combobox1 : beri nama "cmbPort"
combobox2 : beri nama "cmbBaud"
button1 : beri nama "btnConnect"
button2 : beri nama "btnDisconnect"
Zedgraph : beri nama"ZedGraphControl1"
TextBox1 : beri nama "rtbReceived"
Timer1,Timer2,SerialPort,TimerZedGraph
Berikut list program VB :
Imports System
Imports System.ComponentModel
Imports System.Threading
Imports System.IO.Ports
Imports ZedGraph 'Imports Library Zedgraph untuk grafik
Public Class Form1
'Variabel Untuk Data Serial
Private readBuffer As String = String.Empty
Private Bytenumber As Integer
Private ByteToRead As Integer
Private byteEnd(2) As Char
Dim strinput As String
Dim prosesoff As Boolean = False
Dim disconnect As Boolean = False
'Variabel Untuk Zedgrapgh
'Untuk Grafik
Dim currentgraph As GraphPane
Dim listcurrent As RollingPointPairList
Dim currentgraph_line As LineItem
Dim starting_time As Double = 100
Dim nilai As Integer
'Variabel Penampung Port
Dim myPort As Array 'COM Ports detected on the system will be stored here
Delegate Sub SetTextCallback(ByVal [text] As String) 'Added to prevent threading errors during receiveing of data
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'When our form loads, auto detect all serial ports in the system and populate the cmbPort Combo box.
myPort = IO.Ports.SerialPort.GetPortNames() 'Get all com ports available
cmbBaud.Items.Add(9600) 'Populate the cmbBaud Combo box to common baud rates used
cmbBaud.Items.Add(19200)
cmbBaud.Items.Add(38400)
cmbBaud.Items.Add(57600)
cmbBaud.Items.Add(115200)
For i = 0 To UBound(myPort)
cmbPort.Items.Add(myPort(i))
Next
cmbPort.Text = cmbPort.Items.Item(0) 'Set cmbPort text to the first COM port detected
cmbBaud.Text = cmbBaud.Items.Item(0) 'Set cmbBaud text to the first Baud rate on the list
btnDisconnect.Enabled = False 'Initially Disconnect Button is Disabled
starting_time = Environment.TickCount
currentgraph = ZedGraphControl1.GraphPane
currentgraph.Title.Text = "ADC Monitoring"
currentgraph.XAxis.Title.Text = "Timing (Secon)"
currentgraph.YAxis.Title.Text = "Value Current (Bit)"
listcurrent = New RollingPointPairList(120)
currentgraph_line = currentgraph.AddCurve("ADC", listcurrent, Color.Blue, SymbolType.None)
End Sub
Private Sub btnConnect_Click(sender As Object, e As EventArgs) Handles btnConnect.Click
SerialPort1.PortName = cmbPort.Text 'Set SerialPort1 to the selected COM port at startup
SerialPort1.BaudRate = cmbBaud.Text 'Set Baud rate to the selected value on
'Other Serial Port Property
SerialPort1.Parity = IO.Ports.Parity.None
SerialPort1.StopBits = IO.Ports.StopBits.One
SerialPort1.DataBits = 8 'Open our serial port
SerialPort1.Open()
btnConnect.Enabled = False 'Disable Connect button
btnDisconnect.Enabled = True 'and Enable Disconnect button
System.Threading.Thread.Sleep(10)
Timer1.Enabled = True
TimerZedgraph.Enabled = True
End Sub
Private Sub btnDisconnect_Click(sender As Object, e As EventArgs) Handles btnDisconnect.Click
'SerialPort1.Close() 'Close our Serial Port
Timer1.Enabled = False
btnConnect.Enabled = True
btnDisconnect.Enabled = False
System.Threading.Thread.Sleep(10)
disconnect = True
Timer2.Enabled = True
rtbReceived.Text = " "
TimerZedgraph.Enabled = False
End Sub
Private Sub SerialPort1_DataReceived(sender As Object, e As SerialDataReceivedEventArgs) Handles SerialPort1.DataReceived
If SerialPort1.IsOpen Then
Try
'================Default Coding Data Serial===========================
byteEnd = SerialPort1.NewLine.ToCharArray
Bytenumber = SerialPort1.BytesToRead
readBuffer = SerialPort1.ReadLine()
Me.Invoke(New EventHandler(AddressOf DoUpdate))
Catch ex As Exception
'MsgBox("read " & ex.Message)
End Try
End If
End Sub
Public Sub DoUpdate(ByVal sender As Object, ByVal e As System.EventArgs)
'Pada TextBox1.Text sudah dapat menampilkan data dari SerialPort1
Timer1.Enabled = True
'Jika membaca boolean disconnect maka mengirim perintah true ke prosesoff
If disconnect Then
prosesoff = True
End If
End Sub
Private Sub cmbPort_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbPort.SelectedIndexChanged
If SerialPort1.IsOpen = False Then
SerialPort1.PortName = cmbPort.Text 'pop a message box to user if he is changing ports
Else 'without disconnecting first.
MsgBox("Valid only if port is Closed", vbCritical)
End If
End Sub
Private Sub cmbBaud_SelectedIndexChanged(sender As Object, e As EventArgs) Handles cmbBaud.SelectedIndexChanged
If SerialPort1.IsOpen = False Then
SerialPort1.BaudRate = cmbBaud.Text 'pop a message box to user if he is changing baud rate
Else 'without disconnecting first.
MsgBox("Valid only if port is Closed", vbCritical)
End If
End Sub
Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
If SerialPort1.IsOpen Then
rtbReceived.Text = readBuffer
nilai = Val(rtbReceived.Text)
End If
End Sub
Private Sub Timer2_Tick(sender As Object, e As EventArgs) Handles Timer2.Tick
If prosesoff Then
SerialPort1.Close()
Timer2.Enabled = False
rtbReceived.Text = " "
End If
End Sub
Private Sub TimerZedgraph_Tick(sender As Object, e As EventArgs) Handles TimerZedgraph.Tick
Dim xScale As Scale
Dim kurvaSuhu As LineItem = ZedGraphControl1.GraphPane.CurveList(0)
Dim list As IPointListEdit
Dim waktu As Double = (Environment.TickCount - starting_time) / 1000.0
list = kurvaSuhu.Points
list.Add(waktu, nilai)
xScale = ZedGraphControl1.GraphPane.XAxis.Scale
If (waktu > xScale.Max - xScale.MajorStep) Then
xScale.Max = waktu + xScale.MajorStep
xScale.Min = xScale.Max - 10
End If
' Pastikan Y axis di scale ulang untuk mengakomodir data aktual
ZedGraphControl1.AxisChange()
' Redraw paksa
ZedGraphControl1.Invalidate()
End Sub
End Class
Berikut hasilnya :
Terima Kasih :)
Tags:
Tutorial