实现命令队列

Implement a Queue of commands

本文关键字:队列 命令 实现      更新时间:2023-10-16

我有一个环形缓冲区,我想在其中放置一些通过串行端口接收的字节。现在,这些接收的字节由命令后跟数据字节组成。这些命令和数据组合中的每一个都可以有不同的长度。我想实现一种方法,在该方法中,我可以从此缓冲区复制一个命令并执行它。然后是下一个命令,依此类推。最好(也是最简单的(方法是什么?

简单的字节流就可以了。 实际上,您甚至可以在字节流中使用std::stringstream包装器作为存储作为第一步:用与串行端口通信的例程填充它,并使用指令解码器从中读取。

当您谈论环形缓冲区时,它可以像 char[ring_size_in_bytes] 和当前位置指示器 int 一样简单。 从端口读取应逐字节读取,当您到达缓冲区末尾时,从零开始。

我通常使用简单的缓冲区来命令和从端口读取数据。将数据从端口复制到小缓冲区后,我动态解释数据,试图找到命令的开头,然后开始放入缓冲区,直到检测到新的开始。然后我排队命令并重新开始。这构成了塞里斯常规的上半部分(快速(。

串行端口非常慢,因此不存在您不能足够快地从中读取数据的风险。每次迭代(中断(都会给你几个字节...

我会使用封装您的命令的类型队列来存储收到的命令列表。

您的串行协议有多复杂?