我想通过使用串行端口/dev/tty.usbmodem1421
(Mac OS X、Mountain Lion (v10.8)、Java 6 和正确安装的 rxtx 库)将一个整数从我的 Java 应用程序发送到 Arduino。简而言之,我的Java应用程序以正确的方式找到并打开了串口并添加了EventListener:
serialPort = (SerialPort) portId.open(this.getClass().getName(), TIME_OUT);
serialPort.setSerialPortParams(DATA_RATE, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);
input = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
output = serialPort.getOutputStream();
serialPort.addEventListener(this);
serialPort.notifyOnDataAvailable(true);
我的 Arduino草图正在从串口读取:
int num=0;
void setup() {
Serial.begin(9600);
}
void loop() {
if (Serial.available() > 0) {
num = Serial.read();
// Code for lighting num LEDs
}
}
我有两种情况:
- 我启动我的 Java 应用程序,然后启动我的 Arduino 草图
- 我启动我的 Arduino 草图,然后启动我的 Java 应用程序
在情况 1) 中,Arduino 草图会引发 PortInUse 异常,在情况 2) 中,Java 应用程序会抛出异常。
我该如何解决?