gpt4 book ai didi

c# - SerialPort 写缓冲区的用途是什么?

转载 作者:行者123 更新时间:2023-11-30 17:18:29 28 4
gpt4 key购买 nike

从 SerialPort 对象外部看,写入缓冲区的大小以及是否已满似乎没有区别。

使用同步写入,write 方法会阻塞,直到所有数据都已发送且缓冲区为空。

使用异步写入,数据排队,程序继续运行。直到写操作完成并且数据超出缓冲区时才会调用回调方法。

无论缓冲区中有多少数据以及缓冲区是否已满,串行端口对象的行为似乎都是一样的。当写缓冲区已满时似乎没有发生错误。

那么,为什么能够检查 BytesToWrite 和 WriteBufferSize?当写入缓冲区已满时,SerialPort 的行为有什么不同吗?

最佳答案

缓冲区是一种机制,旨在允许任何处理缓冲区的人在自己的时间以自己的方式进行处理。当我发送数据时,我希望它以端口的最大速率被推送,但我不想在端口上忙于等待并等待每个字节被发送,然后再推送下一个字节。所以你有一个处理缓冲区来为硬件提供数据,并且可以分块传递。

至于您为什么要检查 BytesToWrite - 您通常有兴趣知道在继续您想要做的下一件事之前是否已发送所有数据,您可能希望在给定的时间段后得到响应时间,您可能想知道实际的传输速率是多少等。

关于c# - SerialPort 写缓冲区的用途是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5723627/

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