Мой вопрос касается <termios.h>
. Насколько я понимаю, существуют два буфера для чтения чего-либо через UART - аппаратный буфер, в котором хранятся полученные байты, и программный буфер, куда мы загружаем то, что было сохранено в аппаратном буфере. Этот программный буфер - второй аргумент в read(uart_channel, BUFFER, length)
, насколько я понимаю.
Объясните, пожалуйста: какой длины аппаратный буфер? Могу ли я контролировать его продолжительность? Для меня критически важно прочитать 12 самых последних байтов, отправленных устройством через UART - как я могу в этом убедиться?
read()
, является буфером вашего приложения, куда будут записаны любые доступные последовательные данные. Это уровень приложения, поэтому, конечно, он не является частью буферизации драйвера. Фактическая аппаратная буферизация (FIFO), конечно, будет зависеть от оборудования, и вы не говорите, что используете. Также есть буфер в ядре, мне не удалось выяснить его размер (и можно ли его изменить). - person unwind   schedule 26.05.2015