我有一个环形缓冲区,我想在其中放置通过串行端口接收的一些字节。现在这些收到的字节由一个命令后跟数据字节组成。而且这些命令和数据组合中的每一个都可以具有不同的长度。我想实现一种方法,我可以从这个缓冲区复制一个命令并执行它。然后下一个命令等。什么是最好的(也是最简单的)做法呢?实现命令队列
Q
实现命令队列
1
A
回答
0
简单的字节流将做。实际上,您甚至可以使用一个包装器,将std::stringstream
作为第一步,将字节流用作存储器:填充与串口通信并通过指令解码器读取的例程。
0
当你谈论环形缓冲区时,它可以像char [ring_size_in_bytes]和当前位置指示符int那样简单。从端口读取应该是逐字节的,当你到达缓冲区的末尾时,你从零开始。
我通常使用简单的缓冲区命令和从端口读取数据。在将数据从端口复制到小缓冲区后,我立即解释数据,试图找到命令的开始,然后开始放入缓冲区,直到检测到新的开始。然后我排队命令并重新开始。这构成了serice例程的上半部分(快速)。
串行端口非常慢,因此不会有足够快的速度读取数据的风险。每次迭代(中断)会给你几个字节...
我会使用封装你的命令的类型的队列来存储接收到的命令列表。
串口协议有多复杂?
相关问题
- 1. djutils队列命令没有被发现
- 2. 队列实现
- 3. PHP队列实现
- 4. 队列实现C++
- 5. C#队列实现#
- 6. jms队列实现
- 7. Laravel命令队列异常
- 8. Redis命令队列大小
- 9. JMS使用Scala实现队列实现
- 10. 队列实现不正确出队
- 11. java中的队列实现
- 12. 使用PHP实现队列
- 13. 持久队列实现
- 14. FIFO队列链表实现
- 15. PHP优先队列实现
- 16. 优先队列实现
- 17. 通知队列的实现
- 18. Brodal优先队列实现
- 19. 队列实现基准
- 20. 使用堆队列实现
- 21. Java FIFO队列实现
- 22. 在c中实现队列#
- 23. 实现命令模式
- 24. 在MMVM中实现命令
- 25. Websphere 7 SIB队列:如何访问队列深度wsadmin命令?
- 26. 是一个类似于命令队列的消息队列吗?
- 27. 如何优先使用循环队列在C++中实现队列实现?
- 28. 排队的命令
- 29. 执行队列和异步命令
- 30. 无效命令名“队列/ LTEQueue”
你的问题是什么,你需要展示你做了什么。 –
*什么是最好的(最简单的)做法?* - “最好”和“最简单”都是主观的。 – PaulMcKenzie
使用TLV结构封装您的命令。 https://stackoverflow.com/questions/tagged/tlv – Amadeus