Serial Port Communication Java
Bagi para programmer hardware, java serial port communication merupakan salah satu media yang banyak dipakai untuk PC interfacing. Serial port digunakan untuk menghubungkan PC ke perangkat lain seperti mikrokontroler, PLC, dll. Di JAVA untuk mengakses serial port kita membutuhkan sebuah library yang bernama RxTx. Silahkan download terlebih dahulu librarynya disini http://rxtx.qbang.org/wiki/index.php/Download. Kemudian extract hasil download tadi. Disitu terdapat file yang bernama RXTXcomm.jar, file inilah yang merupakan library tersebut. Namun jangan lupa sebelum kita memulai untuk mencoba kita perlu mengcopy file rxtxSerial.dll ke C:/Windows/System32
Buatlah project baru untuk mencoba membuat java serial port communication. Untuk kali ini kita hanya menggunakan CLI saja :D. untuk menambahkan library pada project kita, klik kanan pada libraries => Add JAR/Folder.

Berikut merupakan contoh program untuk membaca data dari serial port.
[sourcecode language=”java”]/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package serial;
/**
*
* @author eko rudiawan
*/
import java.io.*;
import java.util.*;
import gnu.io.*;
//import java.io.InputStream;
//import java.io.OutputStream;
public class Serial {
static Enumeration portList;
static CommPortIdentifier portId;
static String messageString = “Hello, world!”;
static SerialPort serialPort;
static OutputStream outputStream;
static boolean outputBufferEmptyFlag = false;
static InputStream input;
/**
* Method declaration
*
*
* @param args
*
* @see
*/
public static void main(String[] args) throws IOException {
boolean portFound = false;
String defaultPort = “COM2”;
if (args.length > 0) {
defaultPort = args[0];
}
portList = CommPortIdentifier.getPortIdentifiers();
while (portList.hasMoreElements()) {
portId = (CommPortIdentifier) portList.nextElement();
if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
if (portId.getName().equals(defaultPort)) {
System.out.println(“Found port ” + defaultPort);
portFound = true;
try {
serialPort =
(SerialPort) portId.open(“SimpleWrite”, 2000);
} catch (PortInUseException e) {
System.out.println(“Port in use.”);
continue;
}
try {
outputStream = serialPort.getOutputStream();
} catch (IOException e) {
}
try {
serialPort.setSerialPortParams(9600,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
} catch (UnsupportedCommOperationException e) {
}
try {
serialPort.notifyOnOutputEmpty(true);
} catch (Exception e) {
System.out.println(“Error setting event notification”);
System.out.println(e.toString());
System.exit(-1);
}
input = serialPort.getInputStream();
while (true) {
while (input.available() > 0) {
System.out.print((char) (input.read()));
}
}
}
}
}
if (!portFound) {
System.out.println(“port ” + defaultPort + ” not found.”);
}
serialPort.close();
System.exit(1);
}
}
Referensiku = > http://silveiraneto.net/2009/03/01/arduino-and-java/
kalau untuk write data ke serial gimana mas?
gan klo muncul errornya gmna ya cara ngatasnnya..
error ini keluar pas hardwarenya dicabut pas lagi running programnya.
#
# A fatal error has been detected by the Java Runtime Environment:
#
# EXCEPTION_ACCESS_VIOLATION (0xc0000005) at pc=0x6f697461, pid=4176, tid=452
#
# JRE version: 7.0_04-b22
# Java VM: Java HotSpot(TM) Client VM (23.0-b21 mixed mode, sharing windows-x86 )
# Problematic frame:
# C 0x6f697461
#
# Failed to write core dump. Minidumps are not enabled by default on client versions of Windows
#
# An error report file with more information is saved as:
# D:RidlaSchoolUniversitas MaranathaSemester GanjilPemrograman Berorientasi Objek (Java)SerialRFIDRFIDhs_err_pid4176.log
#
# If you would like to submit a bug report, please visit:
# http://bugreport.sun.com/bugreport/crash.jsp
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#
Java Result: 1
BUILD SUCCESSFUL (total time: 35 seconds)
ya harusnya sebelum hardwarenya dicabut klik dulu button disconnect
saya mau ngatasin error handlingnya mas. buat human errornya klo dia tiba2 cabut hardwarenya terus keluar pesan gitu. ga bisa nerima exceptionnya..
bisa pakai try catch (exception) pada waktu baca datanya
blog nya sangat bagus bang…
saya mau tanya klo desain nya yang monitoring suhu itu cakep ada speedometernya pake apa, trus cara ngambil komponen tersebut gimana
nama komponen tersebut di propertis apa ya bang
saya lagi belajar java ke mikro, ternyata susah tapi bisa aha masa gak bisa
tolong bantu bang….
bisa dilihat di blog saya yg satu lagi http://49012012eko.blogspot.com/2012/08/library-untuk-menampilkan-grafik-pada.html
bolah di email biar lebih jelas bang, aqiens@yahoo.co.id
mas eko kalau untuk ditampilin ke textfield bagaimana?
mohon pencerahannya.
martisunaardhi@gmail.com
silahkan download source program yang ada di postingan ini http://blognyaeko.wordpress.com/2011/12/11/monitoring-suhu-menggunakan-arduino-dan-java/
baik mas saya akan coba, terima kasih atas pencerahannya. salam
Reblogged this on Revosatya’s Blog.
salam kenal mas Eko…
kalau cara akses USB atau HID via Java gimana mas…? atau ada rekan2 yang pernah bikin…?
tks
maaf ni mas, di blog yang satu nya dgn URL http://49012012eko.blogspot.com/2012/08/library-untuk-menampilkan-grafik-pada.html gak di tampilkan source code program java dan arduino nya, mohon di share yaa mas…
Maaf mas, kalau ingin mengirimkan data dari java ke arduino gimana ya caranya? saya ingin membuat program dimana data yg diinput melalui program java desktop nantinya akan diterima dan diolah di arduino.
mohon di balas melalui email
Terima Kasih 🙂