Pemrograman Rs232 (serial port) dengan C#

Pendahuluan

. Net  framework menyediakan  class SerialPort  yg tersimpan di  Namespace  System.IO.Ports  yg digunakan untuk mengakses  serial port pada komputer.

Membuat  Objek  SerialPort 

Dengan cara membuat object dari class  SerialPort  kita dapat  mengontrol komunikasi serial lewat program.  Cara membuat object serial port (misal objek kita beri nama serialport1) :

SerialPort serialport1 = new SerialPort ();

Selain cara diatas kita bisa membuat objeck dengan cara men drag and drop komponen SerialPort dari controbox ke form kerja.
Beberapa method dari class SerialPort :

1. Methode untuk membuka / menutup komunikasi:

  • Open(): Open koneksi serial port .
  • Close(): Closes  koneksi  port.

2. Method untuk membaca data serial:

  •  public int Read(byte[] buffer, int offset, int count);

Membaca byte dari buffer input SerialPort dan menyimpanya ke dalam array.

Parameter:

– buffer:  byte array  yg terbaca
– offset:  offset awal buffer array .
– count: jumlah  byte terbaca.

Returns:  jumlah  byte terbaca.

  • public int Read(char[] buffer, int offset, int count);

Membaca karakter dari input buffer dan menyimpannya ke array karakter pd buffer

Parameter:
-buffer: array yg berisi karakter yg terbaca.
-offset: offset buffer array .
-count :  jumlah karakter terbaca.
Returns: jum;ah karakter terbaca.

  •  public int ReadByte();

secara sinkron membaca 1 byte dari SerialPort input buffer.

Returns:
The byte, cast to an System.Int32, or -1 if the end of the stream has been
read.

  • public int ReadChar();

secara Synchron membaca 1 karakter dari SerialPort input buffer.
Returns:
The character that was read.

  •  public string ReadExisting();

membaca semua langsung data yg ada   stream  atau  input buffer SerialPort object (tergantung coding).

Returns:
The contents of the stream and the input buffer SerialPort object.


3.  Methode Menulis /mengirim data

    • public void Write(string text);

mengirim  string ke the serial port. Parameters: text:   string yg dikirim.

    •  public void Write(byte[] buffer, int offset, int count);               mengirim sejumlah byte di buffer ke  serial port
    •  Parameter:
    • buffer: byte array  yg isinya akan dikirim.
    • offset:  zero-based byte offset di  buffer count:  jumlah byte yg akan dikirim
 4. Methode mendata Port yg tersedia di PC.
  • GetPortNames()

Gets an array of serial port names for the current computer.
Returns:
array  yg berisi nama serial port  yg ada di PC tsb.

Contoh :     foreach (string port in SerialPort.GetPortNames())
{
portComboBox.Items.Add(port);       //tampilkan pada combo box
}

 Beberapa public properties  class  SerialPort  yg digunakan :

  • BaudRate:  Gets atau  sets  serial baud rate.
  • StopBits: Gets atau  sets  jumlah stopbits per byte.
  • ReadTimeout: Gets atau  sets milliseconds  timeout pembacaan

Contoh pemrograman Rs232 dengan dgn komponen SerialPort .

