私はuclinuxで2つのコントローラを1つ持っています.2つ目のコントローラはosなしです。それらはシリアルポートで接続されています。私はselect
機能で受信した新しいメッセージを確認します。メッセージの長さは異なる場合があり、osのないコントローラはバイト単位でメッセージを送信します。したがって、1つのコントローラがメッセージ全体を送信せず、select
関数が新しいメッセージが利用可能であると返す可能性があります。その後、私は間違ったメッセージを受け取るでしょう。 どうすればこのような状況を防ぐことができますか?uartポートのメッセージ全体をどのように受け取ったのか理解するには?
0
A
答えて
2
select
関数は、少なくとも1つのブロックをブロックすることなく1バイト読むことができることを伝えます。シリアルポートで送信されるメッセージには、メッセージの全長を含むあらかじめ定義されたヘッダーか、特別なメッセージ終了マーカーが必要です。
select
は、読み込めると言いますが、できるだけ多くのバイトを読み込んでバッファに入れます。メッセージが完了していない場合は、select
でさらにデータを待つことに戻ります。より多くのデータが到着すると、引き続きバッファに追加されます。完全なメッセージが受信されると、それを処理します。
+0
答えをありがとう。 – rdo
関連する問題
- 1. Net :: IMAP :: Simpleはメッセージ全体を受け取らないようにします
- 2. RabbitMQの配信不能メッセージをどのように受け取りますか?
- 3. どのようにsolrから格納されたフィールド全体を取得するのを避けるには
- 4. VueJS内の外部APIから受け取ったデータはどのように処理できますか?
- 5. サーバーから返されたデータの全体を受け取るようにPOE :: Filterを設定するにはどうすればよいですか?
- 6. 私はsocket.ioから受け取ったメッセージをconsole.logにしようとすると401〜UNAUTHORIZEDを取得する
- 7. どのように私は完全に理解するカスタムパターン
- 8. PHP:受け取ったリクエストの本体を取得する
- 9. 体全体をどのように埋めるのですか?
- 10. MAC/LinuxでArduinoのUART COMポートを見つけるには
- 11. 私は自分のサーバーにハッカーからのメッセージを受け取った。
- 12. 関数内のオブジェクトのようにリストを受け取った
- 13. SyntaxNet:parser_eval.pyはどのようにstdinを受け取りますか?
- 14. UARTのタイミング図の理解
- 15. Sencha Touchでは、フォームフィールドから受け取った入力をどのように計算するのですか?
- 16. DragAreaのドロップエフェクトを受け取ったDropAreaにアニメーション化するにはどうすればよいですか?
- 17. メッセージの送受信にどのようにアプローチするか
- 18. ポートからNodeJSへのデータの受け取りを処理する方法
- 19. プログラム全体をどのようにループするのですか?
- 20. UARTデータをpcieポートにリダイレクト
- 21. Apache Kafka:カフカから最新のメッセージを受け取るには?
- 22. ソリューション全体にわたってユーザーのメッセージをローカライズ
- 23. .livequery()は1つのパラメータのみを受け取った場合、どのように動作しますか?
- 24. AndroidやJavaがAlexa Serviceの「テキスト」メッセージをどのように受け取るのですか?
- 25. 他の消費者が受け取ったSQSメッセージを削除するとどうなりますか?
- 26. ソケットから受け取った文字列を解釈する
- 27. Pythonで受け取った要求値を読み取るにはどうすればよいですか?
- 28. UberドライバはFirebaseを使ってリアルタイムで(瞬時に)リクエストをどのように受け取るのですか?
- 29. はどのようにアンドロイドMQTTでメッセージを受信する
- 30. RabbitMQ - 自分のメッセージを受け取らないようにする方法
本当にマイクロコントローラでC++を使用していますか、それともCですか? –
私はdspプロセッサでC++を使用し、マイクロコントローラではcを使用します。 – rdo