在while循环中从串口接收信息

时间:2016-11-05 22:53:13

标签: c++ serial-port

我正在使用以下代码从串口读取信息:

struct termios tio;
memset(&tio, 0, sizeof(tio));

// Open serial port in mode `8N1', non-blocking
tio.c_cflag = CS8 | CREAD | CLOCAL;
tio.c_cc[VMIN] = 1;
tio.c_cc[VTIME] = 10;

int fd = open("/dev/ttyACM1", O_RDONLY);

cfsetospeed(&tio, B9600);
cfsetispeed(&tio, B9600);
tcsetattr(fd, TCSANOW, &tio);
unsigned char byte = '0';

// check for input from arduino
while (!quit)
{
    keyboardInput(quit);
    read(fd, &byte, 1);

    if ((byte == '1' || quit)
    {
        oldByteDoor = '1';
        break;
    }
}

当按下窗口的关闭按钮时,keyboardInput(quit)将quit设置为true。

如果串口中没有任何内容,它将永远停留在read(fd, &byte, 1)

我该如何防止这种情况?

由于

0 个答案:

没有答案