这个问题是关于一个8输出通道红外发射机的固件。它是一个带有8个红外发光二极管的微控制器.目标是具有能够使用一个或多个信道发送数据流的发射机。数据通过UART传送到板上,然后通过一个或多个信道传送。
我的发射机电路比UART快,所以不需要流量控制。
目前,我在固件中固定了通道,所以来自UART的每个字节都是直接传输的。这意味着无法通过UART设置所需的通道,这正是我想要的。
当然,最简单的解决方案是在数据字节中附加一个控制字节,其中每个位代表一个通道。这样做的好处是每个字节可以被路由到一个或多个通道,但当然会大大增加开销。
由于传输的流类型,我试图避免在我的发射机长度场。
我的研究工作是在网络栈之上的。
我的问题是,是否有解决这一问题的方案或良好做法。我希望机器人也会出现类似的问题,传感器数据流总是交叉控制信号,但我无法找到一个简单而优雅的解决方案。
发布于 2014-12-04 16:42:59
我通常在我的项目中使用SLIP传输协议。它是非常快速,易于实现,并工作非常好的框架任何数据包你想。
SerialLineInternetProtocolSLIP.htm https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=slip%20protocol
基本上,您将要传输或接收的每个字节输入到一个函数中,该函数使用0xC0作为页眉和页脚。由于0xC0是您可能发送的数据包中的一个有效字节,所以对0xC0的数据字节进行了一些转换,以确保0xC0只成为页眉和页脚。
然后,使用相反的算法,您可以对传入的数据进行帧化,并按正确的顺序查找两次0xC0。这意味着可以缓冲并标记为主cpu处理的完整数据包。
这张纸条将保证正确的包装。
然后由您来定义您自己存在的数据包格式,因为SLIP数据包中的数据字段已经正确地定义了该数据包。
我经常做以下事情..。
<0xC0> ...<0xC0>
对不同的频道使用不同的操作码。如果愿意,您可以轻松地添加另一个带有认可的层。
https://stackoverflow.com/questions/27138138
复制相似问题