# ObdDemo
**Repository Path**: zdyb_zdyb_admin/ObdDemo
## Basic Information
- **Project Name**: ObdDemo
- **Description**: obd测试代码
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: dev
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 3
- **Forks**: 0
- **Created**: 2019-04-12
- **Last Updated**: 2021-03-29
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ObdDemo
#### 介绍
obd环检设备测试软件使用说明,联系邮箱:xiejunpng@zdeps.com
| 版本 | 修改人 | 时间 | 备注 |
| ----- | --- | ---------- |:------------------------------------------- |
| 1.015 | 谢俊平 | 2019-10-10 | 初始版本 |
| 1.016 | 谢俊平 | 2019-10-28 | 新增模块:libDidag;
此模块对日志数据进行封装,
便于查找问题 |
#### 软件说明
**1.016**
为了在使用过程中,方便开发人员手机日志分析问题,在1.016的版本中添加了一个libdiag的模块,模块对诊断收发数据功能进行日志记录,并存放在应用私有目录中,开发人员可以通过集成该模块进行查看日志。
开发者可以集成libdiag可以在进行数据传输的时候查看通讯日志,地址:[https://github.com/zdeps/libdiag](https://github.com/zdeps/libdiag)
开发者可以只集成so库文件和数据库文件的方式,so库文件地址放置在网上[https://github.com/zdeps/diag](https://github.com/zdeps/diag)
#### 集成教程
**集成libdiag方式**
1. 在项目根目录文件“build.gradle”中添加,
```java
allprojects {
repositories {
maven { url "https://raw.githubusercontent.com/zdeps/diag/master" }
maven { url "https://raw.githubusercontent.com/zdeps/libdiag/master" }
}
}
```
2. 在app文件“build.gradle”中添加,
```java
dependencies {
implementation 'com.zkobd:libdiag:1.016'
//1.016指当前版本,用户可以自己决定需要的版本
}
```
**集成so库文件方式**
1. 在项目根目录文件“build.gradle”中添加,
```java
allprojects {
repositories {
maven { url "https://raw.githubusercontent.com/zdeps/diag/master" }
}
}
```
2. 在app文件“build.gradle”中添加,
```java
dependencies {
implementation 'com.zkobd:diagso:1.016'
//1.016指当前版本,用户可以自己决定需要的版本
}
```
#### 使用说明
**1.015**
1. 注意comjni.java的package的路径为```com.zdeps.gui```不要修改否则会调用失败.
2. 主要文件包括:
3. 发送指令时须等待上一次指令接收数据成功(单线程原因),用户可以使用线程池进行数据传输.
4. 在build.gradle里面添加所需要的架构指令
**1.016**
在新的版本中不需要上面的那么多操作,优化了很多不必要的逻辑;
1. 程序与so库的操作类放到libdiag/src/main/java/com/zdeps/libdiag/DiagAbs.java中操作,用户在集成的过程中主要关注这一个类文件。
```java
diagAbs = new DiagAbs() {
//接受数据回调
@Override
public int diagSendData(byte[] dat) {
return libBluetooth.send(dat, dat.length);
}
//发送数据回调
@Override
public byte[] diagRecvData(int retlen) {
return libBluetooth.recvDataQuere(retlen);
}
@Override
public void diagPurgeData() {//清空缓存数据
libBluetooth.purgeQuere();
}
};
diagAbs.setDiagDataCall(this);//接收数据回调
diagAbs.setDiagLogInface(this);//数据日志回调
```
**日志查看功能**
日志功能只需要启动日志页面就可以查看到通讯日志,
```java
startActivity(new Intent(this, LogManageActivity.class));
//LogManageActivity在libdiag中集成,只需要启动此页面即可
```
#### 软件使用说明:
1.手机配对蓝牙
2.打开测试应用,点连接蓝牙按钮
3.XML柴油STARTTEST按钮为选择柴油车,并开始 OBD 检测;XML汽油STARTTEST按钮为选择汽油车,并开始 OBD 检测。(点击按钮后无需再发3,即可开始检测)。
4.输入框输入1-19发送,具体内容看OBD-2协议文档:
```java
1.GetVCIState 取 VCI 连接状态
2.GetSoftwareVersion 取软件版本
3.StartTest 开始 OBD 检测(默认汽油类型)
4.GetCarInfo 取车辆信息
5.GetOBDInfo 取 OBD 相关信息
6.GetDTCInfo 取故障和故障代码
7.GetSystemCheckState 取系统检测状态
8.GetIUPR 取 IUPR 数据
9.GetRTData 取实时数据(退出数据流需要发送其它(例如:GetLampState)指令,否则线程没有退出.)
10.GetDTC 取故障码
11.GetDTCMileage 取故障里程
12.GetFreezeData 取冻结帧数据
13.GetVIN 取 VIN 码
14.GetECUInfo 取 ECU 信息
15.GetLampState 取故障指示灯状态
16.StopTest 检测结束
17.ScanVINCode 扫描VIN码(此方法为单独获取vin功能,调用返回数据后会退出系统.尽量不使用此接口,请使用GetVIN方法)
18.UpdateMCU 下位机升级
19. GetRTInfo 取实时数据和故障信息(退出数据流需要发送其它(例如:GetLampState)指令,否则数据流线程没有退出.)
```
5.下位机升级需要选择文件进行升级(在APP中,升级文件路径只能使用英文,否则会造成升级文件路径无法找到)
key0
obddemo
//1.连接蓝牙的时候会获取蓝牙的socket 然后使用一个无大小限制的阻塞队列来一直读取数据 然后 每次与so通信的时候 so会告诉你每次读取多少个字节的数据
然后 去阻塞队列中获取
diagso 这个module是用来讲SO打包成aar文件的一个工程,使用的话就是直接将windows生成的so复制到lib目录下面,然后
替换assets中的数据库文件,在通过编译生成aar文件
执行diaso Tasks 中 build assemble 来生成aar文件 然后重命名 为 obdlib-release.aar 替换到app中的libs就OK