USB响应超时(Linux Odroid)

时间:2019-07-02 16:31:52

标签: c++ linux usb termios odroid

我在C ++中有一些代码可以连接到与odroid UX4连接的外部设备。我创建了 termios 结构,在该结构中,我将连接配置为在0.2秒后超时,但设备未回答

  memset (&tty, 0, sizeof tty);

/* Error Handling */
if ( tcgetattr (fd, &tty ) != 0 )
{
    std::cout << "Error " << errno << " from tcgetattr: " << strerror(errno) << std::endl;
}

/* Save old tty parameters */
tty_old = tty;

/* Set Baud Rate */
cfsetospeed (&tty, (speed_t)B921600);
cfsetispeed (&tty, (speed_t)B921600);

/* Setting other Port Stuff */
tty.c_cflag     &=  ~PARENB;            // Make 8n1
tty.c_cflag     &=  ~CSTOPB;
tty.c_cflag     &=  ~CSIZE;
tty.c_cflag     |=  CS8;

tty.c_iflag &= ~(BRKINT | ICRNL | IMAXBEL | IXON | IXOFF);
tty.c_oflag &= ~(OPOST | ONLCR);
tty.c_lflag &= ~(ISIG | ICANON | IEXTEN | ECHO | ECHOE | ECHOK | ECHOCTL | ECHOKE);
tty.c_cflag     &=  ~CRTSCTS;           // no flow control
tty.c_cc[VMIN]   =  0;                  // read doesn't block
tty.c_cc[VTIME]  =  0.2;                  // 0.2 seconds read timeout
tty.c_cflag     |=  CREAD | CLOCAL;

/* Make raw */
cfmakeraw(&tty);

/* Flush Port, then applies attributes */
tcflush( fd, TCIFLUSH );
if ( tcsetattr ( fd, TCSANOW, &tty ) != 0)
{
    cout << "Error " << errno << " from tcsetattr" << endl;
}

但是当我从设备读取数据时,超时不受尊重

n = read(fd, &buf, 1);

我的问题是:linux在usb驱动程序上是否有一些内部超时之类的东西(这样它可以覆盖我的),还是有人有类似的问题?

0 个答案:

没有答案