使用 Java 将变量发送到 ubuntu 上的 Arduino COM 端口
Sending variable to Arduino COM port on ubuntu using Java
我需要使用 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
我需要使用 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