2012-09-26 67 views
-1

我从USART接收字节并将它们放入存储器寄存器。字节是我必须相应阅读和回复消息的命令。由于我知道如何比较单个字节,因此会建议我比较多个字节的算法。比较多个字节

例如,接收到的字节在十六进制数16 04 32 01 00 32中看起来像这样。它们长度不同,所以比较会更困难。

+1

比较一个循环?此外,[你有什么尝试?](http://mattgemmell.com/2008/12/08/what-have-you-tried/) –

+0

我不知道采取什么方法。我有几个命令,我必须与之比较。我是否必须为每个命令创建循环,或者是否有更简单的表查找方式?我需要一些这样的示例代码。我试图从命令中总结字节,但这是行不通的,因为我发现了两个不同的命令,其数量相同 – georgiar

+1

我猜测收到的消息的_all_不是很重要,但是一个或两个字节是一个消息代码,其余的是数据。这将简化事情,因为您只需比较单个(或两个)字节,然后跳转到子例程来处理实际的消息数据。 –

回答

1

您只需要比较足够的字节以清楚地识别它是什么类型的消息(在第一步中您不需要关心的实际数据负载)。对于大多数串行协议来说,它只是指定位置的单个字节。

通过查看您的示例消息,我猜测第一个字节是消息类型,第二个数据有效载荷的长度。如果是这种情况,那么你不需要检查多于第一个字节并相应跳转。这主要是通过一个带有消息类型索引的跳转表(即第一个字节)完成的。

处理实际消息数据有效载荷的函数可以做任何它想要处理的数据,但是你不需要检查完整的消息只是为了找出如何处理消息。