更新记录
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)/4、0D车速A、05水温A-40、04负荷A*100/255、11节气门 /2F油量A*100/255等(完整表见supportedPids)。 - DTC 编码(SAE J2012):首字节高 2 bit 选
P/C/B/U前缀,后续 nibble 拼 4 位码。0133→P0133、4101→C0101、8133→B0133、C0AB→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 处理,本插件只做编解码。

收藏人数:
购买普通授权版(
试用
赞赏(0)
下载 1178
赞赏 0
下载 12439287
赞赏 1934
赞赏
京公网安备:11010802035340号