Loading...
Pages: 1 [2]   Go Down
Author Topic: Chiarificazione inserimento nuovi metodi in libreria  (Read 423 times)
0 Members and 1 Guest are viewing this topic.
Cagliari
Offline Offline
Faraday Member
**
Karma: 49
Posts: 3000
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Sembra che la libreria mal digerisca le variazioni alla libreria print e al write apportati con l'IDE 1.0 e 1.0.1
Stai già provando con la nuova libreria? --> http://code.google.com/p/gsm-shield-arduino/downloads/list
« Last Edit: October 17, 2012, 12:12:45 pm by PaoloP » Logged

IDE 1.0.4 - Arduino UNO R3 - Ethernet Shield R3 - DCF77 Module - Adafruit Data Loggin Shield - LCD 16x2 RGB positive backlight - i2c LCD backpack - RTC 1307 Board - Saleae Compatibile Logic Analyzer 8ch 24Mhz - ATtiny2313 ProtoBoard - Xino Board - ATtiny 4313 - Arduino 2009 - Arduino USB Serial Ligth - DS18B20 - LM35DZ - ShiftRegister - TL431 - ATtiny 85
Ultimi acquisti:
CodeBender: http://codebender.cc/register/?referrer=PaoloP

Offline Offline
Jr. Member
**
Karma: 0
Posts: 68
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Si ho provato anche con la nuova libreria a me sembra che non riconosca uint8_t in quanto nell'errore di compilazione mi dà ambiguos che ne pensi?
Logged

Offline Offline
Jr. Member
**
Karma: 0
Posts: 68
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Mi correggo il problema non è con uint8_t ma quando si cerca di scrivere un metodo uint8_t  *comm, qualcuno saprebbe spiegarmi il perchè? e cosa più importante, come eventualmente risolvere???
Logged

MC
Offline Offline
God Member
*****
Karma: 9
Posts: 670
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ma tu vuoi come parametro * uint_8t  o uint8_t ?
Non è la stessa cosa.
E poi a questo punto penso che ti dia ambiguos perchè alla fine *uint8_t e  *char è pressochè la stessa cosa.
Pre vedere se è questo il problema aggiungi un parametro fittizio sia sul prototipo che sull'implementazione

void SIMCOM900::SimpleWrite(uint8_t * comm,boolean flag)
{
   _cell.write(comm);
}

e poi ovviamente aggiungi un valore true o false fittizio anche sulla chiamata.

Logged

Vi è una spiegazione scientifica a tutto.
La fede è solo quell'anello che si porta al dito dopo il matrimonio.

Offline Offline
Jr. Member
**
Karma: 0
Posts: 68
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ti spiego il mio problema,praticamente stò cercando di implementare una libreria per il protocollo mqtt,esiste già una versione per ethernet, io stò cercando di modificare questa per utilizzarla con il modulo gsm, quello che devo fare inviare alcuni dati al server per farmi accettare la connessione tramite questo tipo di protocollo,quindi stò utilizzando il SimpleWrite  per mandare questi dati ti posto il codice di un metodo che ho scritto:

Code:
boolean PubSubClientGSM::connect(char *id, char* willTopic, uint8_t willQos, uint8_t willRetain, char* willMessage) {
   if (!connected()) {
      int result = 0;
     
      if (domain != NULL) {
        result = _client.connectTCP(this->domain, this->port);
      } else {
        result = _client.connectTCP(this->domain, this->port);
      }
     
      if (result) {
         nextMsgId = 1;
         uint8_t d[9] = {0x00,0x06,'M','Q','I','s','d','p',MQTTPROTOCOLVERSION};
         uint8_t length = 0;
         unsigned int j;
         for (j = 0;j<9;j++) {
            buffer[length++] = d[j];
         }
         if (willTopic) {
            buffer[length++] = 0x06|(willQos<<3)|(willRetain<<5);
         } else {
            buffer[length++] = 0x02;
         }
         buffer[length++] = ((MQTT_KEEPALIVE) >> 8);
         buffer[length++] = ((MQTT_KEEPALIVE) & 0xff);
         length = writeString(id,buffer,length);
         if (willTopic) {
            length = writeString(willTopic,buffer,length);
            length = writeString(willMessage,buffer,length);
         }
         gsm.WriteMQTT(MQTTCONNECT,buffer,length);
         lastOutActivity = millis();
         lastInActivity = millis();
         
            unsigned long t= millis();
            if (t-lastInActivity > MQTT_KEEPALIVE*1000) {
               _client.disconnectTCP();
               return false;
            }
         
         uint16_t len = readPacket();
         
         if (len == 4 && buffer[3] == 0) {
            lastInActivity = millis();
            pingOutstanding = false;
            return true;
         }
      }
      _client.disconnectTCP();
 
}   
   return false;
}

ho scritto anche un metodo

Code:
void SIMCOM900::WriteMQTT(int mqttcn, uint8_t* buff, int len)
{
        SimpleWrite(mqttcn);
        delay(500);               
        SimpleWrite(buff);
        delay(500);
        SimpleWrite(len);
}


il problema sorge sull'invio di quel buffer che,come puoi vedere dal codice dovrebbe essere un uint8_t*,da qui il mio problema.
Scusa la mia dilungazione ma ho pensato che avendo tutto il problema ben chiaro ti possa essere più facile suggerirmi una soluzione.
Logged

Pages: 1 [2]   Go Up
Print
 
Jump to: