Arduino nano设置为以9600的波特率在串行端口上向我发送“测试”。使用fazecast jSerialComm库,我编写了一个测试应用程序以在计算机上显示发送的数据。我想写信给arduino,然后从arduino那里读。我对这种串行通讯还很陌生。
这是我的Java代码:
public class main {
private static int baudRate = 9600;
private static int dataBits = 8;
private static int stopBits = 1;
private static int parity = 0;
private static int readTimeout = 0;
private static int writeTimeout = 0;
public static void main(String[] args) throws IOException, InterruptedException {
SerialPort sp = SerialPort.getCommPort("/dev/ttyUSB0");
sp.setComPortParameters(baudRate, dataBits, stopBits, parity);
sp.setComPortTimeouts(SerialPort.TIMEOUT_WRITE_BLOCKING, readTimeout, writeTimeout);
if (sp.openPort()) {
System.out.println("Port is open");
} else {
System.out.println("Failed to open port");
return;
}
for (Integer i = 0; i < 5; ++i) {
sp.getOutputStream().write(i.byteValue());
sp.getOutputStream().flush();
System.out.println("Sent number: " + i);
Thread.sleep(1000);
}
if(sp.getInputStream() != null){
System.out.print(sp.getInputStream().read());
}
if (sp.closePort()) {
System.out.println("Port is closed :)");
} else {
System.out.println("Failed to close port :(");
return;
}
}
}
我由于某种原因无法打开端口。它始终显示“无法打开端口”。我在终端中做了
ls /dev/tty*
,然后拔下了Arduino nano,唯一的/dev/ttyUSB0
被删除了。当我重新插上电源并运行命令时,将再次出现该命令。我认为也许是问题所在,但可能不是。我究竟做错了什么?我想我读了一些关于它是Linux问题的文章,但是我似乎找不到它。这可能是与Linux相关的问题吗? 最佳答案
这确实是一个Linux问题。它与端口权限有关。我不得不做sudo chmod 666 /dev/ttyUSB0
来解决这个问题。但是每次启动我都需要这样做,所以我仍在寻找长期解决方案。
关于java - 从Linux上的Arduino Nano在SerialPort上读取Java流,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55125573/