Pages

Friday, February 3, 2012

Transfer data PC menggunakan serial port


"Jenius adalah 1 % inspirasi dan 99 % keringat. Tidak ada yang dapat menggantikan kerja keras" (Thomas Alva Edison, 1932).

1. Tujuan

Setelah menyelesaikan percobaan ini diharapkan peserta praktikum dapat:
1.      Memahami data frame serial asinkron
2.      Memahami pengalamatan untuk serial port
3.      Mengetahui cara mengakses serial port dengan hyper terminal
4.      Mengetahui cara membaca dan menulis data dari dan ke serial port menggunakan bahasa pemrograman Tubo C++.
5.      Mengetahui cara membaca dan menulis data dari dan ke serial port menggunakan bahasa pemrograman Matlab.

2. Dasar Teori

Komunikasi serial ialah pengiriman data secara serial (data dikirim satu persatu secara berurutan), sehingga komunikasi serial jauh lebih lambat daripada komunikasi paralel. Serial port lebih sulit ditangani karena peralatan yang  dihubungkan ke serial port harus berkomunikasi dengan menggunakan transmisi serial, sedang data di computer diolah secara paralel. Oleh karena itu data dari dan ke serial port harus dikonversikan ke dan dari bentuk paralel untuk bisa digunakan. Menggunakan hardware, hal ini bisa dilakukan oleh Universal Asyncronous Receiver Transmimeter (UART), kelemahannya kita butuh software yang menangani register UART yang cukup rumit dibanding pada parallel port. Kelebihan dari komunikasi serial ialah panjang kabel jauh dibanding paralel, karena serial port mengirimkan logika “1” dengan kisaran tegangan –3 V hingga –25 V dan logika 0 sebagai +3 Volt hingga +25 V sehingga kehilangan daya karena panjangnya kabel bukan masalah utama. Bandingkan dengan port paralel yang menggunakan level TTL berkisar dari 0 V untuk logika 0 dan +5 Volt untuk logika 1. Berikut contoh bentuk sinyal komunikasi serial . Umumnya sinyal serial diawali dengan start bit, data bit dan sebagai pengecekan data menggunakan parity bit serta ditutup dengan 2 stop bit. Level tengangan -3 V hingga +3 V dianggap sebagai undetermined region.

Komunikasi melalui serial port adalah asinkron, yakni sinyal detak tidak dikirim bersama dengan data. Setiap word disinkronkan dengan start bit, dan sebuah clock internal di kedua sisi menjaga bagian data saat pewaktuan (timing).


Gambar 1  Satu byte data asinkron


Gambar 2 pin PC Com Port - EIA-574 RS-232/V.24 pada DB-9 pin 
Digunakan untuk data Asinkron

Divais yang menggunakan kabel serial untuk komunikasinya dibagi ke dalam dua kategori. Yaitu DCE (Data Communications Equipment) dan DTE (Data Terminal Equipment) Data Communications Equipment adalah divais seperti modem anda, TA adapter, plotter dan lain-lain, sedangkan Data Terminal Equipment adalah Computer anda atau Terminal.


Alat yang digunakan dalam percobaan ini adalah:

  1. DTE, berupa sebuah komputer dengan serial port
  2. DCE, berupa sebuah modul TX-RX serial
  3. DB9 cable extension


Transfer Data Serial dengan Hyper Terminal

Metode percobaan untuk transfer data antara DTE dan DCE adalah sebagai berikut:
  1. Hubungkan modul TX-RX serial dengan komputer melalui serial port menggunakan DB9 cable extension.
  2. Buka Hyper Terminal dengan menekan start → All progams → Accessories → Communications → Hyper Terminal.
  3. Ketik nama untuk Connection Description, misal coba, kemudian tekan OK.
  4. Pada Connect to, pilihlah COM port yang dipakai di Connect using, kemudian tekan OK.
  5. Masukkan nilai-nilai port settingnya, sesuai dengan DCE-nya. Kemudian tekan OK.
Untuk DCE mode TX, amati tampilan Hyper Terminal saat DCE memancarkan data.

Kode Program TX-RX RS 232  dengan Turbo C++ for dos

#include <dos.h>
#include <stdio.h>
#include <conio.h>

#define PORT1 0x3F8

                                /* Defines Serial Ports Base Address */
                                /*           COM1 0x3F8                              */
                                /*           COM2 0x2F8                              */
                                /*           COM3 0x3E8                              */
                                /*           COM4 0x2E8                              */

void main(void)
{
 int c;
 int ch;

 outportb(PORT1 + 1 , 0);   /* Turn off interrupts - Port1 */

 /*         PORT 1 - Communication Settings         */

 outportb(PORT1 + 3 , 0x80);  /* SET DLAB ON */
 outportb(PORT1 + 0 , 0x0C);  /* Set Baud rate - Divisor Latch Low Byte */
                                                 /* Default 0x03 =  38,400 BPS */
                                                 /*         0x01 = 115,200 BPS */
                                                 /*         0x02 =  57,600 BPS */
                                                 /*         0x06 =  19,200 BPS */
                                                 /*         0x0C =   9,600 BPS */
                                                 /*         0x18 =   4,800 BPS */
                                                 /*         0x30 =   2,400 BPS */
  
outportb(PORT1 + 1 , 0x00);  /* Set Baud rate - Divisor Latch High Byte */
 outportb(PORT1 + 3 , 0x03);  /* 8 Bits, No Parity, 1 Stop Bit */
 outportb(PORT1 + 2 , 0xC7);  /* FIFO Control Register */
 outportb(PORT1 + 4 , 0x0B);  /* Turn on DTR, RTS, and OUT2 */

 printf("\n\n Program TX-RX RS 232 ");
 printf("\n\n Press ESC to quit \n");

 do { c = inportb(PORT1 + 5);          /* Check to see if char has been */
                                                         /* received.                     */

            if (c & 1) {ch = inportb(PORT1);                  /* If so, then get Char          */
                             printf("%c",ch);}                           /* Print Char to Screen        */

           if (kbhit()){ch = getch();                                  /* If key pressed, get Char */
                             outportb(PORT1, ch);}                /* Send Char to Serial Port */

      } while (ch !=27);                                                /* Quit when ESC (ASC 27) is pressed */
}



Transfer data serial dengan bahasa MATLAB

  1. Hubungkan modul TX-RX serial dengan komputer melalui serial port menggunakan DB9 cable extension.
  2. Bukalah Software MATLAB 7.0.
  3. Berikut adalah kode program yang anda ketikkan di MATLAB COMMAND WINDOW.
** Membuka port serial **

s=serial(‘COM1’);                                //misal yang digunakan COM1

get(s)                                                     //untuk melihat default property s (COM1)

set(s,’baudrate’,9600);                       //mengeset ‘baudrate’,
set(s,’databits’,8);                               //mengeset  ‘databits’,
set(s,’parity’,none);                              //mengeset  ‘parity’,
set(s,’stopbits’,1);                                //mengeset  ‘stopbits’
               
fopen(s)                                                 //membuka port serial

** Membaca dari port serial **

out=fscanf(s)


** Menulis ke port serial **

fprintf(s,’%i’,’1’)                                    //menulis ASCII 1 ke hardware

atau

fprintf(s,’1’)                                            //menulis 1 ke hardware


** Menutup port serial **

fclose(s)
delete(s)
clear s
..

No comments:

Post a Comment