java - 使用 shell 和 Java 读写串口

标签 java shell terminal serial-port arduino

我正在尝试使用 shell 和 java 的组合来读取和写入串行端口。目标是能够使用 PrintWriter 和 BufferedReader 从连接到串行端口的设备发送和接收命令。我知道这可以通过不同的方式完成(不使用 shell),但这不是我想要的。我希望能够使用 shell 和 java 来完成此操作。

这是我的代码:

static String port = "/dev/tty.usbmodem411";
static int baudRate = 9600;
private static String command = "screen " + port + " " + baudRate;

public static void main(String[] args) throws Exception {
    System.out.println("Command is " + command);
    Process p = Runtime.getRuntime().exec(command);
    //p.waitFor();

    BufferedReader reader =
            new BufferedReader(new InputStreamReader(
            p.getInputStream()));
    String line = reader.readLine();
    while(true)
    {
        if (line != null) {
            System.out.println(line);

        }
        line = reader.readLine();
    }

}

通过这段代码,我专门尝试从串行端口读取数据。我正在使用 java 运行 shell 命令来访问串行端口,然后读取命令的输出。

但是,当我运行此代码时,我总是收到一条消息“必须连接到终端”。我还尝试将行 command = "screen "+ port + ""+ baudRate; 更改为 command = "screen -dm"+ port + ""+ baudRate;,但后来我没有得到任何输出。我咨询过几个类似的问题,Executing screen command from JavaHow to open a command terminal in Linux? 但我仍然不知道我应该做什么来解决这个问题。我有一种感觉,这一定是非常简单的事情,但经过几个小时的研究,我不知道该怎么做。

最佳答案

您可以使用 UUCP 包中的命令 cu,而不是 screen。 要安装 UUCP 软件包 sudo apt-get install uucpsudo yum install uucp

然后使用这个命令: 静态字符串命令 = "cu -l "+ port + "-s "+ baudRate;

一些解释:

关于java - 使用 shell 和 Java 读写串口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20767490/

相关文章:

java - intellij 场景生成器错误未打开 fxml 文件已解决

java - 树莓派更新java路径

java - 动态更新 JavaFX BarChart

java - G1启动并发标记周期时年轻GC时间较长

linux - 执行单个命令时 Bash 'swallowing' 子 shell 子进程

bash - 从文件中每隔一行删除前 15 个字符

CUDA - 在远程计算机上运行 NVVP,在没有启用 CUDA 的设备的本地计算机上显示结果

linux - 在gedit中打开当前目录所有子目录下名为generator.yml的所有文件

scala - 如何在终端中运行 Scala 程序?

linux - Bash,用 tr 改变整个单词