Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // *********************************************
- import java.awt.AWTException;
- import java.awt.Robot;
- import java.awt.event.KeyEvent;
- import java.io.BufferedReader;
- import java.io.InputStreamReader;
- import java.io.OutputStream;
- import gnu.io.CommPortIdentifier;
- import gnu.io.SerialPort;
- import gnu.io.SerialPortEvent;
- import gnu.io.SerialPortEventListener;
- import java.util.Enumeration;
- import javax.swing.*;
- import javax.swing.event.*;
- import java.awt.*;
- import java.awt.event.*;
- import javax.swing.JFrame;
- import java.awt.Color;
- public class SerialTest implements SerialPortEventListener {
- SerialPort serialPort;
- /** The port we're normally going to use. */
- private static final String PORT_NAMES[] = { "/dev/tty.usbserial-A9007UX1", // Mac OS X
- "/dev/ttyUSB0", // Linux
- "COM1", // Windows
- };
- /**
- * A BufferedReader which will be fed by a InputStreamReader converting the
- * bytes into characters making the displayed results codepage independent
- */
- private BufferedReader input;
- /** The output stream to the port */
- private OutputStream output;
- /** Milliseconds to block while waiting for port open */
- private static final int TIME_OUT = 2000;
- /** Default bits per second for COM port. */
- 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;
- }
- }
- }
- System.out.println("Port ID: ");
- System.out.println(portId);
- System.out.println("");
- if (portId == null) {
- System.out.println("Could not find COM port.");
- return;
- }
- 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());
- }
- }
- /**
- * 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();
- }
- }
- /**
- * Handle an event on the serial port. Read the data and print it.
- */
- public synchronized void serialEvent(SerialPortEvent oEvent) {
- if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
- try {
- String inputLine = input.readLine();
- // ENGINE START
- if (inputLine.equals("Start Engine")) {
- System.out.println("Engine Start Engaged");
- try {
- Robot robot = new Robot();
- robot.keyPress(KeyEvent.VK_S);
- robot.delay(500);
- robot.keyRelease(KeyEvent.VK_S);
- } catch (AWTException e) {
- e.printStackTrace();
- }
- }
- // WINDSHIELD WIPERS
- if (inputLine.equals("Windshield Wipers")) {
- System.out.println("Windshield Wipers Engaged");
- try {
- Robot robot = new Robot();
- robot.keyPress(KeyEvent.VK_W);
- robot.delay(500);
- robot.keyRelease(KeyEvent.VK_W);
- } catch (AWTException e) {
- e.printStackTrace();
- }
- }
- // PIT SPEED LIMITER
- if (inputLine.equals("Pit Speed Limiter")) {
- System.out.println("Pit Limiter Engaged");
- try {
- Robot robot = new Robot();
- robot.keyPress(KeyEvent.VK_P);
- robot.delay(500);
- robot.keyRelease(KeyEvent.VK_P);
- } catch (AWTException e) {
- e.printStackTrace();
- }
- }
- // HEADLIGHTS
- if (inputLine.equals("Headlights")) {
- System.out.println("Headlights Engaged");
- try {
- Robot robot = new Robot();
- robot.keyPress(KeyEvent.VK_H);
- robot.delay(500);
- robot.keyRelease(KeyEvent.VK_H);
- } catch (AWTException e) {
- e.printStackTrace();
- }
- }
- } catch (Exception e) {
- System.err.println(e.toString());
- }
- }
- if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
- }
- // Ignore all the other eventTypes, but you should consider the other
- // ones.
- }
- public static void main(String[] args) throws Exception {
- SerialTest main = new SerialTest();
- main.initialize();
- Thread t = new Thread() {
- public void run() {
- // the following line will keep this app alive for 1000 seconds,
- // waiting for events to occur and responding to them (printing
- // incoming messages to console).
- try {
- Thread.sleep(1000000);
- } catch (InterruptedException ie) {
- }
- }
- };
- t.start();
- System.out.println("- Started -");
- System.out.println("");
- }
- }
- // *********************************************
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement