2017-08-13 4 views
0

Dans le fichier C dans simplesample_mqtt.c, qui connecte Arduino au concentrateur Azure IoT, j'ai besoin d'utiliser les bibliothèques IRsend et IrRemoteESP8266 pour envoyer un signal infrarouge avec le concentrateur Azure IoT.Nom de type inconnu 'IRsend'

  1. #include <IRremoteESP8266.h>
  2. #include <IRsend.h>
  3. IRsend irsend(10); // An IR LED is controlled by GPIO pin 4 (D2)

Je n'ai pas de problème quand j'utiliser ce code dans mon fichier Ardunio. Mais quand j'utilise ces includes dans un fichier C (implesample_mqtt.c), j'obtiens cette erreur de la ligne 3: "nom de type inconnu 'IRsend'".

enter image description here

erreur d'info complète: Arduino: 1.8.2 (Windows 10), le Conseil: "NodeMCU 0,9 (ESP-12 Module), 80 MHz, 115200, 4 M (3M spiffs)"

Dans le fichier inclus de croquis \ simplesample_mqtt.c: 29: 0:

C: \ Program Files (x86) \ Arduino \ bibliothèques \ IRremoteESP8266 \ src/IRsend.h: 29: 1: erreur: nom de type inconnu ' classe '

classe IRsend {

C: \ Program Files (x86) \ Arduino \ bibliothèques \ IRremoteESP8266 \ src/IRsend.h: 29: 14: erreur: attendu '=', ',', ';', 'asm' ou 'attribut' avant '{' jeton

classe iRsend {

simplesample_mqtt.c: 31: erreur: nom de type inconnu 'iRsend'

iRsend irsend (10); // Une DEL infrarouge est commandé par la broche GPIO 4 (D2)

simplesample_mqtt.c: 31: ERREUR: spécificateurs de déclaration attendue ou '...' avant constante numérique

IRsend irsend (10); // Une LED IR est contrôlé par la broche GPIO 4 (D2)

d'état de sortie 1 nom de type inconnu 'IRsend'

Ce rapport aurait plus d'informations avec "Afficher la sortie verbeuse lors de la compilation" l'option activée dans Fichier -> Préférences.

Répondre

0

J'ai résolu ce problème. La raison en est que principale ardunio est C++ et simplesample_mqtt.c est le code c et nous devons utiliser le code C++ dans le code c:

i fichier principal ardunio vous devez déclarer la fonction comme ceci:

extern "C" void TurnOn(); 
void TurnOn() 
{ 
    digitalWrite(RELAY_SONOFF, HIGH);  
    digitalWrite(LED_SONOFF, HIGH); 
} 

et utiliser cette fonction en code c:

void TurnOn(); 
EXECUTE_COMMAND_RESULT TurnOn(ContosoAnemometer* device) 
{ 
    (void)device; 
    TurnOn(); 
    (void)printf("Turning fan on.\r\n"); 
    return EXECUTE_COMMAND_SUCCESS; 
}