更新记录

1.0.0(2026-07-19)

首发:自研 手写 SAE J1979 解码核心:Mode 01 PID 实时数据解析(转速/车速/水温/负荷/节气门/油量等公式表) + SAE J2012 故障码(


平台兼容性

uni-app x(5.14)

Chrome Safari Android iOS 鸿蒙 微信小程序
5.0 12 × ×

nex-obd —— 高性能车联网 OBD-II 诊断

自研 SAE J1979 OBD-II 解码原生核心(Mode 01 PID 实时数据 + SAE J2012 故障码 DTC + 请求构造), 提供 uni-app 可调的 JS API。支持 App 端(Android / iOS)H5 端(双端同一核心、同真值, 6 个 API 全量可用;H5 端建议应用启动时 await ensureReady() 一次);小程序不支持。

同一份 utssdk 插件同时支持 uni-app x(uvue)经典 uni-app(vue3),无需分叉。 数据形态:hex 报文进 / JSON 字符串出(异构输出以 JSON 字符串返回)。 全自研实现,无额外系统依赖。 价值场景:4S 维修助手 / 二手车检测 / 车友会 App(B2B)。

API(6 个)

JS API 签名 说明
parseObd parseObd(hexResponse): string 解析 Mode 01 响应 → JSON {pid,name,value,unit,raw};未知 PID → {pid,raw,name:"unknown"}
decodeDtc decodeDtc(hex): string 2 字节 DTC → JSON {code,description}(如 P0133
decodeDtcList decodeDtcList(hex): string 多个 DTC → JSON 数组 [{code,description},...]
buildObdRequest buildObdRequest(mode, pid): string 构造请求 hex(如 1, 0x0C"010C"
supportedPids supportedPids(): string 内置 PID 表 → JSON [{pid,name,unit,bytes,formula},...]
obdCoreVersion obdCoreVersion(): string 核心版本号

parseObd / decodeDtc / decodeDtcList / supportedPids 返回 JSON 字符串,用 JSON.parse(...) 解析。

用法

import {
  parseObd, decodeDtc, decodeDtcList, buildObdRequest, supportedPids
} from "@/uni_modules/nex-obd";

// 1) 构造请求并解析响应(发收报文由蓝牙/串口 ELM327 助手完成,这里只做编解码)
const req = buildObdRequest(1, 0x0C);          // "010C"
const r = JSON.parse(parseObd("410C1AF8"));    // {pid:"0C", name:"engineRpm", value:1726, unit:"rpm", raw:"410C1AF8"}
console.log(r.name, r.value, r.unit);          // engineRpm 1726 rpm

// 2) 故障码
const dtc = JSON.parse(decodeDtc("0133"));     // {code:"P0133", description:"氧传感器电路响应慢(Bank1 Sensor1)"}
const list = JSON.parse(decodeDtcList("01334101 8133")); // [{code:"P0133"...},{code:"C0101"...},{code:"B0133"...}]

// 3) 内置 PID 表
const pids = JSON.parse(supportedPids());      // [{pid:"0C",name:"engineRpm",unit:"rpm",bytes:2,formula:"((A*256)+B)/4"},...]

解码细节

  • PID 公式A=首数据字节,B=次字节):内置常见 Mode 01 公式表,如 0C 转速 ((A*256)+B)/40D 车速 A05 水温 A-4004 负荷 A*100/25511 节气门 / 2F 油量 A*100/255 等(完整表见 supportedPids)。
  • DTC 编码(SAE J2012):首字节高 2 bit 选 P/C/B/U 前缀,后续 nibble 拼 4 位码。 0133→P01334101→C01018133→B0133C0AB→U00AB
  • 未知 PID 不报错:返回 name:"unknown"(便于上层渲染原始字节)。
  • 错误:hex 非法 / 报文不完整 / mode·pid 越界抛异常(ObdException/ObdError)。
  • 诚实边界:内置 PID 公式表与 DTC 描述均为常见子集;完整 2 万条 DTC 库 / 全量 PID 由调用方加载。 多 PID 帧只解析首个 PID;协议分帧(CAN 计数字节 / K-line 多帧)由调用方处理后再传入。

平台与调试边界

  • app-android / app-ios / H5(web);各家小程序不支持。
  • Android 本地真机调试原生库需 HBuilderX ≥ 4.26(自定义调试基座),云打包不受此限。
  • iOS 端原生库含 Swift,宿主原生工程需开启「支持 Swift」。
  • 报文收发(蓝牙 BLE / 经典蓝牙 SPP / WiFi 连 ELM327 适配器)由上层 App 处理,本插件只做编解码。

隐私、权限声明

1. 本插件需要申请的系统权限列表:

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

插件不采集任何数据。所有计算/处理均在本地完成,无任何网络请求、不发送数据到任何服务器。

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

暂无用户评论。