Selasa, 26 Mei 2015

Serial Port Communication visual studio C#

Assalamu'alakum WR.WB

Hallo, Kali ini saya akan berbagi ilmu tentang Serial Port Communication di visual studio C# tatapi tidak menggunakan hardware (antar aplikasi, dengan menggunakan aplikasi tambahan"Virtual Port").
kida dapat mengirim dan menerima data sederhana (berupa text) antar serialport yang kemudian kita beri fungsi untuk mengontrol beberapa lampu, kita cukup menggunakan method write dengan parameter berupa string yang akan di kirim dan diterima dala bentuk string juga.

Pertama kita buat design seperti di bawah ini ;


Tambahkan komponen "timer" dan komponen "serialport" yang terdapat pada toolbox kemudia tambahkan file picture pada picturebox.


Samakan semua fungsi dan even (source code) anda dengan di bawah ini ;

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.LampuOn1;
        Image OFF = Properties.Resources.LampuOff;

        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());
                }

                if (textBox2.Text.ToUpper() == "LAMPU 1 HIDUP" || textBox2.Text.ToUpper() == "HIDUP LAMPU 1")
                {
                    lampu1.Image = ON;
                }

                if (textBox2.Text.ToUpper() == "LAMPU 2 HIDUP" || textBox2.Text.ToUpper() == "HIDUP LAMPU 2")
                {
                    lampu2.Image = ON;
                }
                
                if (textBox2.Text.ToUpper() == "LAMPU 3 HIDUP" || textBox2.Text.ToUpper() == "HIDUP LAMPU 3")
                {
                    lampu3.Image = ON;
                }

                if (textBox2.Text.ToUpper() == "LAMPU 4 HIDUP" || textBox2.Text.ToUpper() == "HIDUP LAMPU 4")
                {
                    lampu4.Image = ON;
                }

                if (textBox2.Text.ToUpper() == "LAMPU 5 HIDUP" || textBox2.Text.ToUpper() == "HIDUP LAMPU 5")
                {
                    lampu5.Image = ON;
                }

                ///...........................................................................................


                if (textBox2.Text.ToUpper() == "LAMPU 1 MATI" || textBox2.Text.ToUpper() == "MATI LAMPU 1")
                {
                    lampu1.Image = OFF;
                }

                if (textBox2.Text.ToUpper() == "LAMPU 2 MATI" || textBox2.Text.ToUpper() == "MATI LAMPU 2")
                {
                    lampu2.Image = OFF;
                }

                if (textBox2.Text.ToUpper() == "LAMPU 3 MATI" || textBox2.Text.ToUpper() == "MATI LAMPU 3")
                {
                    lampu3.Image = OFF;
                }

                if (textBox2.Text.ToUpper() == "LAMPU 4 MATI" || textBox2.Text.ToUpper() == "MATI LAMPU 4")
                {
                    lampu4.Image = OFF;
                }

                if (textBox2.Text.ToUpper() == "LAMPU 5 MATI" || textBox2.Text.ToUpper() == "MATI LAMPU 5")
                {
                    lampu5.Image = OFF;
                }
            }

            else { }
        }

        private void button_Open_Click(object sender, EventArgs e)
        {
            try
            {
                serialPort1.PortName = comboBox1.Text;
                if (comboBox1.Text == "COM PORTS")
                {
                    
                }

                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
                {

                }
            }
            catch (Exception)
            {
                MessageBox.Show("Pilih Com Port terlebeih dahulu", "Warning",MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }


        private void button_Close_Click(object sender, EventArgs e)
        {
            if (serialPort1.IsOpen)
            {
                button_Close.BackColor = Color.Red;
                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 + "   ");
                }

                else { }
            }
        }

        private void textBox1_Click(object sender, EventArgs e)
        {
            if (textBox1.Text == "Kirim Data")
            {
                textBox1.Text = "";
            }

            else { }

            textBox1.ForeColor = Color.Black;
        }

        private void lampu4_Click(object sender, EventArgs e)
        {

        }
    }
}

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 berbeda dengann COM yan terdapat pada visual lalu klik "connect"


Jalankan Program 


Contoh : Input melalui HTerm "Lampu 3 hidup"



Demikian tutorial singkat tentang Serial Port Communication di visual studio C#. Kurang lebihnya mohon maaf, Assalamu'alaikum WR.WB.

Tidak ada komentar:

Posting Komentar