2014-06-22 2 views
0

je besoin d'aide avec un code pour convertir une entrée AnalogIn sur le LPC1768 mbed au numérique à utiliser par exemple la syntaxe CAN contrôleur.Système J'utilise estConversion entrée analogique au numérique CAN sur le LPC1768 mbed

if(can1.write(CANMessage(1337, &counter, 2))) { 
.......... 
} 

où "counter" est la donnée à transmettre et que je définis comme un int signé (l'exemple le définit cependant comme un char). Mais je continue à recevoir un message d'erreur

Error: No instance of constructor "mbed::CANMessage::CANMessage" matches the argument list in "project_test.cpp" 

La syntaxe du contrôleur CANMessage est

CANMessage(int _id, const char *_data, char _len = 8, CANType _type = CANData, CANFormat _format = CANStandard) { 

    len = _len & 0xF; 
    type = _type; 
    format = _format; 
    id  = _id; 
    memcpy(data, _data, _len); 
} 

Je ne comprends vraiment pas la syntaxe du contrôleur et comment l'appliquer. Toute aide pour expliquer serait appréciée. Merci

Répondre

0

Depuis CANMessage accepte un char * pour la paramter de données, vous pouvez convertir votre valeur int signé (ce qui est de 4 octets) à un unsigned char comme ceci:

unsigned char buf[0x8]; 
buf[0]=value & 0x000000ff; 
buf[1]=(value >> 8) & 0x000000ff; 
buf[2]=(value >> 16) & 0x000000ff; 
buf[3]=(value >> 24) & 0x000000ff; 

puis

if (can1.write(CANMessage(1337, &buf, 8))) { 
.......... 
} 
Questions connexes