实现命令队列
Implement a Queue of commands
我有一个环形缓冲区,我想在其中放置一些通过串行端口接收的字节。现在,这些接收的字节由命令后跟数据字节组成。这些命令和数据组合中的每一个都可以有不同的长度。我想实现一种方法,在该方法中,我可以从此缓冲区复制一个命令并执行它。然后是下一个命令,依此类推。最好(也是最简单的(方法是什么?
简单的字节流就可以了。 实际上,您甚至可以在字节流中使用std::stringstream
包装器作为存储作为第一步:用与串行端口通信的例程填充它,并使用指令解码器从中读取。
当您谈论环形缓冲区时,它可以像 char[ring_size_in_bytes] 和当前位置指示器 int 一样简单。 从端口读取应逐字节读取,当您到达缓冲区末尾时,从零开始。
我通常使用简单的缓冲区来命令和从端口读取数据。将数据从端口复制到小缓冲区后,我动态解释数据,试图找到命令的开头,然后开始放入缓冲区,直到检测到新的开始。然后我排队命令并重新开始。这构成了塞里斯常规的上半部分(快速(。
串行端口非常慢,因此不存在您不能足够快地从中读取数据的风险。每次迭代(中断(都会给你几个字节...
我会使用封装您的命令的类型队列来存储收到的命令列表。
您的串行协议有多复杂?
相关文章:
- boost::进程间消息队列引发错误
- 从命令行c++发送文本文件名
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 如果我只是不访问queue_front节点的子节点,而是将它们推到队列中呢?还是BFS吗
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- Android NDK传感器向事件队列报告奇怪的间隔
- C++优先级队列,按对象的唯一指针的特定方法升序排列
- 按对象的特定方法按升序排列的C++优先级队列
- 使用2个键的cpp-stl::优先级队列排序不正确
- 使用QProcess执行命令,并将结果存储在QStringList中
- 数组长度,为什么从命令行获取时不能使用它?
- 如果用户输入无效,如何使用字符串变量-C++重复输入命令
- clang整洁10忽略了我的NOLINT命令
- 实现命令队列
- 使用来自多个主机线程的不同 OpenCL 命令队列
- 轮询命令以在 boost asio 中的共享队列中发送
- 命令模式队列按时间排序
- c++如何设计命令队列
- opencl命令队列是如何工作的,我可以对它提出什么要求