問題タブ [obd-ii]

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 投票する
0 に答える
135 参照

ios - ストリームから指定されたデータを取得するには?

TCPストリームサーバーに接続するシンプルなアプリを作成しました(車内のOBD wifi接続)。接続も動作も非常に良好です。車からメッセージを送信したり、応答を取得したりできます。ここで、回答から指定されたデータのみを読み取りたいと思います。たとえば 01041 のように車にリクエストを送信すると、次のような応答が返されます。

検索: OK

41 04 7F

この回答の最後のバイトのみを含む変数を作成したいと思います。この例では7Fになります。そのデータを Label に表示したいので、これを行いたいと思います。したがって、この例の行 Searching でスキップし、2 行目の最初の 2 バイトをスキップして 7F のみを取得する必要があります。どうすればそれができますか?

http://www.raywenderlich.comのチュートリアルの助けを借りてその tcp 接続を行ったので、問題を解決するためにあまり理解していません。

この行 [self.RPM setText:[self.RPM.text stringByAppendingString:output]]; ラベルに回答が表示されますが、すべてが表示されます。新しい変数出力を作成して何らかの方法で編集する必要があると思いますが、方法がわかりません

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

android - OBDII プロトコルからのデータを理解する

私は現在、OBD デバイス (ELM 327 Mini を使用) に接続してそのデータを読み取る Android 用のアプリケーションを開発しています。

私は OBDII プロトコルに比較的慣れていません。1 か月ほど前に作業を開始したばかりですが、公式ドキュメントを使用し、インターネットを調べ、必要なものの開発のための優れた基盤を作成する pires API を使用しています (あなたはここここで見つけることができます)私はアプリケーションを完成させ、いくつかの車でそれをテストすることができました. 結果は、ほとんどの場合、メルセデス ベンツ クラス C w204 でアプリケーションをテストするまでは素晴らしいものでした。

この車では、私のアプリケーションが OBD から読み取るデータは、私には理解できないものです。同様の例を探してみましたが、うまくいきませんでした。この問題の解決策を見つけることができず、完全に立ち往生していることに気づきました。

このデータの例をいくつか書きますが、最初に、アプリケーションが OBD に接続するたびに OBD を初期化する方法をお知らせしたいと思います。行方不明です。しかし、私が言ったように、私のアプリケーションは他の車でも完璧に動作します。

AT コマンド:

まず、初期化が完了したら、PID 00 (01 00) を送信して、車が 01 から 20 までのどの PID をサポートしているかを確認します。これが私の最初の問題です

時々私は受け取ります

そして時折

注: [Req] と [Ans] は、わかりやすくするためだけに手動で追加しました。

本当に気になるのは、答えが違うということです。41 00 95 00 20 13 と答える場合もあれば、41 00 98 18 00 01 と答える場合もあります。その PID の回答は、同じ車に対して常に同じである必要があります。PID がサポートする車が動的に変化するとは思いません。

もう 1 つの理由は、PID 00 が 1 行または 2 行で応答されることがある理由です。最初の例では、最初の行が pid 00 に対する通常の回答であることがわかりますが、2 番目の回答は 1: 06 41 00 BF FF E8 93 であり、それが何を意味するのかまったくわかりません。

pid 01 の別の例があります

同時に異なるプロトコルで応答しているためですか?06ってそういうこと?

また、車両の速度を要求すると NO DATA が返され、次の 2 秒以内に正しい値 41 0D 00 (たとえば) が返され、次の 2 秒で NO DATA が返されることがあります。つまり、NO DATA エラーが発生するのは完全にランダムです。問題は、時々正しいデータを返すことができるため、車が実際に PID をサポートしていることです。

OBD の初期化に何か問題があると確信しています。タイムアウトを長くするか、さらにコマンドを含める必要があるかもしれませんが、OBD プロトコルの専門家ではないため、どのように処理すればよいかわかりません。 . 公式ドキュメントで見逃したことや、私が犯した可能性のあるばかげた間違いを指摘するだけで、どんな種類の助けも本当に感謝しています。ほとんどの場合、何が起こっているのかを理解したいので、データを適切に処理できます。

