繁体   English   中英

Java和Arduino进程共享串口

[英]Serial port sharing by Java and Arduino processes

我想通过使用串行端口/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应用程序执行该异常。

我该如何解决?

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM