Pengetahuan Dasar Pemrograman Serial Komunikasi (RS232) dengan VB.Net

(UNDER CONSTRUCTION)

Namespace yg digunakan

Class Serial Port pada VB.net  dan C#  menggunakan referensi yang sama yaitu mengacu ke namespace :  System.IO.Ports

Langkah Langkah Memulai membuat code program serial port

1. Masukan referensi namespace tempat dimana class SerialPort berada dengan cara:

Imports System.IO.Ports

2. Buat objek SerialPort

Karena didalam program yg kita gunakan adalah objek bukan class maka kita harus membuat objek dari class.

format membuat objek dari class SerialPort :

Dim namaObjek As New SerialPort   contoh:   COMPort As New SerialPort

atau

Dim WithEvents namaObjek As New SerialPort   // untuk menggunakan event

3. set property  baudrate, nama port, jumlah data bit, parity, flow control  dll

COMPort.PortName = “COM2”
COMPort.BaudRate = 19200

4. membuka/mengaktifkan Seria Port dengan methode open()

5. Buat methode / event Untuk menerima data

6. Buat methode mengirim data

7. menutup Serial Port dengan methode close()

Jika kita berhasil membuat objek SerialPort maka ketika kita mengetik nama objek tersebut diikuti titik maka akan muncul member class dari yg  bisa kita gunakan didlm program. pada contoh ini kita membuat objek serialport COMPort

methodeobjseralport

Langkah lebih mudah membuat objek  serialport adalah dengan menggunakan componen serialport di toolbar

componenserial1

Objek dengan nama SerialPort1 telah dibuat

componenserial2

Objek dengan nama SerialPort1 sudah bisa digunakan spt tampak pada gambar:

objekserialport1

Contoh Form yang akan kita buat

SerialportBasic

Contoh Code Program  membuat objek dengan menggunakan Component Serialport

Membuka dan Menutup Port

1. Membuka data menggunakan method Open()

2. Menutup Port menggunakan method Close()

‘Imports System.IO.Ports
Public Class Form1
‘ Dim WithEvents COMPort As New SerialPort

Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
SerialPort1.PortName = “COM27”
SerialPort1.BaudRate = 9600
SerialPort1.DataBits = 8
End Sub

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Try
SerialPort1.Open()
TextBox1.Text = “BERHASIL DIBUKA”
Catch ex As Exception
TextBox1.Text = “GAGAL ” + ex.Message
End Try
End Sub

Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Try
SerialPort1.Close()
TextBox1.Text = “BERHASIL DITUTUP”
Catch ex As Exception
TextBox1.Text = “GAGAL ” + ex.Message
End Try

End Sub
End Class

Mengirim Data pada Serial Port

Untuk mengirim data melalui SerialPort kita bisa menggunakan salah satu method berikut:

1. Write(buffer() As Byte, offset As Integer, count As Integer)
penjelasan : mengirim  sejumlah  bytes pada buffer ke serial port .

Parameters:
buffer: array byte berisi data yg akan dikirm.
offset: offset  di buffer sebagai awal data yg akan dikirm.
count:  jumlah byte yg akan dikirim.

2. Write(buffer() As char, offset As Integer, count As Integer)
penjelasan: mengirim  sejumlah  karakter(kode ascii)  pada buffer ke serial port .

Parameter:
buffer: array karakter  berisi data yg akan dikirm.
offset: offset  di buffer sebagai awal data yg akan dikirm.
count:  jumlah karakter  yg akan dikirim.

3. Write(ByVal text As String)
Penjelasan: mengirim  data string ke serial port.

Parameter:
text: string yg akan dikirm

4. WriteLine(ByVal text As String)

Penjelasan: WriteLine mengirim  string dan NewLine  ke serial port

Parameter:
text: string yang akan di kirim

Contoh mengirim data

Private Sub btnSend_Click( )
Try
serialPort.Write(txtDataToSend.Text & vbCrLf)
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub

Menerima Data Serial Port

.Untuk menerima data melalui SerialPort kita bisa menggunakan salah satu method berikut:

1. Read(ByVal buffer() As Byte, ByVal offset As Integer, ByVal count As Integer) As Integer
Penjelasan:
Membaca sejumlah  bytes dari  input buffer dan menyimpan datanya pada sebuah array buffer

Parameter:
buffer: tempat menampung hasil baca
offset:  offset awal untuk menyimpan data
count: jumlah byte yg di baca

Return Value:
jumlah byte hasil baca.

