Senin, 25 Mei 2015

Serial Receive / Serial Port

Assalamu`alaikum Wr. Wb 
disini saya akan menshare praktikum yang telah saya pelajari yaitu tentang serial receive / serial 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 praktikum ini kita akan mempelajari penggunaan serial port.

Dari praktek ini, memiliki tujuan :


1. Tujuan praktikum 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 komponenChart ada di data.

4. Tambahkan program berikut untuk control button1:


5. Tambahkan program berikut ke event DataReceived-nya serial:





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 eventDataReceived memanggil event handler baru yang terletak di thread utama, yaitu DisplayText.


6. Untuk method DisplayText, tambahkan program berikut:





7. Compile dan jalankan program.


Dan ini adalah programnya :

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 WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private Graphics septian;
        string rxString;
        int a;

        private void chart_grafik(object sender, PaintEventArgs e)
        {
            septian = chart1.CreateGraphics();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            if (button1.Text == "Connect")
            {
                button1.Text = "Disconnect";
                serialPort1.Open();
            }
            else
            {
                button1.Text = "Connect";
                serialPort1.Close();
            }

        }

        private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e)
        {
            rxString = serialPort1.ReadLine();
            this.Invoke(new EventHandler(DisplayText));

        }

        private void DisplayText(object sender, EventArgs e)
        {
            richTextBox1.AppendText(rxString);
            richTextBox1.ScrollToCaret();
            chart1.Series["Series1"].Points.AddXY(a, Convert.ToInt16(rxString));
            a++;

        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }

      
    }
}


ini adalah for aplikasinya :


Mungkin ini saja yang dapat saya share, jika ada kesalahan saya mohon maaf, semoga bermanfaat :D
wassalamu`alaikum Wr.Wb

Tidak ada komentar:

Posting Komentar