让我之前的代码正常工作,该类将Arduino的串行数据打印到控制台。接下来我想要的是serialEvent返回一个String,因此可以将它与main方法中的switch语句一起使用。
班级:
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());
}
}
}
}
主要:
package Main;
import Serial.SerialCom;
public class Main {
public static void main(String [] args){
SerialCom serialCom = new SerialCom();
serialCom.initialize();
}
}
因此在该类中,将有一个switch语句,该语句根据Arduino的Strings做某些事情。