Java和Arduino进程共享串口

时间:2013-04-12 21:45:19

标签: java serial-port arduino

我想通过正确使用串行端口/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 sketch正在从串口读取:

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应用程序
  3. 在案例1)中,Arduino草图抛出PortInUse异常,在案例2)Java应用程序执行它。

    我该如何解决?

1 个答案:

答案 0 :(得分:1)

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

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