Showing posts with label Arduino. Show all posts
Showing posts with label Arduino. Show all posts
Tuesday, September 15, 2015
Java + JavaFX + jSSC communicate with Arduino Board, run on Windows 10 and Raspberry Pi
It's a series of examples to program Java + JavaFX + jSSC(java-simple-serial-connector) on Windows 10 with NetBeans IDE. Run on Windows 10, to communicate with Arduino Board. And finally show how to remote deploy on Raspberry Pi using NetBeans IDE Remote Java SE Platform.
- Prepare jSSC - download and add library to NetBeans, and create project using it
- Example of using jSSC, communicate between JavaFX and Arduino Uno via USB Serial port
- JavaFX + jSSC - read byte from Arduino Uno, read from Analog Input
- JavaFX + jSSC - read byte from Arduino Uno, display in LineChart
- Bi-direction communication between Arduino and PC using Java + jSSC
- Java + JavaFX + jSSC run on Raspberry Pi, control Arduino Uno
(with setup Remote Java SE Platform on Netbeans/Windows 10, remote deploy to Raspberry Pi)
- Prepare jSSC - download and add library to NetBeans, and create project using it
- Example of using jSSC, communicate between JavaFX and Arduino Uno via USB Serial port
- JavaFX + jSSC - read byte from Arduino Uno, read from Analog Input
- JavaFX + jSSC - read byte from Arduino Uno, display in LineChart
- Bi-direction communication between Arduino and PC using Java + jSSC
[フレーム]
- Java + JavaFX + jSSC run on Raspberry Pi, control Arduino Uno
(with setup Remote Java SE Platform on Netbeans/Windows 10, remote deploy to Raspberry Pi)
[フレーム]
標籤:
Arduino,
JavaFX,
JavaFX 8,
NetBeans,
Raspberry Pi,
Windows 10
Monday, March 3, 2014
JavaFX + java-simple-serial-connector + Arduino
[フレーム]
A simple Java application using java-simple-serial-connector library (jSSC) , with JavaFX user interface, send bytes to Arduino Esplora via USB.
http://arduino-er.blogspot.com/2014/03/javafx-java-simple-serial-connector.html
Sunday, January 26, 2014
JavaFX/Swing + RxTx to communicate with Arduino, as ColorPicker
Here is examples from arduino-er.blogspot.com to demonstrate how to use RxTx Java Library in JavaFX/Swing application to communicate with Arduino Esplora via USB serial. javafx.scene.control.ColorPicker/javax.swing.JColorChooser are used to choice color, then send to Arduino via USB serial with RxTx Java Library, then to set the color of LCD screen/LED in Arduino side.
JavaFX version:
Java Swing version:
For the code in Arduino side, refer: http://arduino-er.blogspot.com/2014/01/send-array-of-byte-from-pc-to-arduino.html
JavaFX version:
package javafxcolorpicker;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.Enumeration;
import javafx.application.Application;
import javafx.event.Event;
import javafx.event.EventHandler;
import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.ColorPicker;
import javafx.scene.layout.HBox;
import javafx.scene.paint.Color;
import javafx.stage.Stage;
public class JavaFXColorPicker extends Application {
MyRxTx myRxTx;
@Override
public void start(Stage primaryStage) {
primaryStage.setTitle("ColorPicker");
final Scene scene = new Scene(new HBox(20), 400, 100);
HBox box = (HBox) scene.getRoot();
box.setPadding(new Insets(5, 5, 5, 5));
final ColorPicker colorPicker = new ColorPicker();
//colorPicker.setValue(Color.CORAL);
colorPicker.setOnAction(new EventHandler() {
public void handle(Event t) {
scene.setFill(colorPicker.getValue());
Color color = colorPicker.getValue();
byte byteR = (byte)(color.getRed() * 255);
byte byteG = (byte)(color.getGreen() * 255);
byte byteB = (byte)(color.getBlue() * 255);
try {
byte[] bytesToSent =
new byte[]{byteB, byteG, byteR};
myRxTx.output.write(bytesToSent);
} catch (IOException ex) {
System.out.println(ex.toString());
}
}
});
box.getChildren().add(colorPicker);
primaryStage.setScene(scene);
primaryStage.show();
myRxTx = new MyRxTx();
myRxTx.initialize();
}
public static void main(String[] args) {
launch(args);
}
class MyRxTx implements SerialPortEventListener {
SerialPort serialPort;
/**
* The port we're normally going to use.
*/
private final String PORT_NAMES[] = {
"/dev/ttyACM0", //for Ubuntu
"/dev/tty.usbserial-A9007UX1", // Mac OS X
"/dev/ttyUSB0", // Linux
"COM3", // Windows
};
private BufferedReader input;
private OutputStream output;
private static final int TIME_OUT = 2000;
private static final int DATA_RATE = 9600;
public void initialize() {
CommPortIdentifier portId = null;
Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();
//First, Find an instance of serial port as set in PORT_NAMES.
while (portEnum.hasMoreElements()) {
CommPortIdentifier currPortId
= (CommPortIdentifier) portEnum.nextElement();
for (String portName : PORT_NAMES) {
if (currPortId.getName().equals(portName)) {
portId = currPortId;
break;
}
}
}
if (portId == null) {
System.out.println("Could not find COM port.");
return;
} else {
System.out.println("Port Name: " + portId.getName() + "\n"
+ "Current Owner: " + portId.getCurrentOwner() + "\n"
+ "Port Type: " + portId.getPortType());
}
try {
// open serial port, and use class name for the appName.
serialPort = (SerialPort) portId.open(this.getClass().getName(),
TIME_OUT);
// set port parameters
serialPort.setSerialPortParams(DATA_RATE,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
// open the streams
input = new BufferedReader(
new InputStreamReader(serialPort.getInputStream()));
output = serialPort.getOutputStream();
// add event listeners
serialPort.addEventListener(this);
serialPort.notifyOnDataAvailable(true);
} catch (Exception e) {
System.err.println(e.toString());
}
}
@Override
public void serialEvent(SerialPortEvent spe) {
if (spe.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
final String inputLine = input.readLine();
System.out.println(inputLine);
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
/**
* This should be called when you stop using the port. This will prevent
* port locking on platforms like Linux.
*/
public synchronized void close() {
if (serialPort != null) {
serialPort.removeEventListener();
serialPort.close();
}
}
}
}
[フレーム]
Java Swing version:
package javaswingcolorpicker;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Component;
import java.awt.Container;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.Enumeration;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
public class JavaSwingColorPicker extends JFrame {
MyRxTx myRxTx;
public JavaSwingColorPicker() {
super("JColorChooser Test Frame");
setSize(200, 100);
final Container contentPane = getContentPane();
final JButton go = new JButton("Show JColorChooser");
go.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Color c;
c = JColorChooser.showDialog(
((Component) e.getSource()).getParent(),
"Demo", Color.blue);
contentPane.setBackground(c);
byte byteR = (byte)(c.getRed());
byte byteG = (byte)(c.getGreen());
byte byteB = (byte)(c.getBlue() );
try {
byte[] bytesToSent =
new byte[]{byteB, byteG, byteR};
myRxTx.output.write(bytesToSent);
} catch (IOException ex) {
System.out.println(ex.toString());
}
}
});
contentPane.add(go, BorderLayout.SOUTH);
setDefaultCloseOperation(EXIT_ON_CLOSE);
myRxTx = new MyRxTx();
myRxTx.initialize();
}
public static void main(String[] args) {
JavaSwingColorPicker myColorPicker = new JavaSwingColorPicker();
myColorPicker.setVisible(true);
}
class MyRxTx implements SerialPortEventListener {
SerialPort serialPort;
/**
* The port we're normally going to use.
*/
private final String PORT_NAMES[] = {
"/dev/ttyACM0", //for Ubuntu
"/dev/tty.usbserial-A9007UX1", // Mac OS X
"/dev/ttyUSB0", // Linux
"COM3", // Windows
};
private BufferedReader input;
private OutputStream output;
private static final int TIME_OUT = 2000;
private static final int DATA_RATE = 9600;
public void initialize() {
CommPortIdentifier portId = null;
Enumeration portEnum = CommPortIdentifier.getPortIdentifiers();
//First, Find an instance of serial port as set in PORT_NAMES.
while (portEnum.hasMoreElements()) {
CommPortIdentifier currPortId
= (CommPortIdentifier) portEnum.nextElement();
for (String portName : PORT_NAMES) {
if (currPortId.getName().equals(portName)) {
portId = currPortId;
break;
}
}
}
if (portId == null) {
System.out.println("Could not find COM port.");
return;
} else {
System.out.println("Port Name: " + portId.getName() + "\n"
+ "Current Owner: " + portId.getCurrentOwner() + "\n"
+ "Port Type: " + portId.getPortType());
}
try {
// open serial port, and use class name for the appName.
serialPort = (SerialPort) portId.open(this.getClass().getName(),
TIME_OUT);
// set port parameters
serialPort.setSerialPortParams(DATA_RATE,
SerialPort.DATABITS_8,
SerialPort.STOPBITS_1,
SerialPort.PARITY_NONE);
// open the streams
input = new BufferedReader(
new InputStreamReader(serialPort.getInputStream()));
output = serialPort.getOutputStream();
// add event listeners
serialPort.addEventListener(this);
serialPort.notifyOnDataAvailable(true);
} catch (Exception e) {
System.err.println(e.toString());
}
}
@Override
public void serialEvent(SerialPortEvent spe) {
if (spe.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
final String inputLine = input.readLine();
System.out.println(inputLine);
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
/**
* This should be called when you stop using the port. This will prevent
* port locking on platforms like Linux.
*/
public synchronized void close() {
if (serialPort != null) {
serialPort.removeEventListener();
serialPort.close();
}
}
}
}
[フレーム]
For the code in Arduino side, refer: http://arduino-er.blogspot.com/2014/01/send-array-of-byte-from-pc-to-arduino.html
Subscribe to:
Comments (Atom)