Port merupakan kumpulan jalur elektronik untuk menyalurkan data. Port
ada yang untuk input saja, output saja atau input/output. Port dipakai
untuk komunikasi antara CPU dengan monitor, keyboard, mouse dll. Proses
pengiriman data dapat langsung sekaligus secara paralel dengan
menggunakan beberapa kabel, atau satu-persatu secara berurutan (serial)
dengan menggunakan sepasang kabel. Contoh transmisi data secara paralel
adalah komunikasi harddisk IDE dengan CPU, komunikasi printer dengan
komputer. Contoh transmisi data secara serial adalah komunikasi harddisk
SATA dengan CPU, komunikasi USB dll. Mikrokontroller umumnya
menggunakan standar komunikasi serial RS232 untuk koneksi dengan
perangkat lain. Komputer juga memiliki port standar serialport,
paralelport, USB, VGA dan PS/2. Pada praktikum ini kita akan mempelajari
penggunaan serial port.
1. Tujuan praktikum ini adalah untuk menerima data
dari mikrokontroller melalui port serial. Data yang dikirim
oleh mikrokontroller adalah kondisi dari potensiometer. Nilai
analog tegangan akan dikonversi oleh mikro ke nilai digital dalam range
0 – 1023. Kemudian nilai digital ini yang dikirim ke komputer
melalui port serial. Program pada mikro (kita akan menggunakan
arduino) cukup sederhana:
2. Buat solution baru. Susun form dengan control-control seperti terlihat pada gambar.
Atur properties “Series” pada chart, sehingga muncul window baru seperti dibawah ini.
Anda bisa mengubah jenis grafik dengan mengubah ChartType nya.
3. Komponen SerialPort ada di Components toolbar, sedangkan komponen Chart ada di data.
4. Tambahkan program berikut untuk control button1:
5. Tambahkan program berikut ke event DataReceived-nya serial:
Kita menggunakan method Invoke karena thread untuk receive serial berbeda dengan thread program utama. Padahal object RichTextBox atau Label, tempat kita untuk menampilkan data serial, terletak di thread utama. Invoke membuat kita dapat melakukan cross-thread. Program di atas akan membuat event DataReceived memanggil event handler baru yang terletak di thread utama, yaitu DisplayText
6. Untuk method DisplayText, tambahkan program berikut:
7. Compile dan jalankan prog
Dan ini adalah program utuhnya :
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 SerialPortfix
{
public partial class Form1 : Form
{
int a;
string rxString;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (button1.Text == “Connect”)
{
button1.Text = “Disconnect”;
serialPort1.Open();
richTextBox1.Text = “”;
a = 0;
}
else
{
button1.Text = “Connect”;
serialPort1.Close();
}
}
private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
{
rxString = serialPort1.ReadLine();
this.Invoke(new EventHandler(DisplayText));
}
private void DisplayText(object sender, EventArgs e)
{
richTextBox1.AppendText(rxString);
richTextBox1.ScrollToCaret();
chart1.Series[“Series1″].Points.AddXY(a, Convert.ToInt16(rxString));
a++;
}
}
}
inilah saat berjalannya
Minggu, 31 Mei 2015
komunikasi serial
Assalamualaikum wr. Wb
Kali ini saya akan memberikan lagi sebuah tutorial bagaimana
cara membuat komunikasi serial berbasis transmit dan receive dengan menggunakan
aplikasi Microsoft visual studio dan beberapa aplikasi pendukung, yaitu :
Hyperterminal, dan virtual serial port kit.
Okhay langsung saja …
Cara membuka dan membuat form project baru sudah saya
jelaskan pada tutorial sebelumnya. Jadi langsung saja ke langkah mendesain form
nya seperti di bawah ini (Drag and Drop)
Kemudian setting serial port dan timernnya pada properties
masing – masing seperti pada gambar dibawah :
Lalu double klik pada tombol ”
kirim “ (akan muncul sheet tempat pengisian program ) isi programnya seperti
berikut ini :
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;
using System.IO.Ports;
namespace chat
{
public partial class Form1 : Form
{
Image mati = Properties.Resources.mati;
Image merah = Properties.Resources.merah;
Image kuning = Properties.Resources.kuning;
Image hijau = Properties.Resources.hijau;
public Form1()
{
InitializeComponent();
pictureBox1.BackgroundImage = mati;
pictureBox2.BackgroundImage = mati;
pictureBox3.BackgroundImage = mati;
}
private void button1_Click(object sender, EventArgs e)
{
serialPort1.Write(textBox1.Text);
}
private void timer1_Tick(object sender, EventArgs e)
{
if (serialPort1.BytesToRead != 0)
{
textBox2.Text =
serialPort1.ReadExisting();
}
}
private void Form1_Load(object sender, EventArgs e)
{
serialPort1.Open();
}
private void on_CheckedChanged(object sender, EventArgs e)
{
serialPort1.Write("1");
pictureBox1.BackgroundImage =
merah;
}
private void off_CheckedChanged(object sender, EventArgs e)
{
serialPort1.Write("2");
pictureBox1.BackgroundImage = mati;
}
private void on1_CheckedChanged(object sender, EventArgs e)
{
serialPort1.Write("3");
pictureBox2.BackgroundImage =
kuning;
}
private void off1_CheckedChanged(object sender, EventArgs e)
{
serialPort1.Write("4");
pictureBox2.BackgroundImage = mati;
}
private void on2_CheckedChanged(object sender, EventArgs e)
{
serialPort1.Write("5");
pictureBox3.BackgroundImage =
hijau;
}
private void off2_CheckedChanged(object sender, EventArgs e)
{
serialPort1.Write("6");
pictureBox3.BackgroundImage = mati;
}
private void serialPort1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (serialPort1.BytesToRead == 1)
{
//serialPort1.ReadTo("1");
pictureBox1.BackgroundImage =
merah;
}
else if(serialPort1.BytesToRead == 2)
{
//serialPort1.ReadTo("2");
pictureBox1.BackgroundImage = mati;
}
else if(serialPort1.BytesToRead == 3)
{
//serialPort1.ReadTo("3");
pictureBox2.BackgroundImage =
kuning;
}
else if(serialPort1.BytesToRead == 4)
{
//serialPort1.ReadTo("4");
pictureBox2.BackgroundImage = mati;
}
else if(serialPort1.BytesToRead == 5)
{
//serialPort1.ReadTo("5");
pictureBox3.BackgroundImage =
hijau;
}
else if(serialPort1.BytesToRead == 6)
{
//serialPort1.ReadTo("6");
pictureBox3.BackgroundImage = mati;
}
}
}
}
Jika
sudah benar dan tidak ada kesalahan lalu klik tombol Ctrl + F5, aplikasi yang
dibuat tadi akan muncul, dan jangan lupa membuka aplikasi Hyperterminal dan
virtual serial port seperti pada gambar dibawah ini :
Atau
dapat juga menyalakan lampu seperti pada gambar dibawah ini :
Hterm
sebagai transmit dan form 1 sebagai receive
Langganan:
Postingan (Atom)