gpt4 book ai didi

c++ - 如何理解 uart 端口收到了整个消息?

转载 作者:太空宇宙 更新时间:2023-11-04 09:52:11 26 4
gpt4 key购买 nike

我有两个 Controller ,一个带有 uclinux,第二个没有任何操作系统。它们通过串行端口连接。我使用 select 函数检查收到的新消息。消息长度可能不同,没有操作系统的 Controller 按字节发送消息。因此,有可能一个 Controller 没有发送完整的消息,并且 select 函数返回新消息可用。之后我会收到不正确的消息。我该如何避免这种情况?

最佳答案

select 函数只会告诉您可以读取至少 一个字节而不会阻塞。在串行端口上发送的消息需要有一个包含消息总长度的预定义 header ,或者一个特殊的消息结束标记。

select 说您可以读取时,您会读取尽可能多的字节并将它们放入缓冲区。如果消息不完整,您可以使用 select 返回等待更多数据。当更多数据到达时,您继续追加到缓冲区。收到完整的消息后,您将对其进行处理。

关于c++ - 如何理解 uart 端口收到了整个消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9696871/

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