2016-08-05 1 views
2

J'utilise la bibliothèque GSMSHIELD avec un Arduino Mega et j'obtiens l'erreur suivante sur deux systèmes différents.La classe Arduino HWSerial 'n'a pas de membre nommé' read '

/Users/-----/Documents/Arduino/libraries/GSMSHIELD/SIM900.cpp: Dans la fonction membre 'int SIMCOM900 :: configandwait (char *)': /Users/-----/Documents/Arduino/libraries/GSMSHIELD/SIM900.cpp: 62: 18: erreur: 'class HWSerial' n'a pas de membre nommé 'read' connCode = _cell.read();

Je peux retracer ce retour dans le fichier GSM.h:

#include "HWSerial.h" 
... 

HWSerial _cell; 

et le fichier Arduino HardwareSerial.h:

public: 
inline HardwareSerial(
    volatile uint8_t *ubrrh, volatile uint8_t *ubrrl, 
    volatile uint8_t *ucsra, volatile uint8_t *ucsrb, 
    volatile uint8_t *ucsrc, volatile uint8_t *udr); 
void begin(unsigned long baud) { begin(baud, SERIAL_8N1); } 
void begin(unsigned long, uint8_t); 
void end(); 
virtual int available(void); 
virtual int peek(void); 
virtual int read(void); 
<snip> 

Je ne peux pas pour la vie de me comprendre pourquoi cela ne compilera pas, sauf s'il s'agit d'un problème de version de système de développement Arduino (1.6.9) ...

Je ne trouve aucune information sur les versions de l'IDE sur lesquelles la bibliothèque a été écrite/testée.

Des idées?

+0

Les distributions alias "boards" peuvent avoir un noyau totalement différent d'arduino, par exemple String sans c_str() etc. De tels cas ont une image très similaire à Votre problème. Source Vous voyez, n'est probablement pas en train de travailler. –

+0

Oui, je comprends cela. Mais cette bibliothèque est faite pour Uno ou Mega, contrôlée par un #ifdef, donc il est supposé * travailler avec ce forum. Cela fonctionne pour l'Uno, mais qui utilise la série de logiciels, je veux utiliser la série de matériel du Mega. C'est pourquoi j'ai pensé qu'il pourrait s'agir d'un problème de version ... – Arana

+0

Avez-vous réussi à le faire fonctionner? – CallMeLaNN

Répondre

0

Assurez-vous que vous supprimez la première ligne HWSerial.h de //#define MEGA à #define MEGA

Il y a deux endroits pour vous décommentez define pour que vous puissiez utiliser Mega au lieu de la carte Uno. C'est dans GSM.h et HWSerial.h!