Este Programa Se Utiliza para Leer El Puerto OBD ISO 9141
Este Programa Se Utiliza para Leer El Puerto OBD ISO 9141
Este Programa Se Utiliza para Leer El Puerto OBD ISO 9141
Este programa se utiliza para leer el puerto OBD ISO 9141-2 en un vehículo.
UART se utiliza para enviar los DTC almacenados como texto ASCII al usuario.
*/
#include <AltSoftSerial.h>
#include <RBD_Timer.h>
// # define LED_BUILTIN 13
#define rxPin 8
#define txPin 9
// El número máximo de ECU que se leerán (determina cuánta RAM se usará)
#define MAX_RESPONSES 15
// Mantenga una lista de PID compatibles a nivel mundial. Se admite un PID específico si
// p.ej. PID 0x01 = bit 32, PID 0x02 = bit 31, ... PID 0x20 = bit 1
// TODO: Almacene todos los PID a la vez si podemos encontrar espacio en SRAM
uint32_t gPidSupport = 0;
#definir BUFLEN 64
// TODO: cambie a uint8_t una vez que podamos encontrar una alternativa a Serial.println
(buffer)
// Se utiliza para enviar una solicitud de 'ping' cada pocos segundos para mantener viva la
conexión
/*
*/
void send5BaudInit () {
retraso (2000); // Deje Tx HIGH durante 2 segundos antes de comenzar la rutina de inicio real
// Enviar 0x33 (LSB primero) a través de K-Line al puerto OBD (0x33 es la dirección del OBD)
retraso (400);
retraso (400);
retraso (400);
retraso (400);
digitalWrite (txPin, HIGH); // parada poco
retraso (200);
// Establecer la velocidad en baudios para el software UART definido por ISO 9141-2 (10.4
Kbaudios)
softSerial.begin (10400);
// ¿Deberíamos haber refactorizado en funciones más pequeñas para un segmento de tiempo
tan simple?
// No lo sé.
uint8_t sync;
//DEPURAR
Serial.println (buffer);
uint8_t clave1;
uint8_t clave2;
uint8_t invKey2;
uint8_t invAddress;
//DEPURAR
Serial.println (buffer);
retraso (25); // 25ms <= W4 <= 50ms (Tiempo entre la recepción finalizada de la clave2 y
el inicio del envío de la clave invertida2)
//DEPURAR
invKey2 = ~ key2;