【问题标题】:Sending variable to Arduino COM port on ubuntu using Java使用 Java 将变量发送到 ubuntu 上的 Arduino COM 端口
【发布时间】:2023-03-11 09:42:01
【问题描述】:

我需要使用 Java 编程语言通过 Linux Ubuntu 上的 COM 端口将变量发送到 Arduino UNO。使用库 JSSC 或 RXTX。喜欢:

String text = "turn_on";
write(text);

喜欢:

int num = 1;
write(num);

我的 Arduino 代码是这样的:

include <SoftwareSerial.h>

void setup() {
  pinMode(9, OUTPUT);
  Serial.begin(57600);
}
int st;
void loop() {
  st = Serial.read();
  if(st == 1){
    digitalWrite(9, 1);
  }

}

我试过这段代码:

import jssc.SerialPort;
import jssc.SerialPortEvent;
import jssc.SerialPortEventListener;
import jssc.SerialPortException;

public class Test {

    private static SerialPort serialPort;

    public static void main(String[] args) {

        serialPort = new SerialPort("/dev/ttyUSB2");
        try {

            serialPort.openPort();

            serialPort.setParams(SerialPort.BAUDRATE_57600,
                                 SerialPort.DATABITS_8,
                                 SerialPort.STOPBITS_1,
                                 SerialPort.PARITY_NONE);

            serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_RTSCTS_IN | 
                                          SerialPort.FLOWCONTROL_RTSCTS_OUT);

            serialPort.addEventListener(new PortReader(), SerialPort.MASK_RXCHAR);

            serialPort.writeInt(1);
        }
        catch (SerialPortException ex) {
            System.out.println(ex);
        }
    }

    private static class PortReader implements SerialPortEventListener {

        public void serialEvent(SerialPortEvent event) {
            if(event.isRXCHAR() && event.getEventValue() > 0){
                try {

                    String data = serialPort.readString(event.getEventValue());

                    serialPort.write(1);
                }
                catch (SerialPortException ex) {
                    System.out.println(ex);
                }
            }
        }
    }
}

怎么做?

【问题讨论】:

  • 描述您已经尝试过的内容以及任何研究的结果。 (在提出问题之前,您已经找到了解决问题的方法,不是吗?Stack Overflow 并不是要取代基本的搜索技能。)
  • 哦...抱歉我忘了。我重写了我的问题。现在你可以看到

标签: java arduino arduino-uno jssc


【解决方案1】:

写入串口后尝试休眠。配置 Arduino 进行流控制,首先查看是否正常读写工作,然后转到 eventListener 方法意味着如果 java 写入 arduino,arduino 能够读取然后从 arduino 发送数据,java 端应该能够读取。这将消除许多可能性。进一步并行尝试其他一些库,例如 SerialPundit 或 github 上的 fazecast。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多