【问题标题】:Serial port sharing by Java and Arduino processesJava 和 Arduino 进程共享串口
【发布时间】:2013-04-12 21:45:18
【问题描述】:

我想使用串行端口/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 应用程序

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

我该如何解决?

【问题讨论】:

    标签: java serial-port arduino


    【解决方案1】:

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

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

    【讨论】:

    • 这是问题的最可能原因,特别是如果“启动 Arduino 草图”是指将草图“上传”到 Arduino。如果您的草图工作正常,如串行监视器测试,您不需要启动 Arduino IDE - 只需按下 Arduino 上的重置按钮。
    猜你喜欢
    • 2010-11-29
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多