0

我想通过使用串行端口/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
    }
}

我有两种情况:

  1. 我启动我的 Java 应用程序,然后启动我的 Arduino 草图
  2. 我启动我的 Arduino 草图,然后启动我的 Java 应用程序

在情况 1) 中,Arduino 草图会引发 PortInUse 异常,在情况 2) 中,Java 应用程序会抛出异常。

我该如何解决?

4

1 回答 1

1

尝试在 Arduino 中关闭串行监视器。我们无法建立到单个串行端口的多个连接。

当您在 Arduino 中打开串行监视器时,它将连接到配置的端口号,因此您无法通过 Java 代码访问同一端口。

于 2013-04-14T10:58:48.300 回答