2. Read(ByVal buffer() As char, ByVal offset As Integer, ByVal count As Integer) As Integer

Penjelasan:
Membaca sejumlah  karakter dari  input buffer dan menyimpan datanya pada sebuah array buffer

Parameter:
buffer: tempat menampung hasil baca
offset:  offset awal untuk menyimpan data
count: jumlah karakter yg di baca

Return Value:
jumlah karakter hasil baca.

3.ReadByte() As Integer

Penjelasan: menbaca secara Synchronous 1 byte dari  input buffer.

Return Value:
1 byte yg telah dibaca atau  -1 jika akhir  data telah dibaca.

4.ReadChar() As Integer

Summary:
Membaca secara Synchronous 1 character dari  input buffer.

Return Values:
1 character yg dibaca .

5. ReadExisting() As String

Summary:
membaca sekaligus semua bytes, berdasar encoding, stream dan input buffer

Return Values:
berisi data  stream dan input buffer

6. ReadLine() As String

Penjelasan:
Membaca sampai nilai NewLine dalam buffer input.

Return Value:
isi data Input buffer sampai dibaca  NewLine.

7. ReadTo (ByVal xvalue As String) As String

Penjelasan: Membaca string sampai nilai tertentu dalam buffer input.

parameter:
value: Sebuah nilai yang menunjukkan di mana operasi membaca berhenti.

Return value:
Isi buffer sampai nilai tertentu.

Menerima data Secara Interrupsi ( dipicu oleh event saat data diterima)

Salah satu kelebihan dari class SerialPort adalah Anda tidak perlu terus-menerus membaca data yg masuk secara polling
. Sebaliknya, Anda hanya perlu menyediakan service untuk event DataReceived, yg secara otomatis akan dijalankan
ketika ada data masuk terdeteksi. Namun, karena event ini berjalan pada thread terpisah, setiap upaya untuk memperbarui main form akan mengakibatkan error. Oleh karena itu, Anda perlu menggunakan delegate untuk memperbarui Controls pada thread main (Form1).

delegateupdatetext

Berikut ini akan diberikan 2 contoh service(layanan) untuk event DataReceived

(sebaiknya anda pelajari juga dasar dasar event, delegate dan thread)

Dim tampung(100) As Char ‘ Text buffer Must be global
Dim RXCount As Integer
Dim ReceiveByte As Byte
Dim WithEvents objekSerialPort As New SerialPort

Private Sub Receiver(ByVal sender As Object, ByVal e As SerialDataReceivedEventArgs) Handles objekSerialPort.DataReceived

Do
‘=====================================================================
RXCount=0
Do
ReceiveByte = COMPort.ReadByte   ‘ 1 byte diterima
Tampung(RXcount) = ReceiveByte       ‘ byte di simpan di arry Tampung
RXCount++
Loop Until(objekSerialPort.BytesToRead=0)
‘===================================================================
Me.Invoke(New MethodInvoker(AddressOf TampilkanData))
Loop Until(objekSerialPort.BytesToRead=0)
End Sub

Private Sub TampilkanData()
txtDataDiterima.AppendText(New String(Tampung, 0, RXcount))
End Sub

‘===============================================================================

contoh vb.net 2005

‘deklarasi Delegate  untuk  subroutine untuk update  TextBox
Public Delegate Sub myDelegate()

‘—Event handler  untuk event DataReceived  data
Private Sub DataReceived( ByVal sender As Object, ByVal e AsSerialDataReceivedEventArgs) Handles objekSerialPort.DataReceived

‘—invoke  delegate  untuk  untuk membaca dan menampilkan data
txtDataDiterima.BeginInvoke(New myDelegate(AddressOf Tampilkan), _New Object() {})

End Sub

Public Sub Tampilkan()

txtDataDiterima.AppendText(objekSerialPort.ReadExisting)

End Sub

referensi:

  1. http://msdn.microsoft.com/en-us/library/system.io.ports.serialport(v=vs.100).aspx -> serial Port .NET Framework 4
  2. http://msdn.microsoft.com/en-us/library/system.io.ports.serialport(v=vs.90).aspx   -> Serial port .NET Framework 3.5
  3. KonsultasiVB.com

About pccontrol

Berisi Tutorial Menggunakan PC untuk mengontrol Peralatan dengan cara mudah & praktis.

Posted on 20/09/2014, in Visual Basic . Net and tagged , . Bookmark the permalink. Leave a comment.

Komentar ,Saran atau Pertanyaan

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: