Gobar

Gobar

Gobar

Gobar

Gobar

Minggu, 14 Juni 2015

Komunikasi Ethernet

Assalammualaikum Wr.Wb


Welcome to my blog……


Kembali lagi dengan saya Gobar di Catatan Mungil. Pada kesempatan kali ini saya ingin memberikan sedikit tutorial mengenai komunikasi ethernet. Komunikasi Ethernet merupakan salah satu jenis komunikasi yang paling sering ditemui saat ini. Penggunaannya juga beragam, bisa digunakan untuk komunikasi antar PC, PC dengan mikrokontroller, PC dengan PLC, PLC dengan PLC dan sebagainya.

Komunikasi Ethernet dapat menggunakan media berupa kabel maupun nirkabel. Media kabel yang digunakan biasanya berupa kabel UTP yang ditiap ujungnya terdapat konektor RJ45, sedangkan yang nirkabel biasanya memanfaatkan router wireless. Untuk mengenali tujuan pengiriman data, komunikasi ini menggunakan IP address dan port. IP Address dianalogikan sebagai kompleks perumahan, dan port dianalogikan sebagai nomor rumah. Jika IP Address dan port yang digunakan asal-asalan, maka paket data yang dikirimkan juga tidak akan pernah sampai ke device tujuan. Pada komunikasi Ethernet terdapat 2 jenis protocol pengiriman data, yaitu TCP dan UDP. Kedua protocol tersebut memiliki kelebihan dan kekurangan masing-masing.

Nah…, pada kesempatan kali ini kita akan mencoba membuat sebuah aplikasi chatting teks sederhana menggunakan protocol UDP.

Lakukan langkah-langkah berikut :



a.  Klik “new project” lalu buatlah desain sesuai dengan gambar dibawah.




b.  Tambahkan Library berikut kedalam program


using System.Net;
using System.Net.Sockets;


Library diatas digunakan untuk mengakses Thread, Socket dan beberapa method yang dibutuhkan dalam pembuatan aplikasi.



      c.  Ikuti program dibawah ini, masukkan kedalam project yang telah dibuat.


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.Net;
using System.Net.Sockets;


namespace Chat
{
    public partial class Form1 : Form
    {
        Socket IP;
        EndPoint epLocal, epFriends;

        public Form1()
        {
            InitializeComponent();
            this.Height = 212;

            IP = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);
            IP.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, true);

            textBox_LocalIP.Text = textBox_FriendsIP.Text = AmbilLocalIP();
        }

        private string AmbilLocalIP()
        {
            IPHostEntry Saya;
            Saya = Dns.GetHostEntry(Dns.GetHostName());

            foreach (IPAddress ip in Saya.AddressList)
            {
                if (ip.AddressFamily == AddressFamily.InterNetwork)
                {
                    return ip.ToString();
                }
            }

            return "127.0.0.1";
        }

        private void PesanMasuk(IAsyncResult hasil)
        {
            try
            {
                int jumlah = IP.EndReceiveFrom(hasil, ref epFriends);

                if (jumlah > 0)
                {
                    byte[] DataDiTerima = new byte[1464];
                    DataDiTerima = (byte[])hasil.AsyncState;

                    ASCIIEncoding eEncoding = new ASCIIEncoding();
                    string PesanDiTerima = eEncoding.GetString(DataDiTerima);

                    listBox_Pesan.Items.Add("Teman\t: " + PesanDiTerima);
                }

                byte[] buffer = new byte[1500];
                IP.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref epFriends, new AsyncCallback(PesanMasuk), buffer);
            }

            catch (Exception exp)
            {
                MessageBox.Show(exp.ToString());
            }
        }

        private void button_Connect_Click(object sender, EventArgs e)
        {
            try
            {
                epLocal = new IPEndPoint(IPAddress.Parse(textBox_LocalIP.Text), Convert.ToInt32(textBox_LocalPort.Text));
                IP.Bind(epLocal);

                epFriends = new IPEndPoint(IPAddress.Parse(textBox_FriendsIP.Text), Convert.ToInt32(textBox_FriendsPort.Text));
                IP.Bind(epFriends);

                byte[] buffer = new byte[1500];
                IP.BeginReceiveFrom(buffer, 0, buffer.Length, SocketFlags.None, ref epFriends, new AsyncCallback(PesanMasuk), buffer);
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }

            button_Connect.Text = "Tersambung";
            button_Connect.BackColor = Color.Orange;
            button_Connect.Enabled = false;
            textBox_Input.Focus();

            for (int panjang = this.Height; panjang <= 500; panjang++)
            {
                this.Height = panjang;
            }
        }

        private void button_Kirim_Click(object sender, EventArgs e)
        {
            try
            {
                System.Text.ASCIIEncoding Kirim = new System.Text.ASCIIEncoding();
                byte[] pesan = new byte[1500];
                pesan = Kirim.GetBytes(textBox_Input.Text);

                IP.Send(pesan);
                listBox_Pesan.Items.Add("Anda\t: " + textBox_Input.Text);
                textBox_Input.Clear();
            }

            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
    }
}



d.  Ketika program dijalankan :


Tampilan awal Program




Setelah mengklik tombol “hubungkan” , maka akan tampil seperti dibawah ini

Z



Klik allow acces, maka kedua aplikasi telah terhubung dan chatting siap untuk digunakan






Baiklah…,, Demikian sedeikit penjelasan yang dapat saya sampaikan, jika ada kesalahan saya mohon dimaafkan. semoga ini bermanfaat :)


Nantikan terus postingan-postingan saya selanjutnya di 


Wassalammualaikum Wr.Wb





Terima Kasih

Sabtu, 30 Mei 2015

Serial Port (Part2)



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 (Part2), 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, kita cukup menggunakan method Write dengan parameter berupa string yang akan dikirim dan diterima dalam bentuk string juga.

1. Tujuan tutorial ini membuat aplikasi chating antara dua komputer menggunakan port serial.

2. Buat solution baru. Susun form dengan control-control seperti terlihat pada gambar.





3. Komponen Timer ada di Windows Form toolbar, Sedangkan komponen SerialPort ada di Components toolbar. Jangan lupa, set properties "Enabled" di komponen Timer menjadi "true". Kemudian properties Interval di-set menjadi 10 ms.

4. Double click tombol (button) dengan text “Kirim”. Ketikkan statemen di bawah ini di dalam fungsi Button_Click :

serialPort1.Write(textBox1.Text);

Kode di atas tujuannya adalah untuk menuliskan isi dari textBox1 ke port serial. Sebelumnya kita harus membuka port dulu dengan statemen :

serialPort1.Open();

Double click untuk timer. Ketikkan statemen di bawah ini di dalam fungsi Timer_Tick :

if (serialPort1.BytesToRead != 0)
       {
           textBox2.Text = serialPort1.ReadExisting();
       }

Kode di atas tujuannya adalah untuk membaca data yang ada di buffer serial port.

dan ini adalah program yang full :

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__part2_
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            serialPort1.Open();
        }

        private void button_Kirim_Click(object sender, EventArgs e)
        {
            serialPort1.Write(textBox1.Text);
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            if (serialPort1.BytesToRead != 0)
            {
                textBox2.Text = serialPort1.ReadExisting();
            }
        }

    }
}


5. Compile dan jalankan program.




6. Buka aplikasi hyperterminal(atau lebih dikenal dengan nama “HTerm”), kemudian amati data yang tampil pada hyperterminal saat anda mengirim data.





  

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

Serial Port (Part1)


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:





2. Buat solution baru. Susun form dengan control-control seperti terlihat pada gambar.






Atur properties “Series” pada chart, sehingga muncul window baru seperti dibawah ini.





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



7. Compile dan jalankan programnya, maka akan tampil seperti dibawah ini : 





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