Java library for serial communication between Java applications and Arduino boards with data visualization and export capabilities
The PanamaHitek_Arduino class provides comprehensive serial communication functionality for connecting Java applications to Arduino devices. It supports configurable connection parameters, multiple communication modes, and port management utilities.
public class PanamaHitek_Arduino {
public PanamaHitek_Arduino();
}Creates a new Arduino communication object and displays library credits.
Configure serial port parameters before establishing a connection:
public void setParity(int input_Parity);
public void setByteSize(int Bytes);
public void setStopBits(int Bits);
public void setTimeOut(int time);Parameters:
setParity(int) - Sets parity: 0=None, 1=Odd, 2=Even, 3=Mark, 4=SpacesetByteSize(int) - Sets byte size: 5-8 bitssetStopBits(int) - Sets stop bits: 1-3setTimeOut(int) - Sets timeout in millisecondsUsage Example:
PanamaHitek_Arduino arduino = new PanamaHitek_Arduino();
arduino.setParity(0); // No parity
arduino.setByteSize(8); // 8 data bits
arduino.setStopBits(1); // 1 stop bit
arduino.setTimeOut(2000); // 2 second timeoutEstablishes a transmit-only connection for sending data to Arduino:
public void arduinoTX(String PORT_NAME, int DATA_RATE) throws ArduinoException;Parameters:
PORT_NAME - Serial port name (e.g., "COM3", "/dev/ttyUSB0")DATA_RATE - Baud rate (e.g., 9600, 115200)Usage Example:
try {
arduino.arduinoTX("COM3", 9600);
arduino.sendData("Hello Arduino");
} catch (ArduinoException ex) {
System.err.println("Connection failed: " + ex.getMessage());
}Establishes a receive-only connection with event-driven data reception:
public void arduinoRX(String PORT_NAME, int DATA_RATE, SerialPortEventListener events)
throws ArduinoException, SerialPortException;Parameters:
PORT_NAME - Serial port nameDATA_RATE - Baud rateevents - SerialPortEventListener for handling incoming dataUsage Example:
import jssc.SerialPortEvent;
import jssc.SerialPortEventListener;
import jssc.SerialPortException;
SerialPortEventListener listener = new SerialPortEventListener() {
@Override
public void serialEvent(SerialPortEvent event) {
try {
if (arduino.isMessageAvailable()) {
String message = arduino.printMessage();
System.out.println("Received: " + message);
}
} catch (SerialPortException | ArduinoException ex) {
ex.printStackTrace();
}
}
};
arduino.arduinoRX("COM3", 9600, listener);Establishes a full-duplex connection for both sending and receiving data:
public void arduinoRXTX(String PORT_NAME, int DATA_RATE, SerialPortEventListener events)
throws ArduinoException;Parameters:
PORT_NAME - Serial port nameDATA_RATE - Baud rateevents - SerialPortEventListener for handling incoming dataUsage Example:
arduino.arduinoRXTX("COM3", 9600, listener);
// Send data
arduino.sendData("GET_SENSOR_DATA");
// Receive data handled by event listenerpublic void sendData(String data) throws ArduinoException, SerialPortException;Sends string data to the Arduino. Can only be used with arduinoTX() or arduinoRXTX() connections.
Usage Example:
arduino.sendData("LED_ON");
arduino.sendData("SERVO_90");
arduino.sendData("SENSOR_READ");public void sendByte(int data) throws ArduinoException, SerialPortException;Sends a single byte value (0-255) to Arduino.
Usage Example:
arduino.sendByte(255); // Send maximum byte value
arduino.sendByte(0); // Send minimum byte value
arduino.sendByte(127); // Send middle valuepublic byte[] receiveData() throws ArduinoException, SerialPortException;Receives raw byte data from Arduino. Can only be used with arduinoRX() or arduinoRXTX() connections.
public boolean isMessageAvailable() throws SerialPortException, ArduinoException;Checks if a complete message is available for reading.
public String printMessage() throws SerialPortException, ArduinoException;Retrieves the received message as a string.
Usage Example:
if (arduino.isMessageAvailable()) {
String message = arduino.printMessage();
System.out.println("Arduino says: " + message);
}public int getPortsAvailable();
public List<String> getSerialPorts();Usage Example:
int portCount = arduino.getPortsAvailable();
List<String> ports = arduino.getSerialPorts();
System.out.println("Available ports: " + portCount);
for (String port : ports) {
System.out.println("- " + port);
}public int getInputBytesAvailable() throws SerialPortException;
public void flushSerialPort() throws SerialPortException;Usage Example:
// Check buffer status
int bytesAvailable = arduino.getInputBytesAvailable();
System.out.println("Bytes in buffer: " + bytesAvailable);
// Clear buffers
arduino.flushSerialPort();public SerialPortEventListener getEventListener() throws ArduinoException;Retrieves the currently registered event listener.
public void killArduinoConnection() throws ArduinoException;Properly terminates the Arduino connection and releases system resources.
Usage Example:
try {
arduino.killArduinoConnection();
System.out.println("Connection terminated successfully");
} catch (ArduinoException ex) {
System.err.println("Error terminating connection: " + ex.getMessage());
}import com.panamahitek.PanamaHitek_Arduino;
import com.panamahitek.ArduinoException;
import jssc.*;
public class ArduinoSerialExample {
private PanamaHitek_Arduino arduino;
public void setup() {
arduino = new PanamaHitek_Arduino();
// Configure connection parameters
arduino.setParity(0);
arduino.setByteSize(8);
arduino.setStopBits(1);
arduino.setTimeOut(2000);
try {
// Establish bidirectional connection
arduino.arduinoRXTX("COM3", 9600, new SerialPortEventListener() {
@Override
public void serialEvent(SerialPortEvent event) {
if (event.isRXCHAR() && event.getEventValue() > 0) {
try {
if (arduino.isMessageAvailable()) {
String message = arduino.printMessage();
System.out.println("Received: " + message);
// Echo back to Arduino
arduino.sendData("ECHO: " + message);
}
} catch (SerialPortException | ArduinoException ex) {
ex.printStackTrace();
}
}
}
});
// Send initial command
arduino.sendData("START");
} catch (ArduinoException ex) {
System.err.println("Setup failed: " + ex.getMessage());
}
}
public void cleanup() {
try {
arduino.killArduinoConnection();
} catch (ArduinoException ex) {
System.err.println("Cleanup error: " + ex.getMessage());
}
}
}Install with Tessl CLI
npx tessl i tessl/maven-com-panamahitek--panama-hitek-arduino