打开linux串口没有刷新缓冲的字节

时间:2015-04-30 18:24:58

标签: linux serial-port

我有一个应用程序,外部设备总是通过串口/ 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);
    }
}
  1. 有没有办法阻止open()刷新接收缓冲区?
  2. 什么机制可以最早初始化/ dev / ttyO1并拥有它 缓冲区收到的字节?
  3. 要明确我希望 / dev / tty 在linux启动时缓冲传入的字节。

0 个答案:

没有答案