どうもありがとう!

0 投票する
3 に答える
6376 参照

android - Android OBD-II 走行距離をクリアする方法 (PID0131)?

ポイントAからポイントBまで(車で)移動した距離を計算する必要があるアプリに取り組んでいます。

Elm Electronics (チップセット メーカー) に問い合わせたところ、走行距離計から走行距離を返す標準の OBD-II PID はありませんが、自動車メーカーは PID を提供している可能性があるとのことでした。この方法は標準的ではないため、別の方法を見つけました。

PID 0131 (コードがクリアされてからの移動距離) は、役立つと思われる何かを返しています。ポイントAでそれをクリアし、ポイントBでその値を読み取ることができれば、完了です:)

「コードがクリアされた」とは何を意味するのかを推測するために多くのことを考えましたが、それが何を意味するのか理解できませんでした? もう 1 つの重要な質問です。コードをクリアする方法、またはこの PID をリセットする方法を教えてください。

任意の提案をいただければ幸いです。ありがとう。


アップデート

2台の車でテストしました。

  1. ベンツ車では、OBD-II コマンドは機能しません。データを取得できませんでした:(
  2. ペルソナカー(マレーシア現地)で正しいリプライが返ってきたのですが、数キロ経っても0x0131 PIDが常に7F01、16608KMが返ってきました。04コマンドを送信してリセットしようとしました(エリックが彼の回答で提案したように)、しかし、何も明確になりません:)それでも応答として7F01を受け取りました。

My Library は、OBD-II lib をお探しの方はこちらからご利用いただけます。

だから、私がやろうとしているのは、速度(v)を取得できるので、d = v * t式に基づいて距離を計算できるということです。

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

can-bus - OBD2 用の CAN バス経由の KWP 高速プロトコル

CAR の ODB 機能について質問があります。AT90CAN128 uE を搭載した USB ドングルがあります。uE には CAN ドライバーがあり、これを使用してバス上のデータ トラフィックを読み取ることができます。私は BMW 116i を持っていますが、この車は obd2 に KWP-fast プロトコルを使用しています。CAN バスを使用して、obd2 で使用可能な変数について ECU にクエリを送信できるかどうかを尋ねたいと思います。仕事ではCANバス経由でKWP2000プロトコルを使用しているため、よくわかりませんが、仕様がわかりません。CANoeで既製のツールを使用しています。

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

can-bus - ELM327でCANメッセージ受信中のフロー制御メッセージ

Windows で動作し、ELM327 デバイスと通信するソフトウェアを作成しようとしています。最初のバージョンを作成し、SMART ForTwo (SMART 451) 車両に乗り込み、インストルメント クラスターに接続することができました (送信 CAN ID は 782、受信 CAN ID は 783)。ただし、フロー制御には大きな問題があります。ログは次のとおりです。

TX: ATI RX: ELM327 v1.5a

TX: ATE0 RX: ATE0 OK

TX: ATSP6 RX: OK

TX: ATH1 受信: OK

TX: ATL1 受信: OK

TX: ATCFC1 受信: OK

TX: ATFCSM0 RX: OK

TX: ATAL RX: OK

TX: ATSH782 RX: OK

TX: ATCRA783 RX: ?

TX: ATST64 RX: OK

TX: 1092 RX: 783 02 1A 87

TX: 1A87 RX: 783 10 16 5A 87 05 6E 00 08

別のツールを使用したところ、ELM327 デバイスがフロー制御フレームをすぐに送信することがわかりました。次のようになります。

891.438 782 02 1A 87

891.444 783 10 16 5A 87 05 6E 00 08

891.444 782 30 00 00 00 00 00 00 00

ご覧のとおり、フロー制御フレームは、他のデバイスから送信される最初のフレームと同時に送信されます。「Flow Control」フレームの受信に問題があると確信しています。ELM327 のドキュメントを調べましたが、フロー制御フレームを遅らせる方法に関する情報は見つかりませんでした。リクエスト「1A 87」を正しく送信し、レスポンスを受信するにはどうすればよいですか?