問題タブ [can-bus]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2295 参照

linux - Linux CAN バス送信タイムアウト

シナリオ

CANバスに接続されたLinux搭載デバイスがあります。デバイスは定期的に CAN メッセージを送信します。このメッセージによって運ばれるデータの性質は、コマンドではなく測定に似ています。つまり、実際には最新のものだけが有効であり、いくつかのメッセージが失われても、最新のものを正常に受信している限り問題にはなりません。

次に、問題のデバイスは、後続のメッセージ送信間の間隔よりもはるかに長い時間、CAN バスから切断されます。デバイス ロジックは引き続きメッセージを送信しようとしていますが、バスが切断されているため、CAN コントローラーはメッセージを送信できず、メッセージは TX キューに蓄積されています。

しばらくすると、CAN バス接続が復元され、蓄積されたすべてのメッセージがバス上で 1 つずつキックされます。


問題

  1. CAN バス接続が復元されると、未定義の量の古いメッセージが TX キューから送信されます。
  2. CAN バス接続がまだ利用できないが、TX キューが既にいっぱいである間、いくつかの最新のメッセージ (つまり、唯一の有効なメッセージ) の送信は破棄されます。
  3. CAN バス接続が復元されると、TX キューがフラッシュされている間、短期間のトラフィック バーストが発生します。これにより、タイム トリガー バス スケジューリングが使用されている場合に変更される可能性があります (私の場合です)。

質問

私のアプリケーションは SocketCAN ドライバーを使用しているため、基本的には SocketCAN に適用する必要がありますが、他のオプションがあればそれも考慮されます。

考えられる解決策は 2 つあります。メッセージ送信タイムアウトを定義する (事前に定義された時間内にメッセージが送信されなかった場合、メッセージは自動的に破棄されます)、または古いメッセージの送信を手動で中止します (ただし、ソケットではまったく可能ではないかと思います)。 API)。

最初のオプションが私にとって最も現実的であるように思われるので、質問は次のとおりです。

  1. Linux で CAN インターフェイスの TX タイムアウトを定義するにはどうすればよいですか?
  2. TX タイムアウト以外に、上記の問題を解決するための他のオプションはありますか?
0 投票する
1 に答える
37 参照

java - Java EE のリソース アダプタを使用して EIA232 通信を実装できますか?

質問は SO に既に存在している可能性があります。この場合、見つけられなかったことをお詫び申し上げます。現在、CAN デバイス ドライバーの .dll ファイル内のメソッド (関数) を呼び出す通信層が実装されているデスクトップ アプリケーションを書き直すことを計画しています。

ただし、アプリケーションは、JCA を使用して Java エンタープライズ アプリケーションとして書き直されます。JCA リソース アダプタで通信レイヤをラップすることは可能ですか?

更新:ビジネスロジックレイヤーから呼び出すことができるスタンドアロンのJava SEサービス内に通信レイヤーをラップする必要があるようです。幸いなことに、これにはリソース アダプタは必要ありません。

0 投票する
0 に答える
82 参照

embedded - VectorCanCase から複数のメッセージ キューを受信する

シャネル 0x74D 経由で特定の CAN メッセージを送信する場合、長さは l=8 で指定され、応答にはいくつかの Ca、msg が含まれている必要があります。私はC#コードを使用しています。ここに私が答えたが応答がない質問を添付してください

https://stackoverflow.com/questions/19933398/how-can-i-specify-data-length-received-by-cancasexl-from-vector

それを行う方法について何か考えはありますか?

0 投票する
1 に答える
5057 参照

c# - c# .Net 4.5 スレッド間の通信

一部の MCU ハードウェア (センサーの読み取り値など) をリアルタイムで監視できるアプリケーションを構築しています。通信にはCANバスを使用しています。

基本的に、現在2つのスレッドがあります。1 つは GUI が実行されているメイン スレッドで、もう 1 つはデバイス間の通信を管理/監視しています。明らかなことは、データを通信スレッドから GUI スレッドに渡す必要があるということです。しかし、それを行う正しい方法は何ですか?子スレッドが動作を終了したときに、データを呼び出しスレッドに戻す方法は知っていますが、この場合、通信スレッドは常に実行されています。

もちろん、通信ロジックは別のクラス (CANManager) で表されます。

私にはいくつかの独自のアイデアがありますが、これをどのように行うべきか「正しい」方法を知りたいです。

前もって感謝します :)

0 投票する
2 に答える
36594 参照

c++ - Linuxで仮想CANポートを作成するには? (C++)

別の大きなアプリケーションのテスト目的で CAN ポートをエミュレートするプログラムを作成したいと考えています。プログラムは、この仮想 CAN を介して以前に記録されたデータを送信する必要があります。誰でもそのような経験はありますか?

仮想 COM を確立し、CAN フレームにパックされたデータを送信することを考えています。それはうまくいくでしょうか?また、Linuxで仮想COMを確立するにはどうすればよいですか? このスレッドVirtual Serial Port for Linux を見つけまし たが、残念ながらそれをプログラムのソース コードに実装する方法がわかりません (初心者の Linux ユーザーと Linux のプログラマー)。

あなたの経験と提案を読んでみたいです。

0 投票する
1 に答える
2024 参照

can-bus - CAN バス通信のトラブルシューティング方法

ICP CON i-7565 (USB<->CAN インターフェイス) をカスタム メイドのデバイス (CAN2.0B をサポートし、PCL-841 カードで動作することが証明されています) に接続しようとしていますが、BAUD と受け入れコード/マスクを構成したと思いますが、正しくは、CAN メッセージがデバイスから送信されていないことを確認できます (ICP は、CAN メッセージの送受信を可能にするツールを提供します)。

私はCANバスを初めて使用するので、問題を特定する方法について助けていただければ幸いです。

I-7565 は私にとって間違ったインターフェイスであるか、設定を誤ったか、単に壊れている可能性があります。または、私が無知から間違ったことをしているだけです。特定の問題について誰も助けてくれるとは思わないので、CANバスの問題がどのように特定および分析されるかについての一般的な情報を求めています。たとえば、TCP/IP では、ping を呼び出したり、IP やゲートウェイの設定を再確認したりします。CAN 通信では何をしますか?

追加情報:

OS: Win7 64bit コネクタ: DB-9 標準配線 (2,3,7)