2012-09-26 68 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

您只需要比較足夠的字節以清楚地識別它是什麼類型的消息(在第一步中您不需要關心的實際數據負載)。對於大多數串行協議來說,它只是指定位置的單個字節。

通過查看您的示例消息,我猜測第一個字節是消息類型,第二個數據有效載荷的長度。如果是這種情況,那麼你不需要檢查多於第一個字節並相應跳轉。這主要是通過一個帶有消息類型索引的跳轉表(即第一個字節)完成的。

處理實際消息數據有效載荷的函數可以做任何它想要處理的數據,但是你不需要檢查完整的消息只是爲了找出如何處理消息。