Cari di Blog Ini

Senin, 02 Juli 2018

Programming VB.NET : Mengenai Serial Port VS USB Port, dan Send/Receive di Serial Port.


Pada dasarnya pengiriman/penerimaan data melalui serial port sudah tidak populer lagi dalam penerapan sehari-hari, karena pada umumnya sudah digantikan dengan USB Port.
Namun dalam beberapa hal masih muncul permasalahan tersebut karena terkait dengan peralatan tertentu yang masih menggunakan Serial Port. Agar tidak menjadi rancu, sebenarnya USB Port adalah pengembangan dari Serial Port, hanya saja pola pengiriman datanya yang pada Serial port terdiri dari 9 kaki (pin) dirubah menjadi 4 kaki (pin) pada USB Port. Secara teknis, perubahan dari 9 pin menjadi 4 pin dimungkinkan karena pada setiap peralatan berbasis USB Port akan mempunyai 1 unit IC konversi dari 9 pin ke 4 pin.
Artinya tidak menjadi kendala kalau di komputer kita hanya ada USB Port, tinggal pasang saja USB to Serial Converter, setelah itu proses kirim/terima data bisa menggunakan Mode Serial Port. Dalam kaitan dengan Programming, kita bisa saja memanfaatkan mode Serial Port karena Serial Port dan USB Port sangat kompatibel. Saya sudah coba beberapa merk Converter di beberapa OS (Win XP s/d WIn 10, 32 bit dan 64 bit). Berikut ini saya sampaikan contoh code yang berkaitan dengan Pengiriman dan Penerimaan data mengunakan Serial Port.




Imports System
Imports System.IO
Imports System.Threading
Public Class Form1
Dim COMPorts As Array
Dim RcvMessage As String
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
COMPorts = IO.Ports.SerialPort.GetPortNames()
For i = 0 To UBound(COMPorts)
ComboBox1.Items.Add(COMPorts(i))
Next
ComboBox1.Text = ComboBox1.Items.Item(0)
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
If Button1.Text = "Open" Then
Button1.Text = "Close"
ComboBox1.Enabled = False
SerialPort1.PortName = ComboBox1.Text
SerialPort1.BaudRate = 19200
SerialPort1.Parity = Ports.Parity.None
SerialPort1.DataBits = 8
SerialPort1.StopBits = 1
SerialPort1.Handshake = Ports.Handshake.None
Try
SerialPort1.Open()
Catch ex As UnauthorizedAccessException
MessageBox.Show(ex.Message & vbCrLf & " It might be used by another device")
Button1.Text = "Open"
ComboBox1.Enabled = True
Timer1.Stop()
End Try
If SerialPort1.IsOpen() Then
Timer1.Interval = 200
Timer1.Start()
RichTextBox1.Text = ComboBox1.Text & " Ready" & vbCrLf
End If
Else
SerialPort1.Close()
Timer1.Stop()
Button1.Text = "Open"
ComboBox1.Enabled = True
End If
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
If SerialPort1.IsOpen() Then
SerialPort1.WriteLine(ComboBox1.Text & "> " & TextBox1.Text)
End If
End Sub
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
RcvMessage = SerialPort1.ReadExisting()
Dim prv_message As String = TextBox1.Text
If Not (RcvMessage = "") Then
RichTextBox1.Text = RcvMessage & RichTextBox1.Text
End If
End Sub
End Class