我有兩個控制器與uclinux,第二沒有任何操作系統。它們通過串口連接。我用select
函數檢查收到的新消息。消息長度可能不同,沒有os的控制器每個字節發送消息。所以,有可能一個控制器不發送整個消息,並且select
函數返回新消息可用。之後我會收到不正確的信息。 我該如何預防這種情況?如何理解uart端口收到的整個消息?
0
A
回答
2
select
功能只會告訴你,你可以讀取至少一個字節沒有阻塞。在串行端口上發送的消息需要具有包含消息總長度的預定義標題或特殊的消息結束標記。
當select
說你可以讀取,你可以讀取儘可能多的字節,並將它們放入緩衝區。如果消息未完成,請回到select
等待更多數據。當更多數據到達時,您繼續追加到緩衝區。收到完整的消息後,您會對其進行處理。
+0
感謝您的回答。 – rdo 2012-03-14 08:32:24
相關問題
- 1. 在發送端口接收OSC消息
- 2. 從一個端口發送消息到另一個端口
- 3. 解析來自串行端口的完整消息
- 4. 發送一個xml消息到端口
- 5. 我如何收到消息
- 6. 如何判斷套接字從哪個接口收到消息?
- 7. 處理Android服務中的Rabbitmq客戶端收到的消息
- 8. 在服務器端口上未收到UDP消息
- 9. MQTT客戶端未收到消息
- 10. Pyro4客戶端沒有收到消息
- 11. socket.io客戶端沒有收到消息
- 12. Android客戶端沒有收到消息
- 13. 客戶端沒有收到SignalR消息
- 14. JMS客戶端不會收到消息
- 15. 遠程窗口不會收到消息
- 16. 消息傳遞接收端
- 17. 如何讓wndproc處理消息到多個窗口
- 18. 不理解我收到的錯誤消息
- 19. 無法解析在客戶端側的整個UDP消息
- 20. 我收到解析器錯誤消息
- 21. 如何解析從GCM收到的消息?
- 22. 如何將smtp消息發送到特定的IP和端口?
- 23. 如何從ejabberd客戶端接收消息到節點-xmpp
- 24. 如何處理通過IRequestChannel.Request收到的gzip消息
- 25. 收到MSMQ消息
- 26. ejabberd XMPP消息歸檔管理:沒有收到消息
- 27. 無法從內容腳本中的main.js接收端口消息
- 28. 確定接收端口或位置的消息在BizTalk 2006年
- 29. 驗證業務流程或接收端口中的消息
- 30. TCPClient。我如何收到大消息?
你真的在微控制器上使用C++,還是C? – 2012-03-14 06:43:48
我在dsp處理器上使用C++,在微控制器上使用c。 – rdo 2012-03-14 08:29:34