gpt4 book ai didi

c - 串行端口 read() 一次仅获取较少的字节

转载 作者:行者123 更新时间:2023-11-30 15:53:13 26 4
gpt4 key购买 nike

操作系统:Ubuntu

串行端口使用:USB->串行适配器(多产的PL2303)

我有一个示例串行端口读写程序。在运行应用程序时,我尝试发送 4100 字节,编写能够单次执行此操作的程序。

n = write (s_port,msg,4100);

这里我检查“n”值,它是 4100

我*强文本*n接收端

n = read(s_port,msg,5000);

上面的行处于循环中,我在一次读取尝试中获取的数据不超过 32 个字节。因此超过 128 次读取尝试(32+32+32 等...)才能获取完整字节(4100)

在发送端如果能够一次推送整个字节,为什么不能一次接收?

最佳答案

串行通信传输各个字节需要时间,具体取决于波特率。 CPU 在处理收到的字节时速度要快得多。

通过写入,串行通信设备接口(interface)能够缓冲要发送的字节。然而,读取必须获取从其他设备接收到的字节,因此存在时间延迟。

这是一个wikipedia article on the RS-232 Serial Communications standard .

将串行端口与此进行比较 wikipedia article on the Parallel port .

并行端口每一位只有一根线,因此所有位都会同时传输,而串行端口一次一个串行地传输位。并行端口用于更高速的传输,例如在串行端口速度相当低的时候用于打印机。多年来,串行端口速度已显着提高,但仍无法接近 USB 速度。

关于c - 串行端口 read() 一次仅获取较少的字节,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13820667/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com