Anda di halaman 1dari 12

Workshop Sistem Antarmuka

Politeknik Elektronika Negeri Surabaya


Lab 4: Simple Serial Communication
Amran - 1110181029

I. Tujuan
Mahasiswa dapat menggunakan SerialPort class untuk mengirim dan menerima data antar aplikasi.

II. Teori
Data-data hasil pembacaan oleh perangkat seperti mikrokontroler terkadang diinginkan untuk
dikirimkan ke komputer untuk diolah lebih lanjut atau untuk keperluan visualisasi. Data-data
tersebut dapat dikirimkan menggunakan kabel melalui port serial yang terdapat di
mikrokontroler dan komputer. Pada bahasan komunikasi data, mikrokontroler dapat dianggap
sebagai pengirim, komputer sebagai penerima, dan kabel sebagai saluran. Port serial
mengirimkan satu bit data dalam tiap waktunya secara seri.

Pada praktikum ini, kita akan mencoba membuat aplikasi yang melakukan pertukaran data
menggunakan port serial pada komputer. Sebagai tahap permulaan, kita tidak menggunakan dua
perangkat (komputer dan mikrokontroler). Alih-alih membangun dua aplikasi pada dua
perangkat yang berlainan, kita akan menggunakan dua aplikasi yang berjalan pada satu
komputer saja. Masing-masing aplikasi tetap mengakses port serial dari komputer, tetapi kabel
untuk menghubungkan dua aplikasi tersebut adalah kabel virtual. Software com0com membantu
kita untuk membuatkan dua port serial yang berpasangan sehingga dua aplikasi bisa saling
bertukar data, seperti ditunjukkan oleh Gambar 1.

Gambar 1. Ilustrasi kabel serial virtual untuk menghubungkan 2 aplikasi yang berjalan pada satu
komputer.

Sebelum port serial dapat digunakan, aplikasi akan memilih menggunakan port serial yang mana,
kemudian melakukan inisialisasi seperti kecepatan yang digunakan, jenis parity yang digunakan,
jumlah data bit yang dipakai, dan jumlah stop bit yang digunakan. Setelah itu, barulah port serial
dibuka dan siap digunakan untuk mengirim atau menerima data.

Workshop Sistem Antarmuka


Program Studi Teknik Elektronika – Departemen Teknik Elektro
Politeknik Elektronika Negeri Surabaya
Hary Oktavianto - 2020
III.Peralatan
1. Satu unit komputer dengan Visual Studio 2019
2. Unduh dan install aplikasi com0com di https://sourceforge.net/projects/com0com/
3. Unduh dan install aplikasi YAT di https://sourceforge.net/projects/y-a-terminal/

IV.Prosedur Praktikum

A. Melakukan cek koneksi pada virtual serial port.


1. Pasang aplikasi com0com. Lakukan cek pada komputer, nomor port serial berpasangan yang
terjadi seperti pada Gambar 2.

Gambar 2. Pengaturan aplikasi com0com

2. Jalankan aplikasi YAT sebanyak dua kali. Atur agar masing-masing aplikasi YAT mengarah ke
port serial berpasangan bentukan com0com.
3. Lakukan pengiriman data dari aplikasi YAT, pastikan bahwa data terkirim pada aplikasi YAT
yang lain.

Gambar 3. Pertukaran data antar aplikasi YAT menunjukkan com0com bekerja dengan baik
B. Membuat aplikasi untuk mengirim data dengan Visual Studio.
4. Tutup semua aplikasi YAT yang sedang terbuka.
5. Pilih menu File → New → Project. Buatlah project baru menggunakan Windows Form App.
Atur nama dan lokasi.
6. Dengan menggunakan Toolbox, tambahkan button, label, textbox, comboBox, dan SerialPort.
Gantilah text agar tampak seperti pada Gambar 4.

 ComboBox digunakan untuk memilih port serial yang terpasang di komputer.


 Tombol Connect digunakan untuk menginisialisasi dan membuka port serial.
 Tombol Close digunakan untuk menutup port serial.
 TextBox digunakan untuk mengetikkan data yang akan dikirim.
 Tombol Send digunakan untuk mengirimkan nilai dari TextBox ke port serial.

Gambar 4, Tampilan form

7. Klik ganda pada form dan ketikkan kode program berikut.


private void Form1_Load(object sender, EventArgs e)
{
String[] portList = System.IO.Ports.SerialPort.GetPortNames(); foreach
(String portName in portList)
comboBox1.Items.Add(portName);
}

8. Klik ganda pada tombol Connect dan ketikkan kode program berikut.
private void button1_Click(object sender, EventArgs e)
{
serialPort1.PortName = comboBox1.Text;
serialPort1.Open();
Form1.ActiveForm.Text = serialPort1.PortName + " is connected";
}

9. Klik ganda pada tombol Close dan ketikkan kode program berikut.
private void button2_Click(object sender, EventArgs e)
{
serialPort1.Close();
Form1.ActiveForm.Text = "Serial Communication";
}

10. Klik ganda pada tombol Send dan ketikkan kode program berikut.
private void button3_Click(object sender, EventArgs e)
{
serialPort1.Write(textBox1.Text);
}

11. Jalankan aplikasi dengan memilih menu Debug → Start Debugging. Jalankan YAT. Atur
agar aplikasi dan YAT menggunakan port serial yang berpasangan. Klik tombol
Connect untuk membuka port serial. Ketikkan pada textBox, dan klik tombol Send.
Pastikan bahwa nilai textbox terkirim pada YAT.
Klik tombol Close untuk menutup port serial dan tutup aplikasi dengan memilih menu Debug
→ Stop Debugging.

