kiyo
2021年1月20日 13時23分
CANで相手側より定期的(50ms)に送信されてくるデータを受信しています。
いくつか教えて下さい。
質問1
1sぐらい受信にいけない時があるのですがその際に受信データはバッファリングされているのでしょうか?
1000/50=20で溜まっているとすると20回分ぐらいの定期通信のデータが溜まっている?
質問2
もし質問1でバッファリングされているとしてバッファのサイズはどこで確認できますか?
質問3
もし質問1でバッファリングされているとして最新のデータはreadで読みだしたサイズが0byteの1つ前という考えであっていますでしょうか?
at_akihito.irie
2021年1月25日 14時27分
入江です。
> 質問1
> 1sぐらい受信にいけない時があるのですがその際に受信データはバッファリングされているのでしょうか?
> 1000/50=20で溜まっているとすると20回分ぐらいの定期通信のデータが溜まっている?
バッファリングされています。
> 質問2
> もし質問1でバッファリングされているとしてバッファのサイズはどこで確認できますか?
SocketCANであればsocket bufferにバッファリングされます。
socket bufferの受信バッファサイズは、以下のコマンドで確認できます。
出力された数値は左から、受信バッファの最小・標準・最大サイズです。
以下のコマンドで発生したオーバーランなどのエラーが確認できるので、そち
らを参考にデータの送受信テストを行ってバッファサイズを考えて頂くと良い
と存じます。
> 質問3
> もし質問1でバッファリングされているとして最新のデータはreadで読みだしたサイズが0byteの1つ前という考えであっていますでしょうか?
FIFOかLIFOかというご質問でよろしかったでしょうか?
それであればFIFOです。