为什么换行符 (\n) 的行为与在 Raspbian CLI 上按回车键不同
why is newline(\n) behaving differently then pressing enter on Raspbian CLI
我制作了一个应用程序,它基本上读取数据并使用 system.out.print 在 raspbian 命令行界面 (CLI) 上打印出来。使用上述方法在 CLI 上打印文本适用于打印文本。
打印文本后,我希望它的行为也像按下回车按钮(提交数据)。假设 CLI 提示您输入一个值,应用程序打印数据,然后我希望应用程序的行为就像用户按下回车键一样。
该应用程序是一个守护进程,可在 CLI 中打印来自外部设备的数据。它可以并且确实在任何时候打印此数据,这是有意的。不需要将数据发送到特定应用程序或一组应用程序,因为命令提示的应用程序可能每隔 x 时间交换一次。使用换行命令时,光标会转到下一行,但它的行为与用户按下键盘的回车键不同。
我尝试使用 \n 将光标移动到下一行,但它没有提交数据。最后我想让数据自动输入,而不需要用户手动按下回车键。
在那之后我尝试了 awt.robot class 但这不起作用,因为它抛出了一个无头异常,在谷歌搜索了一下之后我相信它与 GUI 或功能有关,但不会在 Raspbian.
上安装和使用
我还发现有人提到 JNA 和 JNI 库,但我找不到任何示例(至少不是 linux 设备)来模拟用户的输入键。
这是一个更具体的例子。 CLI 提示:
Weight:
守护进程打印 0.233。所以 CLI 看起来像:
Weight: 0.233
那么应用程序的行为必须如同用户按下回车键一样。使用换行符只会移动光标,不会像用户按下回车键那样工作:
Weight: 0.233
_ (representing cursor).
Smallest/simplest 可重现示例:
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);
}
}
我使用的是 java 8,Raspbian 版本是 8,树莓派版本是 3。
希望任何人都知道该做什么或我缺少什么。欢迎任何帮助。
经过多次试验后,我发现这正是如今 TTY 解释 /n 的方式。我有一个较旧的 Linux 安装,它模拟 /n 作为键盘按下,但在 raspbian 版本中不会发生这种情况。
所以基本上我必须像键盘一样直接写入正确的 IO 通道。您无法模拟键盘输入直接按到终端。只能通过直接写入正确的 IO 通道或使用键盘模拟器。
我制作了一个应用程序,它基本上读取数据并使用 system.out.print 在 raspbian 命令行界面 (CLI) 上打印出来。使用上述方法在 CLI 上打印文本适用于打印文本。
打印文本后,我希望它的行为也像按下回车按钮(提交数据)。假设 CLI 提示您输入一个值,应用程序打印数据,然后我希望应用程序的行为就像用户按下回车键一样。
该应用程序是一个守护进程,可在 CLI 中打印来自外部设备的数据。它可以并且确实在任何时候打印此数据,这是有意的。不需要将数据发送到特定应用程序或一组应用程序,因为命令提示的应用程序可能每隔 x 时间交换一次。使用换行命令时,光标会转到下一行,但它的行为与用户按下键盘的回车键不同。
我尝试使用 \n 将光标移动到下一行,但它没有提交数据。最后我想让数据自动输入,而不需要用户手动按下回车键。
在那之后我尝试了 awt.robot class 但这不起作用,因为它抛出了一个无头异常,在谷歌搜索了一下之后我相信它与 GUI 或功能有关,但不会在 Raspbian.
上安装和使用我还发现有人提到 JNA 和 JNI 库,但我找不到任何示例(至少不是 linux 设备)来模拟用户的输入键。
这是一个更具体的例子。 CLI 提示:
Weight:
守护进程打印 0.233。所以 CLI 看起来像:
Weight: 0.233
那么应用程序的行为必须如同用户按下回车键一样。使用换行符只会移动光标,不会像用户按下回车键那样工作:
Weight: 0.233
_ (representing cursor).
Smallest/simplest 可重现示例:
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);
}
}
我使用的是 java 8,Raspbian 版本是 8,树莓派版本是 3。
希望任何人都知道该做什么或我缺少什么。欢迎任何帮助。
经过多次试验后,我发现这正是如今 TTY 解释 /n 的方式。我有一个较旧的 Linux 安装,它模拟 /n 作为键盘按下,但在 raspbian 版本中不会发生这种情况。
所以基本上我必须像键盘一样直接写入正确的 IO 通道。您无法模拟键盘输入直接按到终端。只能通过直接写入正确的 IO 通道或使用键盘模拟器。