C. Membuat aplikasi untuk mengirim dan menerima data dengan Visual Studio.
12. Tambahkan listBox sehingga tampilan form seperti pada Gambar 5.

Gambar 5. Penambahan listBox untuk menerima data


13. Pada Form1.cs [Design], klik pada komponen serialPort1. Pada jendela Properties, klik symbol
Event, dan klik ganda pada event DataReceived.
Pada bagian ini, seharusnya kita hanya mengambil data dari port serial dan menampilkannya
pada listBox. Tetapi hal ini tidak dapat langsung dilakukan karena event DataReceived
berjalan pada proses background. Untuk mengatasinya, proses menampilkan data dari port
serial pada listBox harus didelegasikan dari proses background ke UI thread menggunakan
method Invoke.
Ketikkan kode program berikut.
private void serialPort1_DataReceived(object sender,

System.IO.Ports.SerialDataReceivedEventArgs e)
{
Tampilkan(serialPort1.ReadExisting());
}

private delegate void TampilkanDelegate(object item);

private void Tampilkan(object item)


{
if (InvokeRequired)
// This is a worker thread so delegate the task.

listBox1.Invoke(new TampilkanDelegate(Tampilkan),

item);
else
// This is the UI thread so perform the task.

listBox1.Items.Add(item);
}

14. Jalankan aplikasi dengan memilih menu Debug → Start Debugging. Jalankan YAT. Atur agar
aplikasi dan YAT menggunakan port serial yang berpasangan. Klik tombol Connect untuk
membuka port serial. Ketikkan pada textBox, dan klik tombol Send. Pastikan bahwa nilai
textbox terkirim pada YAT. Lakukan sebaliknya dengan mengirim data text pada YAT, pastikan
data terkirim ke aplikasi yang anda buat.
Klik tombol Close untuk menutup port serial dan tutup aplikasi dengan memilih menu Debug
→ Stop Debugging.

V. Tugas
1. Tambahkan kode program untuk menghidari adanya error bila tombol Connect atau tombol
Close tertekan dua kali berturut-turut.
2. Tambahkan kode program untuk menghindari adanya error bila tombol Send diklik sebelum
mengaktifkan tombol Connect.
3. Bedakan atribut text yang dikirim dengan text yang diterima didalam listBox.

VI.Jawaban

1. Program untuk menghidari adanya error bila tombol Connect atau tombol Close tertekan
dua kali berturut-turut.

private void button1_Click(object sender, EventArgs e) // Button1=Connect


{
try
{
serialPort1.PortName = comboBox1.Text;
serialPort1.Open();
Form1.ActiveForm.Text = serialPort1.PortName + " is
connected";
}

catch (Exception ex)


{
MessageBox.Show(ex.Message, "Pilih Port Dulu",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}

private void button2_Click(object sender, EventArgs e) // Button2=Close


{
try
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
Form1.ActiveForm.Text = "Serial Communication";
}

else
MessageBox.Show("belum connect kok udah mau close aja");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "message", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
Tampilannya:

2. Tambahkan kode program untuk menghindari adanya error bila tombol Send diklik sebelum
mengaktifkan tombol Connect.

private void button3_Click(object sender, EventArgs e) //Button3=Send


{
try
{
serialPort1.Write(textBox1.Text);

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Belum Connect udah mau send aja",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}

}
Tampilannya:

3. Bedakan atribut text yang dikirim dengan text yang diterima didalam listBox.
 Program lengkap

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace tugas4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void Form1_Load(object sender, EventArgs e)


{
String[] portList = System.IO.Ports.SerialPort.GetPortNames();
foreach (String portName in portList)
comboBox1.Items.Add(portName);

}
private void button1_Click(object sender, EventArgs e) // Button1=Connect
{
try
{
serialPort1.PortName = comboBox1.Text;
serialPort1.Open();
Form1.ActiveForm.Text = serialPort1.PortName + " is connected";
}

catch (Exception ex)


{
MessageBox.Show(ex.Message, "Pilih Port Dulu", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}

}
private void button2_Click(object sender, EventArgs e) // Button2=Close
{
try
{
if (serialPort1.IsOpen)
{
serialPort1.Close();
Form1.ActiveForm.Text = "Serial Communication";
}

else
MessageBox.Show("belum connect kok udah mau close aja");
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "message", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}

private void button3_Click(object sender, EventArgs e) //Button3=Send


{
try
{
serialPort1.Write(textBox1.Text);

}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Belum Connect udah mau send aja",
MessageBoxButtons.OK, MessageBoxIcon.Error);
}

}
private void serialPort1_DataReceived(object sender,
System.IO.Ports.SerialDataReceivedEventArgs e)
{
Tampilkan(serialPort1.ReadExisting());
}
private delegate void TampilkanDelegate(object item);
private void Tampilkan(object item)
{
if (InvokeRequired)
// This is a worker thread so delegate the task.
listBox1.Invoke(new TampilkanDelegate(Tampilkan), item);
else
// This is the UI thread so perform the task.
listBox1.Items.Add(item);
}

}
}

Tampilannya;
VII. Referensi
https://msdn.microsoft.com/en-us/library/system.io.ports.serial
1. Bedakan atribut text yang dikirim dengan text yang diterima didalam listBox.

VIII. Referensi
https://msdn.microsoft.com/en-us/library/system.io.ports.serial

Anda mungkin juga menyukai