如何在 Raspbian Linux 中从命令行向串行端口发送 BREAK?

如何在 Raspbian Linux 中从命令行向串行端口发送 BREAK?

我正在寻找一种方法,从 Raspberry PI 上默认的 Debian Linux 中的 shell 脚本发送串行 BREAK,而无需下载或编译任何其他软件。

不幸的是,该发行版似乎没有 SETSERIAL 或 MINITERM,这两者都可以使这变得简单。

请注意,这对于 C 程序来说很简单,也可以通过 Python 程序来执行 - 但我真的在寻找一种仅使用 shell 来执行此操作的方法,既出于美观的原因,也因为我自己无法弄清楚...:)

—乔希

答案1

我相信当前的 Raspbian 仍未附带screen任何内容。如果附带,您可以运行screen /dev/ttyWhatever并点击Ctrl-a b参考

中断特定于串行接口,并且没有控制/转义字符表示,因此通用的echocat朋友没有发送中断的机制。因此,您能做的最好的事情就是用您最喜欢的编程语言调用串行库。我相信 Raspbian 附带 Python,可能还有 Perl,也许还有 gcc,所以这三个中的任何一个都可以解决问题:

Python

python -c 'import termios; termios.tcsendbreak(3, 0)' 3>/dev/yourdevicename

Perl

perl -e 'use POSIX; tcsendbreak(3, 0)' 3>/dev/yourdevicename

C

#include <termios.h>
#include <fcntl.h>

int main() { tcsendbreak(open("/dev/yourdevicename", O_RDWR), 0); }

最后,如果你真的想要使用内置功能,请将串行设备的波特率设置为远低于标准,然后发送 NULL。例如:

stty -F /dev/yourdevicename 9600
echo -ne '\0' > /dev/yourdevicename

答案2

由于我的代表原因,我无法对您的帖子发表评论,但如果您需要使用调制解调器发送中断,则以下方法可行。如果您只是尝试通过 RS-232 发送中断,则不会成功。

如果您可以向 发送 AT 命令/dev/ttyS*,那么发送AT\Bn应该可以解决问题。n可以是 0 到 9 之间的数字,每个值代表 100 毫秒。

因此,发送AT\B4时应间隔 500 毫秒。

我还没有测试过这个 - 谁还在使用调制解调器?(实际上,百思买仍然销售 56.7k 调制解调器...)

相关内容