使用Java将变量发送到Ubuntu上的Arduino COM端口



我需要使用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);
                }
            }
        }
    }
}

如何做?

在写入串行端口后尝试睡觉。配置Arduino进行流量控制,首先查看是否正常读取和写入是否有效,然后移动到EventListener方法意味着如果Java写入给Arduino,Arduino可以读取,然后从Arduino和Java侧发送数据,应该能够阅读。这将消除许多可能性。进一步尝试并行尝试其他一些库,例如serialpundit或github上的fazecast。

相关内容

最新更新