Thursday 4 December 2014

Antarmuka Serial Port VB 2010 (Komunikasi Serial Arduino - VB 2010)

Seperti halnya mikrokontroller yang memiliki port UART, arduino dapat melakukan komunikasi dengan device lain secara serial. Kali ini untuk interface yang digunakan ialah aplikasi yang dibuat menggunakan VB2010 . Sebagai contohnya dapat di lajutkan kelangkah berikut.

1. Aplikasi Monitoring
Buat desain formnya (misal seperti ini)


Untuk penamaan components nya adalah : ComboBox_COM, ComboBox_BAUD, Button_Connect, Button_Disconnect, TextBox_DataSend, Button_Send, TextBox_DataReceive.
Jangan lupa juga tambahkan serial port.


ok, lanjut ke codenya :


Imports System.IO.Ports
Imports System.Threading
Public Class Form1
    Dim WithEvents sp As New SerialPort
    Private Sub GetSerialPortNames()
        For Each sport As String In My.Computer.Ports.SerialPortNames
            ComboBox_COM.Items.Add(sport)
        Next
    End Sub
    Sub ShowString(ByVal myString As String)
        TextBox_DataReceive.AppendText(myString)
        TextBox_DataReceive.Select(TextBox_DataReceive.TextLength, 0)
        TextBox_DataReceive.ScrollToCaret()
    End Sub

    Delegate Sub myMethodDelegate(ByVal [text] As String)
    Dim myDelegate As New myMethodDelegate(AddressOf ShowString)
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim BaudRates() As String = {"300", "1200", "2400", "4800", "9600", "14400", "19200", "28800", "38400", "57600", "115200"}

        ComboBox_BAUD.Items.AddRange(BaudRates)
        ComboBox_BAUD.SelectedIndex = 4
       
        Try
            GetSerialPortNames()
            ComboBox_COM.SelectedIndex = 0
        Catch
            MsgBox("No ports connected.")
        End Try
    End Sub

    Private Sub Button_Connect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Connect.Click
        Try
            sp.BaudRate = ComboBox_BAUD.SelectedItem.ToString
            sp.PortName = ComboBox_COM.SelectedItem.ToString
            sp.Open()
            If sp.IsOpen Then
                Button_Connect.Enabled = False
                ComboBox_COM.Enabled = False
                ComboBox_BAUD.Enabled = False
                Button_Disconnect.Enabled = True
            End If
        Catch
            sp.Close()
        End Try
    End Sub

    Private Sub Button_Disconnect_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Disconnect.Click
        Try
            sp.Close()
            Button_Connect.Enabled = True
            Button_Disconnect.Enabled = False
            ComboBox_COM.Enabled = True
            ComboBox_BAUD.Enabled = True
            Exit Sub
        Catch
            MessageBox.Show("Some kind of problem.")
        End Try
    End Sub

    Private Sub Form1_FormClosing(ByVal sender As System.Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles MyBase.FormClosing
        If sp.IsOpen() Then
            MessageBox.Show("Disconnect before closing")
            e.Cancel = True
        End If
    End Sub
    Private Sub SerialPort_DataReceived(ByVal sender As Object, ByVal e As System.IO.Ports.SerialDataReceivedEventArgs) Handles sp.DataReceived
        Dim str As String = sp.ReadExisting()
        Invoke(myDelegate, str)
    End Sub

  
    Private Sub Button_Send_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button_Send.Click
        Dim data As String
        data = TextBox_DataSend.Text
        If sp.IsOpen() Then
            'sp.WriteLine(data)
            sp.Write(TextBox_DataSend.Text)
            TextBox_DataSend.Text = ""
        End If
    End Sub
End Class




2. Arduino code
Berikut untuk arduino codenya, silahkan di upload ke arduino (butuh LM35) atau via simulasi ISIS Proteus..

float temp;
int dataPin = 0;

void setup()
{
  Serial.begin(9600);
}

void loop()
{
  temp = analogRead(dataPin);
  temp = temp * 0.48828125; //(SUPPLY_VOLTAGE x 1000 / 1024) / 10
  Serial.print(temp);
  Serial.println();
  delay(1000);
}


3. Running program
Setelah semuanya beres, mari kita jalankan aplikasi monitoringnya. Karena untuk arduinonya saya menggunakan simulasi, maka diperlukan konektor (virtual serial port)yang akan digunakan untuk menghubungkan Proteus ISIS dengan Aplikasi monitoring. Pilih COM port yang digunakan (virtual dan proteus), disini saya memakai COM 2. kemudian pilih tombol connect. Setelah terhubung, jalankan simulasi arduino yang ada di Proteus ISIS.
Hasilnya kurang lebih seperti ini :


Nina Dee

Author & Editor

Not an expert, just a hobby. Catatan untuk kita semua yang mungkin sedang membutuhkan.

Related Post

Antarmuka Serial Port VB 2010 (Komunikasi Serial Arduino - VB 2010)
4/ 5
Oleh

Untuk menyisipkan kode pendek, gunakan <i rel="code"> ... KODE ... </i>
Untuk menyisipkan kode panjang, gunakan <i rel="pre"> ... KODE ... </i>
Untuk menyisipkan gambar, gunakan <i rel="image"> ... URL GAMBAR ... </i>