当前位置: 首页 > 知识库问答 >
问题:

使用shell和Java读取和写入串行端口

权胜泫
2023-03-14

我正在尝试使用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命令来访问串行端口,然后读取命令的输出。

然而,当我运行这段代码时,我总是收到一条消息,说“必须连接到终端。”我还尝试更改线路波特率 至波特率 ,但我没有得到任何输出。我咨询了几个类似的问题,从Java执行screen命令,以及如何在Linux中打开命令终端?但我仍然不知道该怎么解决这个问题。我觉得这一定很简单,但经过几个小时的研究,我不知道该怎么办。

共有2个答案

谯皓君
2023-03-14
匿名用户

您的描述表明,您只需要访问串行端口上接收的流。您表示希望使用shell命令访问端口。为什么不使用猫 将从端口接收的内容发送到标准输出。

如果这行得通,那么为什么不可能直接打开串行端口并从中读取?

使用屏幕似乎会引入此窗口管理器提供的所有全屏处理,这些处理不太可能正确处理。例如,屏幕格式化输出的终端类型是什么?

慕承恩
2023-03-14

您可以使用来自UUCP包的命令cu而不是屏幕。要安装UUCP包sudo apt-get install uucpsudo yum install uucp

然后使用此命令:static String command=“cu-l”port“-s”波特率

一些解释:

  • 屏幕-d分离会话(它在后台运行),这就是您看不到任何数据的原因。
  • 屏幕需要终端,这在java中并不容易。请参阅如何在Linux中打开命令终端?

 类似资料:
  • 我正在尝试将数据写入我的Arduino Uno,并从中接收日期。 我在Windows 8.1上使用NetBeans,为了做到这一点,库“RXTXcomm.jar”。 我的代码是这样的,我的Arduino在COM3上,它在第25行和第80行抛出一个错误: 错误 java.lang.UnsatisfiedLinkError:java.library中没有rxtxSerial。加载gnu.io时抛出的路

  • 问题内容: 如何使用框架有效地从大文件读取并将大数据写入文件。 我工作,并和曾尝试类似如下: 谁能告诉我,如果我的文件大小超过2 GB,我应该遵循相同的步骤吗? 如果大量的书面操作,我想在写作时做类似的事情,该怎么办? 问题答案: 请注意,您可以像示例代码那样简单地用于复制文件,只是速度更快,而且仅一行代码。 否则,如果您已经打开了两个文件通道,则可以使用 将该通道的全部内容传输到该通道。请注意,

  • 问题内容: 我对读取和写入串行端口有些困惑。我在Linux中有一个使用FTDI USB串行设备转换器驱动程序的USB设备。当我插入它时,它将创建:/ dev / ttyUSB1。 我认为用C打开和读取它很简单。我知道波特率和奇偶校验信息,但是似乎没有标准吗? 我是否缺少某些东西,或者有人可以指出正确的方向? 问题答案: 您必须调用一个从获得。你不能零了,配置它,然后将用。如果使用归零方法,则会遇到

  • 问题内容: 我试图逐行读取文件,然后使用Node.js将其输出到另一个文件。 我的问题是由于Node.js的异步特性,行的顺序有时会混乱。 例如,我的输入文件就像:第1行第2行第3行 但是输出文件可能像:第1行第3行第2行 下面是我的代码。 任何想法将不胜感激,谢谢。 问题答案: 如果要编写同步代码,请仅使用同步功能: 对于异步方法,您可以编写类似

  • 我正在写一个程序,它需要从excel文件中读取和写入数据,而不考虑格式(xls或xlsx)。 我知道ApachePOI,但它似乎有不同的类来处理xls文件(HSSF)和xlsx(XSSF)文件。 任何人都知道我将如何实现我在这里的目标。(也欢迎使用POI以外的API的想法)。

  • 问题内容: 我在Ubuntu上使用LibSerial在串行端口上读写数据。 目前,我可以通过串行端口写入和接收字符串,但是我的代码不能很好地工作:特别是, 我想控制读取功能,以便仅在有需要读取的内容时才能读取当没有信息可读取时退出,以发送另一个命令 而不会阻塞流程。 我想要做: 编写命令 等待答案 然后写另一个命令 等待答案 现在,我可以在while循环中使用读取功能发送第一个命令并读取答案,但是