DESCRIPCIÓN
Estructura de datos que representa un mensaje CAN.Se encuentras los diferentes campos existentes en un mensaje: ID, RTR,LENGTH y un array con los 8 Bytes de datos.
SINTAXIS
CANClass::msgCAN CAN_TxMsg; (Predefinida en la librería)
CANClass::msgCAN CAN_RxMsg; (Predefinida en la librería)
MIEMBROS
CAN_TxMsg.id: Identificador de mensaje(unint16_t)
CAN_TxMsg.header.rtr: Bit de Remote Transmission Request.
CAN_TxMsg.header.length: Representa en un entero de 4 bits, el tamaño de datos válidos en la trama
CAN_TxMsg.Data[]: Vector de 8 posiciones (unit8_t) que contiene la información del mensaje
EJEMPLO
#include <CAN.h>
void setup()
{
Serial.begin(115200);
Serial.println("Empezamos...");
CAN.begin(500);
}
void loop()
{
//Send trace
CAN_TxMsg.id=0x100;
CAN_TxMsg.header.rtr=0;
CAN_TxMsg.header.length=8;
CAN_TxMsg.data[0]=0x01;
CAN_TxMsg.data[1]=0x02;
CAN_TxMsg.data[2]=0x03;
CAN_TxMsg.data[3]=0x04;
CAN_TxMsg.data[4]=0x05;
CAN_TxMsg.data[5]=0x06;
CAN_TxMsg.data[6]=0x07;
CAN_TxMsg.data[7]=0x08;
if( CAN.send(&CAN_TxMsg) )
{
}
if ( CAN.CheckNew() )
{
if ( CAN.ReadFromDevice(&CAN_RxMsg) )
{
Serial.println("-------------------");
Serial.print("ID: ");
Serial.println(CAN_RxMsg.id,HEX);
Serial.print("RTR: ");
Serial.println(CAN_RxMsg.header.rtr,DEC);
Serial.print("Length: ");
Serial.println(CAN_RxMsg.header.length,DEC);
Serial.print("DATA: ");
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);
Serial.println("-------------------");
}
}
}
Estructura de datos que representa un mensaje CAN.Se encuentras los diferentes campos existentes en un mensaje: ID, RTR,LENGTH y un array con los 8 Bytes de datos.
SINTAXIS
CANClass::msgCAN CAN_TxMsg; (Predefinida en la librería)
CANClass::msgCAN CAN_RxMsg; (Predefinida en la librería)
MIEMBROS
CAN_TxMsg.id: Identificador de mensaje(unint16_t)
CAN_TxMsg.header.rtr: Bit de Remote Transmission Request.
CAN_TxMsg.header.length: Representa en un entero de 4 bits, el tamaño de datos válidos en la trama
CAN_TxMsg.Data[]: Vector de 8 posiciones (unit8_t) que contiene la información del mensaje
EJEMPLO
#include <CAN.h>
void setup()
{
Serial.begin(115200);
Serial.println("Empezamos...");
CAN.begin(500);
}
void loop()
{
//Send trace
CAN_TxMsg.id=0x100;
CAN_TxMsg.header.rtr=0;
CAN_TxMsg.header.length=8;
CAN_TxMsg.data[0]=0x01;
CAN_TxMsg.data[1]=0x02;
CAN_TxMsg.data[2]=0x03;
CAN_TxMsg.data[3]=0x04;
CAN_TxMsg.data[4]=0x05;
CAN_TxMsg.data[5]=0x06;
CAN_TxMsg.data[6]=0x07;
CAN_TxMsg.data[7]=0x08;
if( CAN.send(&CAN_TxMsg) )
{
}
if ( CAN.CheckNew() )
{
if ( CAN.ReadFromDevice(&CAN_RxMsg) )
{
Serial.println("-------------------");
Serial.print("ID: ");
Serial.println(CAN_RxMsg.id,HEX);
Serial.print("RTR: ");
Serial.println(CAN_RxMsg.header.rtr,DEC);
Serial.print("Length: ");
Serial.println(CAN_RxMsg.header.length,DEC);
Serial.print("DATA: ");
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);
Serial.println("-------------------");
}
}
}