MENGGUNAKAN RS232 DENGAN BAHASA PROGRAM JAVA
Bahasa pemrograman java mendukung komponen RS232 tersebut. Yang disebut dengan javacommapi yang terdiri dari comm.jar, javax.comm.properties, dan win32com.dll yang dapat diunduh/download pada web site http://java.sun.com/products/javacomm/index.jsp.
Untuk system operasi Ms. Windows 2000 dan XP, hasil install-an sering kali bermasalah. Cara penanganannya adalah sebagai berikut :
1. Copy comm.jar pada direktori
2. Copy win32com.dll pada direktori
3. Copy javax.comm.properties pada direktori
Hal-hal yang perlu diketahui pada komunikasi yaitu kecepatan pengiriman, data bits, parity, stop bits, dan flow control.
1. Kecepatan pengiriman, 300 bps sampai dengan 921600
2. Data bits, 5 sampai dengan 8 bits
3. Parity terdiri dari even, odd dan none
4. Stop bits, 1, 1.5 dan 2
5. Flow Control None
Pada salah satu contoh program pada web site www.sun.com untuk menggunakan alat RS232 adalah SimpleRead.java dan SimpleWrite.java. SimpleRead.java adalah program untuk membaca data yang didapatkan dari RS232 dan SimpleWrite.java adalah program untuk mengirimkan data melalui RS232.
Dengan catatan kecepatan, data bit, stop bit, dan pariti harus sama antara satu dengan lainnya. Sebagai contoh jalankan program program penerima di komputer penerima dan program pengirim dikomputer pengirim.
Program Penerima
/* * @(#)SimpleRead.java 1.12 98/06/25 SMI * Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved. * Program untuk Menerima data */ import java.io.*; import java.util.*; import javax.comm.*; public class SimpleRead implements Runnable, SerialPortEventListener { static CommPortIdentifier portId; static Enumeration portList; InputStream inputStream; SerialPort serialPort; Thread readThread; public static void main(String[] args) { //Mengidentifikasikan jumlah port pada komputer portList = CommPortIdentifier.getPortIdentifiers(); while (portList.hasMoreElements()) { portId = (CommPortIdentifier) portList.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { //yang dibuka hanya port pertama atau COM1 if (portId.getName().equals("COM1")) { //jika menggunakan Unix //if (portId.getName().equals("/dev/term/a")) { SimpleRead reader = new SimpleRead(); } } } } public SimpleRead() { try { serialPort = (SerialPort) portId.open("SimpleReadApp", 2000); } catch (PortInUseException e) {} try { inputStream = serialPort.getInputStream(); } catch (IOException e) {} try { serialPort.addEventListener(this); } catch (TooManyListenersException e) {} serialPort.notifyOnDataAvailable(true); try { //speed 9600, databit 8, stopbit 1, parity none serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } catch (UnsupportedCommOperationException e) {} readThread = new Thread(this); readThread.start(); } public void run() { try { Thread.sleep(20000); } catch (InterruptedException e) {} } public void serialEvent(SerialPortEvent event) { switch(event.getEventType()) { case SerialPortEvent.BI: case SerialPortEvent.OE: case SerialPortEvent.FE: case SerialPortEvent.PE: case SerialPortEvent.CD: case SerialPortEvent.CTS: case SerialPortEvent.DSR: case SerialPortEvent.RI: case SerialPortEvent.OUTPUT_BUFFER_EMPTY: break; case SerialPortEvent.DATA_AVAILABLE: //Menangkap data yang masuk ke komputer byte[] readBuffer = new byte[20]; try { while (inputStream.available() > 0) { int numBytes = inputStream.read(readBuffer); } //tampilkan ke layar System.out.print(new String(readBuffer)); } catch (IOException e) {} break; } } } |
Program Pengirim
/* * @(#)SimpleWrite.java 1.12 98/06/25 SMI * Copyright (c) 1998 Sun Microsystems, Inc. All Rights Reserved. * Program Untuk Mengirim Data */ import java.io.*; import java.util.*; import javax.comm.*; public class SimpleWrite { static Enumeration portList; static CommPortIdentifier portId; static String messageString = "Hello, world!\n"; static SerialPort serialPort; static OutputStream outputStream; public static void main(String[] args) { portList = CommPortIdentifier.getPortIdentifiers(); while (portList.hasMoreElements()) { portId = (CommPortIdentifier) portList.nextElement(); if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) { // if (portId.getName().equals("COM1")) { if (portId.getName().equals("/dev/term/a")) { try { serialPort = (SerialPort) portId.open("SimpleWriteApp", 2000); } catch (PortInUseException e) {} try { outputStream = serialPort.getOutputStream(); } catch (IOException e) {} try { //speed 9600, databit 8, //stopbit 1, parity none serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE); } catch (UnsupportedCommOperationException e) {} try { //kirim Hello, World! outputStream.write(messageString.getBytes()); } catch (IOException e) {} } } } } } |
RS232 DAN MODEM
Apabila interface RS232 di gunakan secara lengkap, maka penggunaannya lebih cenderung pada penggunaan modem. Dan pada modem, umumnya, telah disediakan perintah-perintah yang dapat digunakan oleh pengembang program. Perintah–perintah tersebut disebut dengan sebutan AT Command. Adapun perintah AT, bukan At atau at, adalah sebagai berikut :
+++ | Mode data dirubah menjadi mode perintah tanpa harus melakukan pemutusan hubungan. Perintah ini harus disertai dengan Enter |
A/ | Mengulangi perintah terakhir |
ATA | Menjawab panggilan secara manual |
ATBn | Memilih protocol Bell or CCITT (ITU-T), model ini hanya berpengaruh pada modem dengan model V.22 atau V.21 n=0, CCITT V.22 atau V.21 n=1, Bell212 atau 103 |
ATDTn | Melakukan kontak ke nomor telpon Contoh : ATDT021777777 |
ATEn | Perintah Echo. Semua perintah yang dilakukan akan tampil kembali pada layar n=0, menon-aktifkan echo n=1, mengaktifkan echo |
ATHn | Hangup n=0, Hang Up n=1, off |
ATIn | Pendeteksi identitas pabrikan dan setting n=0, product code/merk n=1, pengkalkulasian pertama/IMEI n=2..3, prakiraan n=4, OEM String n=5..11, nilai ok n=12, Pengkakulasian ROM n=13, Versi RC n=14, Nama Pabrik Pembuat n=15, Pilihan Negara n=17, GSM Option n=18, Cek GSM Support |
ATLn | Speaker Volume n=0, Suara Terkecil n=1, Suara Kecil n=2, Suara Sedang n=3, Suara Keras |
ATMn | Pengontrolan Speaker n=0, speaker tidak bersuara n=1, speaker aktif jika terdapat penerimaan/pengiriman n=2, speaker selalu aktif n=3 speaker hanya aktif jika modem menjawab |
ATQn | Respon balik modem ke computer n=0, modem melakukan respon pada computer n=1, modem tidak melakukan respon |
ATSn | Melakukan penge-set-an dan membaca register atau melakukan autoanswer ATSn=x, Melakukan penge-set-an variable n dengan nilai 1 ATSn?, membaca register n |
ATZn | Reset modem n=0, restore ke profil 0 n=1, restore ke profil 1 |
Perintah-perintah modem yang terdapat pada tabel merupakan sebagian dari perintah modem.
2 comments:
bos, bisa ajari by email caranya mbikin sms gateway g? help me. Thanks.
kita belajar lewat sini saja biar ilmu kita saling ke share, OK?!
Post a Comment