Мой предыдущий код работает, этот класс печатает последовательные данные с Arduino на консоль.Далее я хочу, чтобы serialEvent возвращал String, поэтому его можно использовать с оператором switch в методе main.
Класс:
package Serial;
import com.fazecast.jSerialComm.SerialPort;
import com.fazecast.jSerialComm.SerialPortDataListener;
import com.fazecast.jSerialComm.SerialPortEvent;
import java.io.*;
public class SerialCom implements SerialPortDataListener {
private SerialPort sp;
private static final String portName = "COM3";
private BufferedReader input;
public void initialize() {
SerialPort sp = SerialPort.getCommPort(portName);
if (sp.openPort()) {
System.out.println("Arduino - Connected");
} else {
System.out.println("Arduino - Missing");
return;
}
try {
// set port parameters
sp.setComPortParameters(9600, 8, 1, 0);
sp.setComPortTimeouts(SerialPort.TIMEOUT_READ_SEMI_BLOCKING, 0, 0);
// open the streams
input = new BufferedReader(new InputStreamReader(sp.getInputStream()));
// add event listeners
sp.addDataListener(this);
} catch (Exception e) {
System.err.println(e.toString());
}
}
public void close() {
if (sp != null) {
sp.removeDataListener();
sp.closePort();
}
}
public int getListeningEvents() {
return SerialPort.LISTENING_EVENT_DATA_AVAILABLE;
}
public synchronized void serialEvent(SerialPortEvent serialPortEvent) {
if (serialPortEvent.getEventType() == SerialPort.LISTENING_EVENT_DATA_AVAILABLE) {
try {
String inputLine;
if (input.ready()) {
inputLine = input.readLine();
System.out.println(inputLine);
}
} catch (Exception e) {
System.err.println(e.toString());
}
}
}
}
Main:
package Main;
import Serial.SerialCom;
public class Main {
public static void main(String [] args){
SerialCom serialCom = new SerialCom();
serialCom.initialize();
}
}
Так что в этом классе будет оператор switch, который делает определенные вещи на основе Strings из Arduino.