SocketCANを使用して「ワンショット」CANメッセージを送信できますか?これは、基本的に、受信者からの確認応答を期待していないメッセージです。プロトコルは、このACKビットが設定されないようにします。SocketCANを使用してワンショットメッセージを送信
1
A
答えて
0
私はあなたが「ワンショット」によって何を意味するかわからないんだけど、私は、単一のCANを送るには、このように、can-utilsからcansend
ユーティリティを使用して、すべての時間枠:
$ cansend can0 135#02080426A10D112A
私も書きましたCプログラムはAF_CAN
ソケットを使用して同じ動作をします。 (基本的にはどのように把握するcansend.c
からCRIBことができます。)
のメッセージの再送信に関しては、これはcansend
では発生しません:
$ timeout 20s tcpdump -i can0 -w out.pcap &
[1] 16509
tcpdump: listening on can0, link-type CAN_SOCKETCAN (CAN-bus with SocketCAN headers), capture size 262144 bytes
$ cansend can0 135#02080426A10D112A
$ 1 packet captured
0 packets received by filter
0 packets dropped by kernel
[1] + 16509 exit 124 timeout 20s tcpdump -i can0 -w out.pcap
上記のシーケンスで
、何の消費者がオンラインに存在しないので、誰もメッセージをACKするが、私はのままで、は、can0
で1つのパケットしかキャプチャしない。 cansend
が終了した後、SocketCANスタックがバックグラウンドでメッセージを自動的に再送信しようとしていないと結論付けるのは安全です。
0
CANフレームは、バスエラーが検出されるまで(バスオフ)、何度も再送信されます。これはCANペリフェラルによって行われます(specの一部であり、 "再送信"を検索します)、SocketCanはそれについて何も知らない。
SocketCanでは、バス/コントローラ上で別のerror notificationsを購読することができます。一般に、CANペリフェラル/ドライバは、これらのエラーのサブセットのみのシグナリングを実装します。あなたが運が良ければ、通知のためにsubscribe (see 4.1.2)に対応し、それに応じて対応することができます。
関連する問題
- 1. ajaxを使用してファイルを送信し、Javaを使用して受信
- 2. phonegapを使用してメールを送信
- 3. カールを使用してデータを送信
- 4. AJAXを使用してフォームを送信
- 5. swiftmailerを使用してバルクメールを送信
- 6. Casperjsを使用してフォームを送信
- 7. phpmailerを使用してメールを送信
- 8. HTTPURLConnectionを使用してフォームを送信
- 9. EWSを使用してメールを送信
- 10. ページネーションを使用してフォームを送信
- 11. PHPを使用してメールを送信
- 12. リクエストパイロットを使用してペイロードを送信
- 13. ユーザーインターフェイスを使用してスパークジョブを送信
- 14. SmtpClientを使用して返信としてメールを送信
- 15. レスポンスレスキューレスキューアクシオレスポンスを使用して送信
- 16. JavaScriptを使用して手動でフォームを送信しても、送信ボタンは送信されません。
- 17. 送信ボタンを使用せずにリンクをクリックしてフォームを送信する
- 18. メールを送信するMIME :: Liteを使用してPerlを送信
- 19. Javaスクリプト送信ボタンを使用してファイルを持つフォームを送信する
- 20. 1つの信号を使用してカスタムペイロードを送信する
- 21. 発信ボイスコールを使用してワンタイムパスワード(otp)を送信する
- 22. 通信APIを使用してJavaアプリケーションからSMSを送信
- 23. javaの通信APIを使用してシリアルポートにデータを送信
- 24. mpi4pyを使用して複数の送信コマンドを受信
- 25. C#を使用してUSBに信号を送信する
- 26. Postmanを使用してPUTの再送信でファイルを送信するには
- 27. 単一送信ボタンを使用して複数のドロップダウン値を送信
- 28. javaメール送信者を使用してemalでリンクを送信する方法
- 29. 送信者の名前でoracleを使用して電子メールを送信
- 30. Mailを使用してメールを送信できません:perlの送信者
メッセージを読み取ってACKを返す受信者がいない場合、送信者は再試行を続けます。私はちょうどメッセージを送ろうと思っています。それを読む人がいなければ、それは失われますが、送付者は移動します。 – ilya1725
私は 'cansend'がメッセージを再送しようとしないことに注意して答えを更新しました。私はCANでかなり仕事をしましたが、私は決して専門家ではないので、おそらく私はあなたの問題を誤解しました。あなたはあなたの目標を達成するために 'cansend'(' system() 'など)をすることはできませんか? – evadeflow