我有一个应用程序,外部设备总是通过串口/ dev / ttyO1,115200,N,8,1将字节(非ASCII数据)传输到我的Linux ARM Cortex板。
Linux启动后,我的用户空间C程序将打开串口并立即开始读取数据(包括任何已缓冲的数据)。
理想情况下,内核会尽早初始化串口,然后缓冲传入的字节,直到我的程序启动。
目前,当我的C程序启动时,open()似乎" flush"任何缓冲的字节。代码看起来像这样 - 有更多的错误处理:):
// no need to set UART parameters, that's been done for us earlier
//
unsigned sfd = open("/dev/ttyO1", O_RDWR | O_NOCTTY | O_NONBLOCK);
while (1)
{
uint8_t buffer[120];
int nbytes = read(sfd, buffer, sizeof(buffer));
if(nbytes > 0)
{
buffer[nbytes] = 0;
printf("[%s]", buffer);
}
}
要明确我希望 / dev / tty 在linux启动时缓冲传入的字节。