Minggu, 31 Mei 2015

Control LED with Serial Port Communication

Control LED with Serial Port Communication


Pada kesempatan kali ini saya ingin berbagi cara koneksi antar serial port, namun tanpa menggunakan hardware(antar aplikasi, dengan menggunakan aplikasi tambahan “Virtual Port”). Dalam kasus ini kita dapat mengirim dan menerima data sederhana(berupa text) antar serial port yang kemudian kita beri fungsi untuk mengontrol beberapa lampu LED, kita cukup menggunakan method Write dengan parameter berupa string yang akan dikirim dan diterima dalam bentuk string juga.
Hal pertama yang harus dilakukan yaitu:
1. Virtual Serial Port
2. Hterm
 install virtual serial port dan kemudian buatlah penghubung antar com (seperti pada gambar)
  • Kemudian kita dapat langsung membuat aplikasi untuk control led.
  • Buka ms. visual studio 2010, dan buatlah project baru.
  • Desain windows form sesuai keinginan masing masing atau dapat mengikuti desain yang saya buat.
  • Jangan lupa menambahkan Timer dan Serial Port yang terdapat pada toolbox.
 

  • etelah desain yang dibuat dirasa cukup, maka kita langsung masuk ke codingan nya.
  • Dibawah ini adalah version code dari aplikasi yang telah saya buat.
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;
using System.IO.Ports;
using System.IO;
namespace komunikasi_serial
{
public partial class Form1 : Form
{
// Pengenalan variable gambar
Image white = Properties.Resources.redcircle;
Image black = Properties.Resources.whitecircle;
public Form1()
{
InitializeComponent();
//Port yang aktif pada komputer
foreach (String Port in System.IO.Ports.SerialPort.GetPortNames())
{
cbports.Items.Add(Port);
}
//tulisan awal textbox
textBox1.Text = “Receive Here…”;
//Posisi gambar awal
L1.Image = L2.Image = L3.Image = L4.Image = L5.Image = black;
//mengaktifkan timer
timer1.Enabled = true;
}
private void timer1_Tick(object sender, EventArgs e)
{
//mengecek apakah port serial telah terbuka
if (serialPort1.IsOpen)
{
// mengirim data
if (serialPort1.BytesToRead != 0)
{
if (textBox1.Text == “Receive Here…”)
{
textBox1.Text = “\n”;
}
else
{
string masuk = serialPort1.ReadExisting();
textBox1.AppendText(masuk + “\n”);
//kode untuk kontrol lampu
if (masuk.ToUpper() == “L1 ON” || masuk.ToUpper() == “L1ON”)
{
L1.Image = white;
}
if (masuk.ToUpper() == “L2 ON” || masuk.ToUpper() == ” L2ON”)
{
L2.Image = white;
}
if (masuk.ToUpper() == “L3 ON” || masuk.ToUpper() == “L3ON”)
{
L3.Image = white;
}
if (masuk.ToUpper() == “L4 ON” || masuk.ToUpper() == “L4ON”)
{
L4.Image = white;
}
if (masuk.ToUpper() == “L5 ON” || masuk.ToUpper() == “L5ON”)
{
L5.Image = white;
}
// komen lampu mati
if (masuk.ToUpper() == “L1 OFF” || masuk.ToUpper() == “L1OFF”)
{
L1.Image = black;
}
if (masuk.ToUpper() == “L2 OFF” || masuk.ToUpper() == “L2OFF”)
{
L2.Image = black;
}
if (masuk.ToUpper() == “L3 OFF” || masuk.ToUpper() == “L3OFF”)
{
L3.Image = black;
}
if (masuk.ToUpper() == “L4 OFF” || masuk.ToUpper() == “L4OFF”)
{
L4.Image = black;
}
if (masuk.ToUpper() == “L5 OFF” || masuk.ToUpper() == “L5OFF”)
{
L5.Image = black;
}
}
}
}
else
{
}
}
private void pictureBox1_Click(object sender, EventArgs e)
{
//langsung mengklik pada lampu
try
{
PictureBox select = (PictureBox)sender;
if (select.Image == black)
{
serialPort1.Write(select.Name + ” on “);
select.Image = white;
}
else
{
serialPort1.Write(select.Name + ” off “);
select.Image = black;
}
}
catch (Exception)
{
MessageBox.Show(“Komunikasi belum terhubung”, “Warning”, MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
private void btconnect_Click(object sender, EventArgs e)
{
//menghubungkan ke port serial yang aktif
try
{
serialPort1.PortName = cbports.Text;
if (!serialPort1.IsOpen)
{
btconnect.BackColor = Color.Lime;
btconnect.Enabled = false;
btdisc.BackColor = Color.Red;
btdisc.Enabled = true;
serialPort1.Open();
}
else
{
}
}
catch (Exception)
{
MessageBox.Show(“Pilih Com Port terlebih dahulu”, “Warning”,MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
private void btdisc_Click(object sender, EventArgs e)
{
//memutuskan port serial yang aktif
if (serialPort1.IsOpen)
{
btdisc.BackColor = Color.Lime;
btdisc.Enabled = false;
btconnect.BackColor = Color.Red;
btconnect.Enabled = true;
serialPort1.Close();
}
else
{
}
}
private void textBox2_KeyDown(object sender, KeyEventArgs e)
{
//mengirim data
if (e.KeyData == Keys.Enter)
{
if (serialPort1.IsOpen)
{
serialPort1.Write(textBox2.Text);
textBox2.Text = “”;
}
else { }
}
}
private void button1_Click(object sender, EventArgs e)
{
try
{
//tombol send
serialPort1.Write(textBox2.Text);
textBox2.Text = “”;
}
catch (Exception)
{
MessageBox.Show(“Pilih Com Port terlebih dahulu”, “Warning”, MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
private void Form1_SizeChanged(object sender, EventArgs e)
{
//warning untuk mengubah size form
MessageBox.Show(“Size tidak dapat diubah”, “Warning”, MessageBoxButtons.OK, MessageBoxIcon.Warning);
}
}
}
  • Setelah program selesai di ketik, coba running programnya.
  • Buka htem dan kemudian pilih com yang telah di pair tadi lalu klik tombol connect.

Testing aplikasi
 

Tidak ada komentar:

Posting Komentar