如何理解收到的uart端口的完整消息

How to understand that whole message was received for uart port?

本文关键字:消息 uart 何理解      更新时间:2023-10-16

我有两个控制器,一个有uclinux,第二个没有任何操作系统。它们通过串行端口连接。我用select功能检查收到的新消息。消息长度可能不同,并且没有操作系统的控制器按字节发送消息。因此,存在一个控制器不发送整个消息并且select函数返回新消息可用的可能性。之后我会收到错误的信息。我该如何防止这种情况发生?

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

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