問題タブ [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.
c# - 別の backgroundworker-thread から呼び出された Timer-Backgroundworker
私は現在、C# の CAN テクノロジと、メッセージの受信と送信に関連して多くの開発を行っています。これまでのところ、私が送信するすべてのメッセージは消費者に正しく送信され、プロデューサーが送信するすべてのメッセージは消費者 (私) に正しく送信されます。
メッセージが受信 FIFO に到着するたびに、_messageReceivedEvent がトリガーされます。その後、1 つ以上の受信メッセージの処理が開始されます。メッセージ処理の後、既存のタイマー (別のスレッド) をリセットする必要があります。これは、5 秒以内にメッセージが到着しない場合、タイマー スレッドはリセットされず、経過した場合、タイマー スレッドは経過したことを通知し、1 つのパラメーター (_isDataCommunicationStillAlive) を「FALSE」に設定する必要があることを意味します。
Main-Thread (MessageReceiption-Backgroundworker を呼び出します):
DataCommunicationTimer (Backgroundworker (MessageReceiption から呼び出される) として):
問題は、Timer-Backgroundworker が 1 秒以内に終了するため、動作が理解できないことです。別の問題は、私が知らないことですが、残り時間に関する特定のタイマーインスタンスを読み取る方法です...
これらのコード行に基づいて、バグを見つけることができません。:(((
手伝っていただけませんか?!
embedded - Infineon XMC4400 CAN メッセージ オブジェクトと LIST レジスタ
Infineon XMC4400 コントローラを使用しており、ベーシック CAN 機能をフル CAN 機能に変換しています。LISTレジスタを使用したメッセージオブジェクトの割り当てを理解するのに苦労しています-私の知る限り-
- XMC4400 は 64 個のメッセージ オブジェクトをサポートし、各 MO を LIST レジスタの 1 つに割り当てる必要があります。
- MultiCANモジュールには8つのLISTレジスタがあります
- PANCTR を使用すると、メッセージ オブジェクトを LIST との間で更新/変更/削除できます。
(間違っていたら訂正してください。)
私の質問は、64 個すべての MO を単一の LIST レジスタに割り当てることはできますか、それとも何か制限がありますか? リファレンスマニュアルに明確な説明が見つかりません。
can-bus - JSSC readBytes() - 入ってくるものとそれをどうするか?
私は学生で、プロジェクトとして、CAN と通信するソフトウェアを開発しています。CAN は、シリアル オーバー USB インターフェイスを介して読み取ることができます。これらのバイトを受信したときに何が起こるか混乱しています。-127-128 形式で受信し、Java 演算子 & 0xFF を介して int に変換しています。
そこから、これらのバイトで何が起こっているのでしょうか? 受信しているパケット内のデータだけでなく、STX と ETX も検索できるようにしたいと考えています。それ、どうやったら出来るの?これらのバイトの整数値を見つけることができます。それはそれについてです。このデータは、JSSC の readBytes を介して byte[] に受け取ります。
STX は 0x02 です。バイト配列のどこで、どのように見つけることができますか? 整数のみを受け取っています。
受信側で何か完全に間違っているのでしょうか、それともこのデータはシリアル化されていて、それについて何も知りませんか?
私の新人を許してください。CANへのRXおよびTXの方法を学ぼうとしています。
ありがとう
can-bus - CANopen システムでマスター ハートビートが見つからないため、ノードが反応しない
CANopenのハートビート プロトコルについて奇妙な発見があります。たぶん、他の誰かがこのようなものを見たことがあり、おそらくこのように動作するはずです... とにかく、これがそれについてです:
CANopen には 2 つのタイムアウト ベースのライフ ガード メカニズムがあります。1 つ目はノード ガードです。
もう 1 つはハートビートと呼ばれます。それは非常に単純です。ネットワーク上のすべての参加者が、そのノード ID とその状態を示す通常のメッセージを送信します。頻度はオブジェクト 0x1017sub0 によって定義され、ハートビート プロデューサー時間と呼ばれます。ゼロに設定すると、ハートビートは送信されません。
他の参加者は、ネットワーク上で検索するノードの数に加えて、2 つの連続するハートビート メッセージ間の最大時間を定義できます。この情報は、オブジェクト 0x1016sub1..n に、この特定のノードがリッスンする必要があるノードと同じ数の 32 ビット エントリとして格納されます。
エントリは、ノード ID (ビット 22 から 16) と、ハートビート消費者時間 (ビット 15..0) と呼ばれる、ハートビート間に経過する可能性がある前述の最大時間で構成されます。ここでも、エントリがゼロの場合は無視されています。
お気づきかもしれませんが、ネットワーク マスター (ノード ID 1) とスレーブ (ノード ID 2 ~ 127) の間に区別はありません。
これまでのところ、理論は次のとおりです。
ネットワーク内のスレーブ ノードの 1 つをマスターのハートビート コンシューマーとして構成しているため、オブジェクト 0x1016sub1 に 0x000107D0 のようなエントリがあります。マスターからのハートビート メッセージが少なくとも 2 秒後に期待されることを意味します。
これが 2 つの例で機能することを確認しました。しばらくマスター ハートビートを送信してから停止すると、ノードは運用前モードに戻るか、適切な緊急メッセージを送信します。
master-heartbeat-messages を送信しない場合、ノードを起動 (運用モードに移行) した後、ノードが運用前モードに戻るか、適切な緊急メッセージ、あるいはその両方。しかし、私が試した 2 つの例では、何も起こりませんでした。ハートビートをまったく送信しない場合、ノードはハートビートを予期せず、そのまま実行を続けます。
2 つの例は、互いに大きく異なります。おそらく同じCANopenスタックライブラリを使用しているかどうかはわかりません。
説明はありますか?
vb.net - CANcaseXL を介して構成 MSG を ARS308 レーダーセンサーに送信する際のエラー
私は、CANcaseXL を介して ARS308 レーダー センサーから CAN メッセージを送信および復元することを含む研究に取り組んでいます。ID 0x200 を使用してこの構成メッセージを送信できる VB.net コードを作成できましたが、突然レーダーが監視していたにもかかわらず、メッセージへの応答を停止し、データが PC から CANcaseXL を介してレーダーに送信されたことを確認できました。さらに、ARS308 レーダー センサーのマニュアルには記載されていない ID 0x478 、 0x271 のようなレーダーから奇妙なメッセージ ID を受信しているため、それらのデータが何であるかわかりません。
どんな助けにも感謝します!
can-bus - CANの実装とDE9
下記リンク参照。
1) ブレッドボードで同じ図を使用できますか? つまりCan bus part (connection A in pic)
、2本のワイヤが2つの120オームの抵抗に接続されている場所ですか?このバスは必要ですany external voltage supply
か、それともブレッドボードにそのまま接続できますか。そして、(connection B)
ノードからバスに追加されます。
2) また、CAN バスの実装に DE9 が使用されていることも読みました。CAN バスが DE9 でどのように実装されるか、つまり DE9 での実装を教えてください。
android - 温度換算 2バイト
温度の 2 バイトを変換するのが困難です。温度のメッセージを 2 バイトで取得するコントロール ユニット (温度センサー) があります。
1) 例:
2) 例:
3) 例:
4 ) 例:
メッセージを温度に変換する方法がわかりません。
ご支援をお願いします。誰が私に解決策を与えることができますか、それは私のプロジェクトで協力できます(コントロールユニットからメッセージを受信するアプリアンドロイドを作成します)
can-bus - j1939 で同じ名前の 2 つのノードが同じアドレスを要求するとどうなりますか?
j1939 で同じ名前の 2 つのノードが同じアドレスを要求している場合、この状況ではどうなりますか? いずれかのノードがアドレスを要求するか、エラーが発生しますか?