Buenas a todos
Estoy estudiando un poco la comunicación CAN con arduino, estoy usando este ejemplo de las librerias,
En en cual veo todas las tramas que leo desde una maquina.
Pero me surge una duda haber si ustedes me la pueden resolver, viendo el código creo que las tramas que lee las guarda en las variable unsigned char len y buf.
Entonces como puede hacer que me guarde las tramas de cada ID en diferentes bufer, para después gestionarlas a mi manera:
Gracias
Las tramas que capturo son estas:
ID Len data
14EFE100 8 03 0A 17 00 20 00 10 00
14EFE101 8 01 53 12 00 20 05 00 0A
14EFE102 8 01 51 12 00 BA 00 03 00
14EFE103 8 01 53 12 00 2B 00 00 01
#include <SPI.h>
#include "mcp_can_Err.h"
const int SPI_CS_PIN = 10;
MCP_CAN CAN(SPI_CS_PIN);
unsigned char len = 0;
unsigned char buf[8];
void setup()
{
Serial.begin(115200);
START_INIT:
if(CAN_OK == CAN.begin(CAN_500KBPS))
{
Serial.println("CAN BUS Shield init ok!");
}
else
{
Serial.println("CAN BUS Shield init fail");
Serial.println("Init CAN BUS Shield again");
delay(100);
goto START_INIT;
}
}
void loop()
{
if(CAN_MSGAVAIL == CAN.checkReceive()) // check if data coming
{
CAN.readMsgBuf(&len, buf); // read data, len: data length, buf: data buf
unsigned long canId = CAN.getCanId();
Serial.println("-----------------------------");
Serial.print("get data from ID: ");
Serial.println(canId, HEX);
for(int i = 0; i<len; i++) // print the data
{
Serial.print(buf[i]);
Serial.print("\t");
}
Serial.println();
}
}