Show Posts
|
|
Pages: 1 2 [3] 4 5
|
|
31
|
International / Software / Re: Chiarificazione inserimento nuovi metodi in libreria
|
on: October 16, 2012, 08:31:55 am
|
Si hai ragione, non sono un programmatore, ho cercato di creare questo metodo a causa dell'errore in fase di compilazione e cioè: C:\Users\Gianni\Documents\arduino-1.0.1\libraries\PubSubCLientGSM\PubSubClientGSM.cpp:203: error: no matching function for call to 'SIMCOM900::SimpleWrite(uint8_t*&, uint16_t&)' questo simbolo "&" è la e commerciale. In cosa sbaglio??? Grazie per il supporto sei molto gentile e spero anche paziente 
|
|
|
|
|
32
|
International / Software / Chiarificazione inserimento nuovi metodi in libreria
|
on: October 16, 2012, 04:42:27 am
|
|
Salve a tutti,
ho necessità di inserire dei nuovi metodi nella libreria sim900,in particolare mi servono dei metodi per inviare dati tramite un modulo gsm, ho scritto dei metodi per inviare questi dati, ma nella fase di compilazione del mio programma ho degli errori, da quello che riesco a capire è come se i metodo che ho scritto nella libreria non li leggesse proprio vi posto un pò di codice:
il metodo che ho scritto è il seguente:
void SIM900::SimpleWrite(uint8_t *&comm, uint16_t &comm1){ _cell.print(comm,comm1); }
questo nel fil .cpp e logicamente poi riportato nel file .h
void SimpleWrite(uint8_t *&comm, uint16_t &comm1);
non sono un esperto di programmazione quindi sicuramente ho commesso degli errori,vorrei capire quali e come risolvere
Questo è uno degli errori che mi dà in fase di compilazione del mio programma:
C:\Users\Gianni\Documents\arduino-1.0.1\libraries\PubSubCLientGSM\PubSubClientGSM.cpp:203: error: no matching function for call to 'SIMCOM900::SimpleWrite(uint8_t*&, uint16_t&)' C:\Users\Gianni\Documents\arduino-1.0.1\libraries\PubSubCLientGSM\/SIM900.h:30: note: candidates are: void SIMCOM900::SimpleWrite(char*) C:\Users\Gianni\Documents\arduino-1.0.1\libraries\PubSubCLientGSM\/SIM900.h:31: note: void SIMCOM900::SimpleWrite(const char*) C:\Users\Gianni\Documents\arduino-1.0.1\libraries\PubSubCLientGSM\/SIM900.h:32: note: void SIMCOM900::SimpleWrite(int) C:\Users\Gianni\Documents\arduino-1.0.1\libraries\PubSubCLientGSM\/SIM900.h:33: note: void SIMCOM900::SimpleWrite(const __FlashStringHelper*)
Grazie in anticipo a chi mi vorrà dare supporto.
|
|
|
|
|
33
|
International / Software / Re: Comandi sizeof e strlen
|
on: September 26, 2012, 03:43:28 am
|
|
Allora il tuo consiglio mi sembra molto sensato, ho utilizzato la malloc per allocare la memoria necessaria,questa funzione mi dovrebbe sostituire la memset giusto? ora per inserire i parametri, quella lista di valori presenti nel memcpy?
char *packet=(char*) malloc(sizeof(fixed_header)+sizeof(var_header)+strlen(id)); // Alloca memoria per contenere i parametri di connessione per il server memcpy(packet,fixed_header,sizeof(fixed_header)); memcpy(packet+sizeof(fixed_header),var_header,sizeof(var_header)); memcpy(packet+sizeof(fixed_header)+sizeof(var_header),id,strlen(id));
ti chiedo scusa,ma mi stò approcciando adesso alla programmazione in C e tu mi sembri molto competente,grazie.
|
|
|
|
|
34
|
International / Software / Re: Comandi sizeof e strlen
|
on: September 26, 2012, 02:17:59 am
|
|
Grazie per la risposta,
allora in C questa sintassi è giusta, sia per quanto riguarda l'inizializzazione del vettore che il resto. Per quanto riguarda l'array dinamico è proprio quello che hai detto tu e quindi mi sorge il dubbio che il compilatore non supporti questa funzione, si potrebbe ovviare a questo con qualcosa di alternativo?
char *id
|
|
|
|
|
35
|
International / Software / Re: Comandi sizeof e strlen
|
on: September 25, 2012, 12:07:11 pm
|
|
vi posto il codice, penso che il problema non sia tanto dovuto ai due comandi quanto al fatto che con arduino nn si possano creare array dinamici. Comunque questo è il codice vedete dove sbaglio, e grazie per il supporto.
/*variable header*/ uint8_t var_header[] = {0x00,0x06,0x4d,0x51,0x49,0x73,0x64,0x70,0x03,0x02,0x00,KEEPALIVE/500,0x00,strlen(id)}; /*fixed header: 2 bytes, big endian*/ uint8_t fixed_header[] = {MQTTCONNECT,12+strlen(id)+2};
char packet[sizeof(fixed_header)+sizeof(var_header)+strlen(id)]; memset(packet,0,sizeof(packet)); memcpy(packet,fixed_header,sizeof(fixed_header)); memcpy(packet+sizeof(fixed_header),var_header,sizeof(var_header)); memcpy(packet+sizeof(fixed_header)+sizeof(var_header),id,strlen(id));
|
|
|
|
|
36
|
International / Software / Comandi sizeof e strlen
|
on: September 25, 2012, 09:57:39 am
|
|
Salve a tutti,
qualcuno sa per caso come utilizzare i comandi sopracitati in arduino? Io ho provato ad utilizzarli e mi danno errore in compilazione
Grazie in anticipo per le risposte.
|
|
|
|
|
39
|
International / Software / Re: Inviare dei Byte ad Patchube(Cosm) tramite sim908
|
on: September 14, 2012, 09:41:41 am
|
|
Ho pensato la stessa cosa, adesso stò cercando di inviare una richiesta di connessione con il protocollo MQTT, l'ho inviata sotto forma di byte a coms, che, da quanto leggo, mi dovrebbe rispondere con un codice che mi dice se accetta o meno la connessione, ma non mi risponde nulla... non so se magari è possibile mandare delle stringhe, invece dei byte, per chiedere la connessione, secondo te?
|
|
|
|
|
42
|
International / Software / Re: Inviare dei Byte ad Patchube(Cosm) tramite sim908
|
on: September 14, 2012, 04:00:55 am
|
|
Ciao, scusa hai ragione, sono stato un pò vago, in pratica sono riuscito finalmente ad inviare al mio server di prova una stringa, adesso stavo cercando di scrivere un metodo per farlo, è ho un errore in compilazione:
error: extra qualification 'InetGSM::' on member 'mqttConnect'
il metodo è il seguente:
int InetGSM::mqttConnect(const char* server, int port, char* msg,char* result, int resultlength) { boolean connected=false; int n_of_at=0; int length_write; char end_c[2]; end_c[0]=0x1a; end_c[1]='\0';
while(n_of_at<3){ if(!connectTCP(server, port)){ #ifdef DEBUG_ON Serial.println("DB:NOT CONN"); #endif n_of_at++; } else{ connected=true; n_of_at=3; } }
if(!connected) return 0; gsm.SimpleWrite(msg); gsm.SimpleWrite("\n\n"); gsm.SimpleWrite(end_c);
switch(gsm.WaitResp(10000, 100, "SEND")){ case RX_TMOUT_ERR: return 0; break; case RX_FINISHED_STR_NOT_RECV: return 0; break; }
#ifdef DEBUG_ON Serial.println("DB:SENT"); #endif int res= gsm.read(result, resultlength);
return res; }
|
|
|
|
|