Joe*_*Joe 4 c linux buffer ioctl serial-port
您可以使用 ioctl 确定在 linux 下可以从串行端口读取多少数据。写入时是否可以确定串行端口剩余的缓冲区空间有多少?实际上,我想将一个数据块写入串行端口,仅当它可以一次性全部卸载时才成功,或者如果必须分块则失败。对端口的写入和读取是非阻塞的。我不希望这是 UARTs 缓冲区,而是 UARTs 缓冲区之前的内核内存缓冲区(我猜)。
小智 5
您可以确定写入/输出的量。
供阅读:
ioctl(device_handler, TIOCINQ, &bytes);
Run Code Online (Sandbox Code Playgroud)
对于写:
ioctl(device_handler, TIOCOUTQ, &bytes);
Run Code Online (Sandbox Code Playgroud)
FIFO 缓冲区的大小:
serial_struct serinfo;
memset(&serinfo, 0, sizeof(serinfo));
ioctl(device_handler, TIOCGSERIAL, &serinfo);
serinfo.xmit_fifo_size;
Run Code Online (Sandbox Code Playgroud)
问候,弗吉尼亚州。
串口是字符设备而不是块设备。它没有缓冲区。字符设备(例如串行端口、键盘、鼠标)只能写入和读取字符而不是单词。例如,如果你听某人写的连续剧“祝你有美好的一天”,如果你从他开始打字时就不听,你将看不到整个短语。当你听的时候你只会看到输入的字符