2012-03-14 15 views
0

我有兩個控制器與uclinux,第二沒有任何操作系統。它們通過串口連接。我用select函數檢查收到的新消息。消息長度可能不同,沒有os的控制器每個字節發送消息。所以,有可能一個控制器不發送整個消息,並且select函數返回新消息可用。之後我會收到不正確的信息。 我該如何預防這種情況?如何理解uart端口收到的整個消息?

+0

你真的在微控制器上使用C++,還是C? – 2012-03-14 06:43:48

+0

我在dsp處理器上使用C++,在微控制器上使用c。 – rdo 2012-03-14 08:29:34

回答

2

select功能只會告訴你,你可以讀取至少一個字節沒有阻塞。在串行端口上發送的消息需要具有包含消息總長度的預定義標題或特殊的消息結束標記。

select說你可以讀取,你可以讀取儘可能多的字節,並將它們放入緩衝區。如果消息未完成,請回到select等待更多數據。當更多數據到達時,您繼續追加到緩衝區。收到完整的消息後,您會對其進行處理。

+0

感謝您的回答。 – rdo 2012-03-14 08:32:24