TUJUAN
Mahasiswa dapat menggunakan SerialPort class untuk mengirim dan menerima data antar PC.
PENDAHULUAN
Saat anda akan melakukan pertukaran data antara sistem komputer dengan peralatan lain,
anda membutuhkan sebuah protokol komunikasi. Dalam istilah telekomunikasi, protokol
komunikasi adalah sebuah sistem aturan yang diperlukan untuk bertukar data, Protokol
komunikasi mengatur tentang format struktur urutan data, arti dari tiap data, sinkronisasi data,
dan metode deteksi kesalahan (error detection). Pada praktikum ini, kita akan mengambil paket
data dari sebuah perangkat yang mengirimkan empat macam data, yaitu data suhu, data
kelembabab udara, data tekanan udara, dan data UV ndeks, seperti diperlihatkan oleh Gambar 1.
Gambar 1. Ilustrasi hubungan komunikasi antara PC dengan mikrokontroler yang berisi empat
data sensor
Perangkat mikrokontroler mengirimkan keempat data sensor secara terus-menerus (broadcast)
menggunakan format data seperti ditunjukkan oleh Gambar 2.
PERALATAN
1. Satu unit komputer dengan Visual Studio 2019 dan aplikasi com0com
2. Aplikasi simulator sebagai pengganti mikrokontroler
PROSEDUR PERCOBAAN
1. Memastikan telah terpasang virtual serial port untuk menghubungkan aplikasi C# yang
dibuat dengan simulator mikrokontroler.
2. Memilih menu File → New → Project. Membuat project baru menggunakan Windows
Form App. Mengatur nama dan lokasi.
3. Dengan menggunakan Toolbox, menambahkan button, label, textBox, listBox, comboBox,
statusStrip (dengan statusLabel) dan serialPort, seperti pada Gambar 3. Pada bagian Baud
rate, dapat ditambahkan nilai 9600, 14400, 19200, 38400, 56000, 57600, 76800, 115200 ke
dalam comboBox sebagai pilihan default.
try
{
serialPort1.PortName = comboBox1.Text;
serialPort1.BaudRate = Int32.Parse(comboBox2.Text);
serialPort1.NewLine = "\r\n";
serialPort1.Open();
toolStripStatusLabel1.Text = serialPort1.PortName + " is connected.";
}
catch (Exception ex)
{
toolStripStatusLabel1.Text = "ERROR: " + ex.Message.ToString();
}
}
6. Klik ganda pada tombol Close dan ketikkan kode program berikut.
private void button2_Click(object sender, EventArgs e)
{
serialPort1.Close();
toolStripStatusLabel1.Text = serialPort1.PortName + " is closed.";
}
7. Pada Form1.cs [Design], klik pada komponen serialPort1. Pada jendela Properties, klik
symbol Event, dan klik ganda pada event DataReceived. Mengetikkan kode program berikut.
private void serialPort1_DataReceived(object sender,
System.IO.Ports.SerialDataReceivedEventArgs e)
{
String receivedMsg = serialPort1.ReadLine();
Tampilkan(receivedMsg);
}
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);
listBox1.SelectedIndex = listBox1.Items.Count - 1;
splitData(item);
}
}
private void splitData(object item)
{
String[] data = item.ToString().Split(',');
Novanna Rahma Zani - 1103181047
HASIL PERCOBAAN
6a. Hasil Percobaan Sesuai Prosedur Modul 6
- Tampilan Aplikasi sesuai modul 6
- Penjelasan Program
a) Combobox pada COMM Port
String[] portList = System.IO.Ports.SerialPort.GetPortNames();
foreach (String portName in portList)
comboBox1.Items.Add(portName);
comboBox1.Text = comboBox1.Items[comboBox1.Items.Count - 1].ToString();
Program diatas merupakan program yang berapa di private form1_load, form1
membuat combobox1 diisi oleh nama serial port yang diambil dari
System.IO.Ports.SerialPort.GetPortNames(); Lalu serial port yang dikenali
ditampilkan di comboBox1.
b) Combobox pada Baudrate
Tidak seperti COMM Port yang nama serial portnya diambil dari system.IO,
nilai baudrate diatur manual dengan menambahkan items pada comboBox2
seperti program dibawah,
public Form1()
{
InitializeComponent();
comboBox2.Items.Add("9600");
comboBox2.Items.Add("14400");
comboBox2.Items.Add("19200");
comboBox2.Items.Add("38400");
comboBox2.Items.Add("56000");
comboBox2.Items.Add("57600");
comboBox2.Items.Add("76800");
comboBox2.Items.Add("115200");
}
Novanna Rahma Zani - 1103181047
- 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.Windows.Forms;
namespace GUI_Lab6
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
comboBox2.Items.Add("9600");
comboBox2.Items.Add("14400");
comboBox2.Items.Add("19200");
comboBox2.Items.Add("38400");
comboBox2.Items.Add("56000");
comboBox2.Items.Add("57600");
comboBox2.Items.Add("76800");
comboBox2.Items.Add("115200");
}
}
}
Novanna Rahma Zani - 1103181047
TUGAS
6b. Tugas 1
Jelaskan apa yang dikerjakan oleh method private void splitData(object item) pada langkah ke-
7!
Jawab :
splitData merupakan object tambahan pada program untuk mengarahkan parsing data ke textBox
yang sesuai. splitData membawa object Item pada program sebelumnya. Jika sebelumnya data
sudah diterima oleh object Item masih berupa paket data. Private void splitData ini
mengidentifikasinya menjadi data [ String[] data = item.ToString().Split(','); ] yang dimana paket
data ini di parsing, dipisahkan sesuai dengan kategori datanya.
else
{
// This is the UI thread so perform the task.
listBox1.Items.Add(item);
listBox1.SelectedIndex = listBox1.Items.Count - 1;
splitData(item);
}
}