串行终端上的二进制数据

Ati*_*liz 5 linux embedded binary terminal

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

我想我可以只读取()和写()东西到/ dev/tty,但我想确保没有错误消息或任何混乱我的数据流.

sho*_*nex 3

您可以使用 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)
Run Code Online (Sandbox Code Playgroud)

如果您仍然想要一个性能良好的终端,请不要忘记在程序结束时恢复设置。