# 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