写各个项目的几个不同的自定义串行协议之后,我开始变得沮丧重新发明每一次车轮。 代替继续开发定制的解决方案,为每一个项目,我一直在寻找一个更通用的解决方案。 我不知道是否有人串行协议的知道(或更好,但实现)符合下列要求:
- 支持多个设备。 我们希望能够支持一个RS485总线。
- 保证交货。 某种确认机制,以及一些简单的错误检测(CRC16可能是罚款)。
- 不主/从。 理想情况下,从(S)将能够异步发送数据。 这是大多只是为了美观的原因,每个从感觉不对我投票的概念。
- OS独立。 理想的情况下它不会在所有依赖于抢占式多任务环境。 我愿意承认这一点,如果我能得到其他的东西。
- ANSI C.我们需要能够编译几个不同的架构。
速度不是太大的问题的,我们愿意放弃一些速度,以满足部分其他需求。 我们希望,然而,像最大限度地减少所需的资源量。
我即将开始实施与捎带ACK和没有选择的重复滑动窗口协议,但认为也许有人能救我的麻烦。 有谁知道现有的项目,我可以利用的? 或者也许是更好的策略?
UPDATE
我已经认真考虑一个TCP / IP实现,但真的很希望更多的东西轻巧。 许多TCP / IP的特点是矫枉过正我想要做的事。 我愿意接受(吝啬),也许我只想要的功能不包括在打火机协议。
更新2
感谢您对CAN提示。 我在过去看了一下,可能会使用它的未来。 我真的想库来处理确认,缓冲,重试次数等,虽然。 我想我更想找一个网络/传输层而不是数据链路/物理层。
更新3
所以,它听起来就像艺术在这方面的状态是:
- 一个下调的TCP / IP协议栈。 也许开始喜欢的东西了lwIP或uIP的 。
- 基于CAN实现,它很可能会在很大程度上依赖CAN总线上的,所以它不会对其他的物理层有用。 喜欢的东西CAN节可以沿途帮助。
- 一个HDLC或SDLC实现(像这个 )。 这可能是我们走的路线。
请随时免费的,如果你遇到了这个问题发表更多的答案。