miércoles, 9 de febrero de 2011

struct msgCAN

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("-------------------"); 
 } 

}