Pages: 1 [2]   Go Down
Author Topic: Chiarificazione inserimento nuovi metodi in libreria  (Read 1096 times)
0 Members and 1 Guest are viewing this topic.
Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 103
Posts: 6588
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

Code fast. Code easy. Codebender --> http://codebender.cc/?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: 13
Posts: 917
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
Jump to: