arkarash no usado aun las estructuras por que quería primero saber como guardar los dato según la ID, pero las usare cuando resuelva este problema y te agradezco mucho tu ayuda.
Mira _jose_ si este comando lo saco del switch
CAN.readMsgBuf(&len, buf);
Y solo creo una variable para LEN y DATA, si funciona y veo los datos por el puerto serie
unsigned char len = 0;
unsigned char buf[8];
El codigo quedaria asin, mas o menos asin:
unsigned char len = 0;
unsigned char buf[8];
void loop() {
CAN_MSGAVAIL == CAN.checkReceive();
CAN.readMsgBuf(&len, buf);
switch (CAN.getCanId()) {
case 0x14EFE100:
for (int i = 0; i < len; i++) // print the data
{
Serial.print(buf[i]);
Serial.print("\t");
}
break;
case 0x14EFE101:
for (int i = 0; i < len; i++) // print the data
{
Serial.print(buf[i]);
Serial.print("\t");
}
break;
case 0x14EFE102:
for (int i = 0; i < len; i++) // print the data
{
Serial.print(buf[i]);
Serial.print("\t");
}
break;
}
}
Pero no es lo que yo pretendo hacer, yo lo que quiero hacer es esto, mas o menos.
En este ejemplo lo que hago es capturar una trama con una ID y lanzar esa misma trama con una ID diferente y funciona perfectamente.
case 0x14EFE101:
for (int i = 0; i < len; i++) {
Serial.print(buf[i], HEX);
Serial.print("\t");
CAN.sendMsgBuf(0x15FEE103, 1, 8, buf);
}
Serial.println();
break;
El problema esta en que no se como meter en cada variable los datos da cada ID para luego mandarlos con otra ID que yo quiera.
Por eso hice la prueba del post de arriba, y pensé si leo La IDXXXXXX que me guarde los datos en una Variable "Y" y después poder lanzarla con este comando:
CAN.sendMsgBuf(0x15FEE103, 1, 8, Variable Y);
Gracias a los dos por la ayuda.