c - linux 中的串行缓冲区有多长?

标签 c buffer uart tty termios

我的问题是关于 <termios.h> .据我了解,在通过 UART 读取内容时存在两个缓冲区 - 一个存储接收到的字节的硬件缓冲区,以及一个我们加载已存储在硬件缓冲区中的内容的软件缓冲区。此软件缓冲区是 read(uart_channel, BUFFER, length) 中的第二个参数据我了解。

请解释:硬件缓冲区有多长?我可以控制它的时长吗?对我而言,读取设备通过 UART 发送的 12 个最新字节 至关重要 - 如何确保这一点?

最佳答案

我曾经遇到过类似的情况,我所做的是创建一个线程来持续读取 UART(阻塞 read),并且我在线程之间使用了一个 FIFO。

如果您不能使用线程,您可能只使用select

关于c - linux 中的串行缓冲区有多长?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30463040/

相关文章:

c - 在 ARM cpu 上使用 uart

c - 微型计算机,串口。请求多个字节

microcontroller - 通过 8051 微 Controller 上的中断进行 UART 传输

c - 如何使用 "Modern Compiler Implementation in C"书中的$TIGER?

C - 将 time_t 转换为格式为 YYYY-MM-DD HH :MM:SS 的字符串

C 套接字 : forward a request to port 80 and read response

c - 用户空间缓冲区和内核缓冲区

C 缓冲区溢出测试 - 64 位上不应该出现段错误?

c - 函数替换子字符串返回错误答案

c - scanf/getchar 只有第一次通过循环才能正常工作吗?