我在使用串口的Ubuntu下編寫控制檯應用程序。它需要以60 Hz的頻率讀取和寫入串行端口。POSIX串行端口上的read()可能會很慢的原因是什麼?
我發現read()的調用通常很慢,但並不總是很慢。我已經設置了O_NDELAY,所以經常返回(很好)。有時需要花費50毫秒才能完成,而且對於我的應用程序來說太慢了。在調用read()之前,我檢查可用的字符數,所以它不應該等待數據。
什麼是read()這樣做需要這麼長時間?我如何加快速度?在端口上
選項包括:
options.c_cflag |= (CLOCAL | CREAD);
options.c_cflag &= ~PARENB;
options.c_cflag &= ~CSTOPB;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
options.c_iflag &= ~IXON;
options.c_oflag = 0;
編輯:我一直在使用select()前面,但它竟然是正交的問題。用我的最新信息更新。
什麼是串口的波特率?也許內核需要讀取至少一個完整的字節...... – 2012-01-27 18:29:44
它可能只是您的特定硬件要求(例如,硬件規格這樣說)或在OS上施加(例如,不良USB設備)以獲得其狀態。 – 2012-01-27 18:38:22
@Basile:115200 – amo 2012-01-27 18:42:26