Hola a Todos
Estoy ya hace un tiempo intentando reproducir (con arduino UNO y el Shield Sparkfun DEV-13262) el dialogo que relializa una herramienta para la realizacion de llaves codificadas mediante OBD2 y mi kit de arduino y shield, pero no logro dar con el codigo correcto.
Les cuento el procedimiento:
La herramienta consulta por el ID 7B0 y el tablero responde con 7C3.
En total son 12 tramas las que envio de las cuales durante el monitoreo de la herramienta algunas responden con 1 trama(que son las que llegan sin problema) y despues hay otras tramas que envio que tiene 2 o mas tramas de respuesta. Estas ultimas son las que no logro que me responda el tablero al enviar mis tramas con Arduino... Algo en el codigo me esta faltando, talvez alguno es capaz de darme una mano?
Muchas gracias
Este es el Dialogo que capturo al monitorear la accion de la herramienta sobre el tablero.
1; 7B0;85;2;10;81;0;0;0;0
7C3;F1;2;50;81;0;0;0;0
2; 7B0;85;2;1A;95;0;0;0;0
7C3;F1;4;5A;95;1;8;0;0
3; 7B0;85;2;1A;94;0;0;0;0
7C3;F1;10;D;5A;94;30;34;30
4; 7B0;85;30;FF;0;0;0;0;0
7C3;F1;20;30;30;30;31;32;35
7C3;F1;21;31;31;0;0;0;0
5; 7B0;85;2;1A;91;0;0;0;0
7C3;F1;10;D;5A;91;35;31;38
6; 7B0;85;30;FF;0;0;0;0;0
7C3;F1;20;30;32;37;33;34;20
7C3;F1;21;20;20;0;0;0;0
7; 7B0;85;2;1A;92;0;0;0;0
7C3;F1;10;D;5A;92;35;30;36
8; 7B0;85;30;FF;0;0;0;0;0
7C3;F1;20;31;37;35;33;30;30
7C3;F1;21;30;35;0;0;0;0
9; 7B0;85;2;21;21;0;0;0;0
7C3;F1;5;61;21;F;42;3F;0
10; 7B0;85;2;10;FA;0;0;0;0
7C3;F1;2;50;FA;0;0;0;0
11; 7B0;85;6;3B;E0;28;11;19;65
7C3;F1;3;7F;3B;22;0;0;0
12; 7B0;85;2;21;20;0;0;0;0
7C3;F1;10;38;61;20;2;1;C6
Y esto es lo que obtengo en el monitor de el IDE de arduino, despues de ejecutar mi codigo.
Trama 1 Enviada
7C3;F1;2;50;81;0;0;0;0
Trama 2 Enviada
7C3;F1;4;5A;95;1;8;0;0
Trama 3 Enviada
7C3;F1;10;D;5A;94;30;34;30
Trama 4 Enviada
Trama 5 Enviada
7C3;F1;10;D;5A;91;35;31;38
Trama 6 Enviada
Trama 7 Enviada
7C3;F1;10;D;5A;92;35;30;36
Trama 8 Enviada
Trama 9 Enviada
7C3;F1;5;61;21;2;9A;B9;0
Trama 10 Enviada
7C3;F1;2;50;FA;0;0;0;0
Trama 11 Enviada
7C3;F1;3;7F;3B;22;0;0;0
Trama 12 Enviada
7C3;F1;10;38;61;20;1;2;C6
Al enviar las tramas 4,6,8 no recibo respuesta
A continuacion mi humilde codigo.. ya que estoy empezando con arduino y canbus
Lo corte el codigo y solo muestro encabezado y escritura/respuestas de trama 3 y 4
la 6 y 8 repite lo de la 4 y las demas lo de la 3...
#include <CAN.h>
int conteo=1;
void setup()
{
CAN.begin(50); //SPEED
word Filters[6] = {0x7B0, 0x7C3, 0x7B0, 0x7C3, 0x7B0, 0x7C3};
word Masks[3] = {0x7ff, 0x7ff, 0x7ff};
Serial.begin(115200);
CAN.SetMode(NORMAL_MODE);
CAN.SetFilters(Filters,Masks);
CAN_TxMsg.id=0x7B0;
CAN_TxMsg.header.rtr=0;
CAN_TxMsg.header.length=8;
CAN_TxMsg.data[0]=0x00;
CAN_TxMsg.data[1]=0x00;
CAN_TxMsg.data[2]=0x00;
CAN_TxMsg.data[3]=0x00;
CAN_TxMsg.data[4]=0x00;
CAN_TxMsg.data[5]=0x00;
CAN_TxMsg.data[6]=0x00;
CAN_TxMsg.data[7]=0x00;
Serial.println("MONITOREO CAN-50KHZ");
}
void loop() {
if (conteo<3)
{
//TRAMA 3
CAN_TxMsg.id=0x7B0;
CAN_TxMsg.header.rtr=0;
CAN_TxMsg.header.length=8;
CAN_TxMsg.data[0]=0x85;
CAN_TxMsg.data[1]=0x02;
CAN_TxMsg.data[2]=0x1A;
CAN_TxMsg.data[3]=0x94;
CAN_TxMsg.data[4]=0x00;
CAN_TxMsg.data[5]=0x00;
CAN_TxMsg.data[6]=0x00;
CAN_TxMsg.data[7]=0x00;
CAN.send(&CAN_TxMsg);
Serial.print("Trama 3 Enviada\n");
delay(500);
if (CAN.CheckNew())
{
CAN.ReadFromDevice(&CAN_RxMsg);
if (CAN_RxMsg.id== 0x7C3)
{
Serial.print(CAN_RxMsg.id,HEX);
Serial.print(";");
Serial.print(CAN_RxMsg.data[0],HEX);
Serial.print(";");
Serial.print(CAN_RxMsg.data[1],HEX);
Serial.print(";");
Serial.print(CAN_RxMsg.data[2],HEX);
Serial.print(";");
Serial.print(CAN_RxMsg.data[3],HEX);
Serial.print(";");
Serial.print(CAN_RxMsg.data[4],HEX);
Serial.print(";");
Serial.print(CAN_RxMsg.data[5],HEX);
Serial.print(";");
Serial.print(CAN_RxMsg.data[6],HEX);
Serial.print(";");
Serial.println(CAN_RxMsg.data[7],HEX);
delay(1000);
}
}
//TRAMA 4
CAN_TxMsg.id=0x7B0;
CAN_TxMsg.header.rtr=0;
CAN_TxMsg.header.length=8;
CAN_TxMsg.data[0]=0x85;
CAN_TxMsg.data[1]=0x30;
CAN_TxMsg.data[2]=0xFF;
CAN_TxMsg.data[3]=0x00;
CAN_TxMsg.data[4]=0x00;
CAN_TxMsg.data[5]=0x00;
CAN_TxMsg.data[6]=0x00;
CAN_TxMsg.data[7]=0x00;
CAN.send(&CAN_TxMsg);
Serial.print("Trama 4 Enviada\n");
delay(2000);
while (CAN.CheckNew())
{
CAN.ReadFromDevice(&CAN_RxMsg);
if (CAN_RxMsg.id== 0x7C3)
{
Serial.print(conteo,DEC);
Serial.print("; ");
Serial.print(CAN_RxMsg.id,HEX);
Serial.print(";");
Serial.print(CAN_RxMsg.header.rtr,HEX);
Serial.print(";");
Serial.print(CAN_RxMsg.header.length,HEX);
Serial.print(";");
Serial.print(CAN_RxMsg.data[0],HEX);
Serial.print(";");
Serial.print(CAN_RxMsg.data[1],HEX);
Serial.print(";");
Serial.print(CAN_RxMsg.data[2],HEX);
Serial.print(";");
Serial.print(CAN_RxMsg.data[3],HEX);
Serial.print(";");
Serial.print(CAN_RxMsg.data[4],HEX);
Serial.print(";");
Serial.print(CAN_RxMsg.data[5],HEX);
Serial.print(";");
Serial.print(CAN_RxMsg.data[6],HEX);
Serial.print(";");
Serial.println(CAN_RxMsg.data[7],HEX);
}
}
Gracias por su tiempo