Dengan “mendrag and drop komponen sesungguhnya anda dibuatkan (secara otomatis oleh IDE C# )  object bernama “SerialPort1”.

serial programming c sharp

Membuat objeck serialport  dgn komponen

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace SerialPort{
    public partial class Form1 : Form    {  
      // Add this variable 
        string RxString;

        public Form1() 
       {  
          InitializeComponent(); 
       }

        private void buttonStart_Click(object sender, EventArgs e)   
     {      
            serialPort1.PortName = "COM1";
            serialPort1.BaudRate = 9600;

            serialPort1.Open();  
          if (serialPort1.IsOpen) 
           {             
   buttonStart.Enabled = false;
                buttonStop.Enabled = true;
                textBox1.ReadOnly = false;
            }  
      }

        private void buttonStop_Click(object sender, EventArgs e)
        {           
               if (serialPort1.IsOpen)       
            {   
                serialPort1.Close();
                buttonStart.Enabled = true;
                buttonStop.Enabled = false;
                textBox1.ReadOnly = true; 
            }

        }

        private void Form1_FormClosing(object sender, FormClosingEventArgs e)        
         { 
           if (serialPort1.IsOpen) serialPort1.Close();  
         }

        private void DisplayText(object sender, EventArgs e)  
      {            textBox1.AppendText(RxString);        }

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

        private void buttonSend_Click(object sender, EventArgs e)  
      {

            // If the port is closed, don't try to send a character. 
           if (!serialPort1.IsOpen) 
           {   
                  textBox1.Text = "port closed";
                  return; 
           }

            serialPort1.Write(textBox2.Text); 
            textBox1.Text = "terkirim";  
        }
    }
}

/*
Advertisements

About pccontrol

Berisi Tutorial Menggunakan PC untuk mengontrol Peralatan dengan cara mudah & praktis untuk pemula.

Posted on 04/05/2011, in Contoh-contoh Aplikasi. Bookmark the permalink. 15 Comments.

  1. sudah ada artikel diblog ini yg membahas hal tsb.silahkan disearch.

  2. mas, misalnya saya punya data di pc, disimpan di variabel kirimData.. misalnya:
    kirimData= 70;
    bagaimana cara mengirim dari pc (menggunakan visual c#) ke atmega (menggunakan codevision)?

  3. mas kalau saya mau membuat interface dengan modem wavecom dan C#. cara menerima dan mengirim datanya bagaimana mas?

  4. substring(index) Returns a String with the characters starting from index to the end of the String
    substring(index,to) Same as above, but the substring ends at the character location before the ‘to’ position

  5. mas gmn sh caranya biar si arduino baca dan kiri data kayak gini?
    “$WIMD,1.0,T,1.0,M,19.4,N,10.0” ?
    Mohon bimbingannya :)

  6. terimakasih mas…
    banyak membantu…

  7. Mas, Saya mohon bantuannya. Masalah saya adalah :
    Data serial port yang saya baca misalnya 10.234 | 20.345 yang dibaca sebagai variabel A. Saya ingin memparsing data tersebut menjadi 2 variabel array yaitu :
    array[0] = 10.234
    array[1] = 20.345
    Kemudian saya menyimpannya kedalam sebuah database.
    Bagaimana saya melakukannya jika saya menggunakan bahasa C/C++.
    Trimakasih sebelumnya.

  8. contoh memisah data (parsing) di c# , misal dari microcontroller mengirim string “x200y300”
    misal data dari serial disimpan di variable string data_terima,
    header = data_terima.Substring(0,1);;
    data_x= data_terima.Substring(1,3);; // variable data_x berisi 200
    data_y = data_terima.Substring(5,3); // variable data_y berisi 300

  9. di toko gramedia dekat sini nda ada mas,, adanya buku umum aja , kira2 ada nda ebook nya ya mas?

  10. bisa di lihat di buku ini “Aplikasi Elektronika dengan Visual C# 2008 Express Edition”

  11. mas,, mau tanya.. lo buat real time graph itu gmn carnya?
    aq mau buat tuk memonitor data adc micro melelui 232. jadi x axiznya berjalan seperti tax network manager gitu mas..

  12. untuk bidang teknik (mhs teknik, engineer atau teknisi) cocoknya sih memakai C , C++ , C# atau delphi . ini pendapat saya saja :-)

  13. Bagaimana kalau memakai Visual Basic ?

  14. Bisa,

    untuk membaca data serial gunakan salah satu methode berikut:

    1. public int Read(byte[] buffer, int offset, int count);
    membaca byte dari buffer input SerialPort
    dan menyimpanya ke dalam array.

    // Parameters:
    -buffer: The byte array to write the input to
    -offset: The offset in the buffer array to begin writing.
    -count: The number of bytes to read.
    // Returns: The number of bytes read.

    2. public int Read(char[] buffer, int offset, int count);

    membaca karakter dari input buffer dan menyimpannya ke array karakter pd buffer

    Parameter:
    -buffer: The character array to write the input to.
    -offset: The offset in the buffer array to begin writing.
    -count : The number of characters to read.
    Returns: The number of characters read.

    3. public int ReadByte();
    secara sinkron membaca 1 byte dari SerialPort input buffer.

    Returns:
    The byte, cast to an System.Int32, or -1 if the end of the stream has been
    read.
    4. public int ReadChar();
    secara Synchron membaca 1 character dari SerialPort input buffer.
    Returns:
    The character that was read.
    5. public string ReadExisting();
    Reads all immediately available bytes, based on the encoding, in both the
    stream and the input buffer of the System.IO.Ports.SerialPort object.

    Returns:
    The contents of the stream and the input buffer of the System.IO.Ports.SerialPort
    object.

  15. mas program diatas itu bisa buat ambil data dari mikro ga ya?
    cuma nerima data aja….

Komentar ,Saran atau Pertanyaan

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: