为什么新行(\n)的行为与在raspbian cli上按enter键不同

tjvv9vkg  于 2021-06-27  发布在  Java
关注(0)|答案(0)|浏览(200)

我制作了一个应用程序,它基本上读取数据并使用system.out.print在raspbian命令行界面(cli)上打印出来。使用上述方法在cli上打印文本与打印文本有关。
在打印文本后,我希望它的行为也像按回车键(提交数据)。假设cli提示您输入一个值,应用程序打印数据,然后我希望应用程序的行为就像用户按enter键一样。
应用程序是一个守护进程,它在cli中打印来自外部设备的数据。它可以并且确实在任何时候打印这些数据这是有意的。不需要将数据发送到特定的应用程序或一组应用程序,因为命令提示的应用程序可以每隔x个时间交换一次数据。使用newline命令,光标移到下一行,但它的行为不像用户要按键盘的enter按钮。
我尝试使用\n将光标移到下一行,但它不提交数据。最后,我希望数据能够自动输入,而不需要用户手动按下enter按钮。
在那之后,我尝试了awt.robot类,但那不起作用,因为它抛出了一个无头异常,在google了一点之后,我相信它与一个gui或功能有关,它不会在raspbian上安装和使用。
我还发现有人提到jna和jni库,但我找不到任何示例(至少对于linux设备是这样)来模拟用户按enter键。
这里有一个更具体的例子。cli提示:

Weight:

守护进程打印0.233。因此,cli将如下所示:

Weight: 0.233

然后应用程序的行为必须与用户按enter键一样。使用换行符只会移动光标,而不会像用户按enter按钮那样:

Weight: 0.233
_ (representing cursor).

最小/最简单的可复制示例:

public static void main(String[] args) {
  while(true) {
    //this moves the cursor to the next line and doesn't enter the line in a prompt.
    System.out.println("abc");
    //have to time that it goes into a prompt. I have a startup login prompt which I can test it with.
    //or whatever suits your needs
    Thread.sleep(20000);
  }
}

我使用的是Java8,raspbian版本是8,raspberry版本是3。
希望任何人都知道该做什么或者我错过了什么。欢迎任何帮助。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题