Assalammualaikum Wr.Wb
Welcome to my blog……
Kembali lagi dengan saya Gobar di Catatan
Mungil. Pada kesempatan kali ini saya ingin berbagi cara koneksi antar serial
port, yaitu aplikasi yang kita buat dengan hardware Arduino. Dalam kesempatan
kali ini kita dapat menerima data sederhana(berupa angka) dari nilai potensio
yang dihubungkan ke Arduino dan kemudian ditampilkan kedalam grarik dari
aplikasi yang kita buat.
Sebelum
mulai, saya ingin menjelaskan sedikit tentang Port, 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 Tutorial ini kita akan mempelajari penggunaan serial port.
1. Tujuan Tutorial 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:
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 even Click button_Connect:
if
(button_Connect.Text == "Connect")
{
button_Connect.BackColor = Color.Orange;
button_Connect.Text = "Disconnect";
richTextBox1.Text = "";
a = 0;
serialPort1.Open();
}
else
{
button_Connect.BackColor = Color.Gainsboro;
button_Connect.Text = "Connect";
serialPort1.Close();
}
5.
Tambahkan program berikut ke event DataReceived-nya serial:
this.Invoke(new EventHandler(TextOutput));
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 dithread utama,
yaitu TextOutput.
6. Untuk method TextOutput, tambahkan program berikut:
int a;
private void
TextOutput(object sender, EventArgs e)
{
try
{
input = serialPort1.ReadExisting();
richTextBox1.AppendText(input);
grafik.Series["Series1"].Points.AddXY(a,
Convert.ToInt16(input));
a++;
}
catch (Exception)
{
MessageBox.Show("Error");
}
}
Dan ini adalah Codingan
fullnya :
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 Serial_port__part1_
{
public partial class Form1 : Form
{
int a;
string input;
public Form1()
{
InitializeComponent();
button_Connect.Text = "Connect";
button_Connect.BackColor = Color.Gainsboro;
}
private void
button_Connect_Click(object sender, EventArgs e)
{
if (button_Connect.Text == "Connect")
{
button_Connect.BackColor = Color.Orange;
button_Connect.Text = "Disconnect";
richTextBox1.Text = "";
a = 0;
serialPort1.Open();
}
else
{
button_Connect.BackColor = Color.Gainsboro;
button_Connect.Text = "Connect";
serialPort1.Close();
}
}
private void
TextOutput(object sender, EventArgs e)
{
try
{
input = serialPort1.ReadExisting();
richTextBox1.AppendText(input);
grafik.Series["Series1"].Points.AddXY(a,
Convert.ToInt16(input));
a++;
}
catch (Exception)
{
MessageBox.Show("Error");
}
}
private void
serialPort1_DataReceived(object sender,
System.IO.Ports.SerialDataReceivedEventArgs
e)
{
this.Invoke(new EventHandler(TextOutput));
}
}
}
Baiklah…,, Demikian
sedeikit penjelasan yang dapat saya sampaikan, jika ada kesalahan saya mohon maaf.
semoga ini bermanfaat :)
Nantikan
terus postingan-postingan saya selanjutnya di
http://gobarbetharaagung.blogspot.com/
Wassalammualaikum
Wr.Wb
Terima Kasih
Tidak ada komentar:
Posting Komentar