OBD9141 开源项目教程
1. 项目的目录结构及介绍
OBD9141 项目的目录结构如下:
OBD9141/
├── src/
│ ├── OBD9141.h
│ ├── OBD9141.cpp
├── examples/
│ ├── BasicUsage/
│ │ ├── BasicUsage.ino
├── README.md
目录介绍
- src/: 包含项目的主要源代码文件,包括
OBD9141.h
和OBD9141.cpp
。 - examples/: 包含示例代码,帮助用户理解如何使用该项目。
BasicUsage
目录下有一个示例 Arduino 项目BasicUsage.ino
。 - README.md: 项目的说明文档,包含项目的基本信息和使用指南。
2. 项目的启动文件介绍
项目的启动文件是 OBD9141.h
,它包含了项目的核心定义和接口。以下是 OBD9141.h
的主要内容:
#ifndef OBD9141_h
#define OBD9141_h
#include <Arduino.h>
#ifdef OBD9141_USE_ALTSOFTSERIAL
#include <AltSoftSerial.h>
#define OBD_SERIAL_DATA_TYPE AltSoftSerial
#else
#define OBD_SERIAL_DATA_TYPE HardwareSerial
#endif
class OBD9141 {
private:
OBD_SERIAL_DATA_TYPE* serial;
void kline(bool);
uint8_t tx_pin;
uint8_t rx_pin;
void write(uint8_t b);
void write(void* b, uint8_t len);
uint8_t buffer[OBD9141_BUFFER_SIZE];
bool use_kwp_;
bool initImpl(bool check_v1_v2);
public:
OBD9141();
void begin(OBD_SERIAL_DATA_TYPE & serial_port, uint8_t rx_pin, uint8_t tx_pin);
bool getCurrentPID(uint8_t pid, uint8_t return_length);
};
#endif
启动文件介绍
- OBD9141.h: 定义了
OBD9141
类,包含了初始化、数据读写等核心功能。 - OBD_SERIAL_DATA_TYPE: 根据配置选择使用
AltSoftSerial
或HardwareSerial
。 - OBD9141 类: 提供了
begin
方法用于初始化串口和引脚,getCurrentPID
方法用于获取当前状态的 PID 数据。
3. 项目的配置文件介绍
项目的配置文件主要是 OBD9141.h
中的一些宏定义,用于配置项目的参数。以下是一些关键的配置项:
#define OBD9141_KLINE_BAUD 10400
#define OBD9141_BUFFER_SIZE 16
#define OBD9141_INTERSYMBOL_WAIT 5
#define OBD9141_REQUEST_ANSWER_MS_PER_BYTE 3
#define OBD9141_WAIT_FOR_REQUEST_ANSWER_TIMEOUT (30 + 20)
#define OBD9141_INIT_IDLE_BUS_BEFORE 3000
#define OBD9141_INIT_POST_INIT_DELAY 50
配置文件介绍
- OBD9141_KLINE_BAUD: K 线波特率,根据规范设置为 10400。
- OBD9141_BUFFER_SIZE: 缓冲区大小,最大可能为 16。
- OBD9141_INTERSYMBOL_WAIT: 写入后续字节之间的延迟,设置为 5 毫秒。
- OBD9141_REQUEST_ANSWER_MS_PER_BYTE: 每个字节的响应时间,设置为 3 毫秒。
- **OBD9141_WAIT