Assalammualaikum Wr.Wb
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 :
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._2;
Image OFF = Properties.Resources._3;
public Form1()
{
InitializeComponent();
foreach (String PortKu in System.IO.Ports.SerialPort.GetPortNames())
{
comboBox1.Items.Add(PortKu);
}
}
private void timer1_Tick(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
{
if (serialPort1.BytesToRead != 0)
{
textBox2.Text = (serialPort1.ReadExisting());
textBox2.AppendText(serialPort1.ReadExisting());
if (textBox2.Text.ToUpper() == "LAMPU1 ON" || textBox2.Text.ToUpper() == "ON LAMPU1")
{
lampu1.Image = ON;
}
if (textBox2.Text.ToUpper() == "LAMPU2 ON" || textBox2.Text.ToUpper() == "ON LAMPU2")
{
lampu2.Image = ON;
}
if (textBox2.Text.ToUpper() == "LAMPU3 ON" || textBox2.Text.ToUpper() == "ON LAMPU3")
{
lampu3.Image = ON;
}
///...........................................................................................
if (textBox2.Text.ToUpper() == "LAMPU1 OFF" || textBox2.Text.ToUpper() == "OFF LAMPU1")
{
lampu1.Image = OFF;
}
if (textBox2.Text.ToUpper() == "LAMPU2 OFF" || textBox2.Text.ToUpper() == "OFF LAMPU2")
{
lampu2.Image = OFF;
}
if (textBox2.Text.ToUpper() == "LAMPU3 OFF" || textBox2.Text.ToUpper() == "OFF LAMPU3")
{
lampu3.Image = OFF;
}
}
}
else { }
}
private void button_Open_Click(object sender, EventArgs e)
{
serialPort1.PortName = comboBox1.Text;
if (comboBox1.Text == "Port")
{
MessageBox.Show("Pilih Port Terlebih Dahulu", "Alpha System", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
if (!serialPort1.IsOpen)
{
button_Open.BackColor = Color.Blue;
button_Open.Enabled = false;
button_Close.BackColor = Color.Red;
button_Close.Enabled = true;
serialPort1.Open();
}
else { }
}
}
private void button_Close_Click(object sender, EventArgs e)
{
if (serialPort1.IsOpen)
{
button_Close.BackColor = Color.Blue;
button_Close.Enabled = false;
button_Open.BackColor = Color.Red;
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 + " ");
}
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;
if (Pilih.Image == OFF)
{
serialPort1.Write(Pilih.Name + " hidup ");
Pilih.Image = ON;
}
else
{
serialPort1.Write(Pilih.Name + " mati ");
Pilih.Image = OFF;
}
}
else { }
}
private bool LetterOnly(System.Windows.Forms.KeyPressEventArgs e)
{
string strValid = "";
if (strValid.IndexOf(e.KeyChar) < 0 && !(e.KeyChar == Convert.ToChar(Keys.Back)))
{
return true;
}
else
{
return false;
}
}
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 !!!", "Alpha System", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
private void button1_Click(object sender, EventArgs e)
{
serialPort1.Write(textBox1.Text);
button1.BackColor = Color.Blue;
button1.Enabled = false;
button1.BackColor = Color.Red;
button1.Enabled = true;
}
}
}
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”.
Sekarang jalankan Program……..
Pemahaman Form serial Port
Baiklah…,, Demikian sedeikit penjelasan yang dapat saya sampaikan, jika ada kesalahan saya mohon maaf. semoga ini bermanfaat bagi sahabat2 blogger
Input melalui HTerm “lampu2 on”, maka lampu pada LED akan menyala(orange)
Wassalammualaikum Wr.Wb