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, 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.
Pertama-tama,
teman-teman bisa mengikuti seperti design dibawah ini :
Jangan lupa
menambahkan komponen “Timer” dan komponen “SerialPort”
yang terdapat pada “toolbox”. Kemudian tambahkan file picture(Image) pada picturebox.
Samakan semua fungsi
dan even (source code) anda dengan dibawah ini, dibawah ini adalah versi full
Code-nya :
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_communication
{
public partial class Form1 : Form
{
Image ON = Properties.Resources.LampuOn;
Image OFF = Properties.Resources.LampuOff;
public Form1()
{
InitializeComponent();
foreach (String
PortKu in System.IO.Ports.SerialPort.GetPortNames())
{
comboBox1.Items.Add(PortKu);
}
textBox2.Text ="Data Diterima";
lampu1.Image = lampu2.Image = lampu3.Image = lampu4.Image = lampu5.Image
= OFF;
}
private void
timer1_Tick(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
{
if (serialPort1.BytesToRead != 0)
{
if (textBox2.Text == "Data Diterima") { textBox2.Text = "\n"; }
else
{
string input = (serialPort1.ReadExisting());
textBox2.AppendText(input + "\n");
if (input.ToUpper() == "LAMPU1
HIDUP" || input.ToUpper() == "HIDUP
LAMPU1")
{
lampu1.Image = ON;
}
if (input.ToUpper() == "LAMPU2
HIDUP" || input.ToUpper() == "HIDUP
LAMPU2")
{
lampu2.Image = ON;
}
if (input.ToUpper() == "LAMPU3
HIDUP" || input.ToUpper() == "HIDUP
LAMPU3")
{
lampu3.Image = ON;
}
if (input.ToUpper() == "LAMPU4
HIDUP" || input.ToUpper() == "HIDUP
LAMPU4")
{
lampu4.Image = ON;
}
if (input.ToUpper() == "LAMPU5
HIDUP" || input.ToUpper() == "HIDUP
LAMPU5")
{
lampu5.Image = ON;
}
///...........................................................................................
if (input.ToUpper() == "LAMPU1
MATI" || input.ToUpper() == "MATI
LAMPU1")
{
lampu1.Image = OFF;
}
if (input.ToUpper() == "LAMPU2
MATI" || input.ToUpper() == "MATI
LAMPU2")
{
lampu2.Image = OFF;
}
if (input.ToUpper() == "LAMPU3
MATI" || input.ToUpper() == "MATI
LAMPU3")
{
lampu3.Image = OFF;
}
if (input.ToUpper() == "LAMPU4
MATI" || input.ToUpper() == "MATI
LAMPU4")
{
lampu4.Image = OFF;
}
if (input.ToUpper() == "LAMPU5 MATI"
|| input.ToUpper() == "MATI LAMPU5")
{
lampu5.Image = OFF;
}
}
}
}
else { }
}
private void
button_Open_Click(object sender, EventArgs e)
{
serialPort1.PortName = comboBox1.Text;
if (comboBox1.Text == "Port"
|| comboBox1.Text == "")
{
MessageBox.Show("Pilih Port Terlebih Dahulu", "Gobar System", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
else
{
if (!serialPort1.IsOpen)
{
button_Open.BackColor = Color.Orange;
button_Open.Enabled = false;
button_Close.BackColor = Color.Gainsboro;
button_Close.Enabled = true;
serialPort1.Open();
}
else { }
}
}
private void
button_Close_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
{
button_Close.BackColor = Color.Orange;
button_Close.Enabled = false;
button_Open.BackColor = Color.Gainsboro;
button_Open.Enabled = true;
serialPort1.Close();
}
else { }
}
private void
textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyData == Keys.Enter)
{
if (serialPort1.IsOpen)
{
serialPort1.Write(textBox1.Text);
textBox1.Text = "";
}
else { }
}
}
private void
textBox1_Click(object sender, EventArgs e)
{
if (textBox1.Text == "Kirim
Data")
{
textBox1.Text = "";
}
else { }
textBox1.ForeColor = Color.Maroon;
}
private void
All_Lampu_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
{
PictureBox Pilih = (PictureBox)sender;
//memilih pictureBox yg diinginkan
if (Pilih.Image == OFF)
{
serialPort1.Write(Pilih.Name + "
hidup ");
Pilih.Image = ON;
}
else
{
serialPort1.Write(Pilih.Name + "
mati ");
Pilih.Image = OFF;
}
}
else { }
}
/// /// /// /// /// dibawah
ini khusus fungsi textBox_Output ( sehingga Output tidak dapat diubah
)...............................
private bool LetterOnly(System.Windows.Forms.KeyPressEventArgs e)
{
string strValid = "";
if (strValid.IndexOf(e.KeyChar) < 0 &&
!(e.KeyChar == Convert.ToChar(Keys.Back)))
{
return true;
// not valid
}
else
{
return false;
// valid
}
}
private void
textBox2_KeyPress(object sender, KeyPressEventArgs e)
{
e.Handled = LetterOnly(e);
}
private void
textBox2_KeyDown(object sender, KeyEventArgs e)
{
MessageBox.Show("Maaf.....
Output tidak dapat diubah !!!", "Gobar
System", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
/// /// /// /// /// diatas
ini khusus fungsi textBox_Output ( sehingga Output tidak dapat diubah
)................................
}
}
Install Virtual
Port terlebih dahulu, kemudian buatlah setidaknya satu pasang koneksi(COM1 dan
COM2) dengan cara “Add pair”.
lalu jalankan
aplikasi HTERM seperti ini, lalu setting COM berlawanan dengan COM yang
terdapat pada visual lalu kemudian klik “connect”.
Jalankan Program……..
Pemahaman Form
serial Port
Contoh : Input
melalui HTerm “lampu4 hidup”, maka lampu pada LED akan menyala(hijau)
Baiklah…,, Demikian
sedeikit penjelasan yang dapat saya sampaikan, jika ada kesalahan saya mohon maaf.
semoga ini bermanfaat :)
untuk lebih jelasnya, silahkan lihat video tutorial dibawah :D
untuk lebih jelasnya, silahkan lihat video tutorial dibawah :D
Nantikan
terus postingan-postingan saya selanjutnya di
http://gobarbetharaagung.blogspot.com/
Wassalammualaikum
Wr.Wb
Terima Kasih
Tidak ada komentar:
Posting Komentar