一尘不染

串行终端上的二进制数据

linux

与嵌入式设备通信的唯一方法是串行端口。默认情况下,嵌入式Linux使用此端口作为终端。如何禁用此终端并使用串行链接传输二进制数据?我听说过类似rx和tx的命令,但我找不到它们。

我想我可以从/ dev / tty中读取和写入内容,但我想确保没有错误消息或数据流混乱。


阅读 281

收藏
2020-06-07

共1个答案

一尘不染

您可以使用xmodem之类的应用程序通过任何终端传输文件。是您在终端上说的串行端口,还是内核控制台。

如果您的内核不嘈杂,则可以使用当前连接来进行xmodem之类的传输。在主机方面,您可以使用kermit,它很不错且可编写脚本。

如果要使串行端口为原始端口,并且已打开文件描述符ttyfd,则这是一种实现方法:

struct termios tty, orig_tty;

...

if(tcgetattr(ttyfd, &tty) < 0)
{
    // error checking
}
// backup tty, make it raw and apply changes
orig_tty = tty;
cfmakeraw(&tty);
if(tcsetattr(ttyfd, TCSAFLUSH, &tty) < 0)
{
    // error checking
}

...
//end of program or error path :
tcsetattr(ttyfd, TCSAFLUSH, &orig_tty)

如果您仍然想要运行良好的终端,请不要忘记在程序末尾恢复设置。

2020-06-07