0
Offline
Tesla Member
Karma: 83
Posts: 8243
:(){:|:&};:
|
 |
« Reply #75 on: May 12, 2011, 03:55:41 am » |
mannaggia io parteciperei,ma senza modulo ho paura di fare più danni che altro.
|
|
|
|
|
Logged
|
|
|
|
|
Pontecagnano (SA)
Offline
Newbie
Karma: 0
Posts: 33
Arduino rocks
|
 |
« Reply #76 on: June 04, 2011, 11:03:51 am » |
Ciao volevo segnalare, penso un bug.
Ho caricato lo sketch gsm_shield, funziona bene al 99%, ma quando sul modulo ricevo una chiamata dal numero presente nella rubrica non viene segnalato nulla. Spero di essere stato chiaro.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Sr. Member
Karma: 0
Posts: 453
Arduino rocks
|
 |
« Reply #77 on: June 04, 2011, 11:10:08 am » |
A me funziona utilizzando la funzione: int call=gsm.CallStatus();//leggo lo stato del modulo GSM che mi restituisce se o una chiamata in arrivo, attivo,...
|
|
|
|
|
Logged
|
|
|
|
|
Pontecagnano (SA)
Offline
Newbie
Karma: 0
Posts: 33
Arduino rocks
|
 |
« Reply #78 on: June 04, 2011, 11:31:37 am » |
.. ho queste righe .. call=gsm.CallStatus(); Serial.println(call);
se il numero è presente in rubrica mi da 0, se non cè mi visualizza 1.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Sr. Member
Karma: 0
Posts: 453
Arduino rocks
|
 |
« Reply #79 on: June 04, 2011, 11:37:38 am » |
Questa è la funzione che utilizzo per verificare ogni secondo se c'è una chiamata in arrivo: //Funzione che controlla se chiamata in arrrivo void Check_Call() { char number[15];//array dove salvo il numero chiamante int call=gsm.CallStatus();//leggo lo stato del modulo GSM switch (call) { case CALL_NONE: Serial.println("no call"); break; case CALL_INCOM_VOICE: gsm.CallStatusWithAuth(number,0,0); if(strcmp(number,"")!=0){ Serial.print("incoming voice call from "); Serial.println(number); delay(1000); gsm.HangUp();//riattacco la chiamata //funzione } break; case CALL_ACTIVE_VOICE: Serial.println("active voice call"); break; case CALL_NO_RESPONSE: Serial.println("no response"); break; } return; }
forse sono le autorizzazioni che ti danno prob prova a vedere
|
|
|
|
|
Logged
|
|
|
|
|
Pontecagnano (SA)
Offline
Newbie
Karma: 0
Posts: 33
Arduino rocks
|
 |
« Reply #80 on: June 04, 2011, 12:10:46 pm » |
si infatti è un sistema che aggira l'ostacolo, pero era piu comodo inserire il numero in rubrica. Scusami ma non ho capito quello che hai scritto prima forse sono le autorizzazioni che ti danno prob prova a vedere Grazie
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Sr. Member
Karma: 0
Posts: 453
Arduino rocks
|
 |
« Reply #81 on: June 04, 2011, 01:01:50 pm » |
Quello che dicevo riguardava la funzione: CallStatusWithAuth /********************************************************** Method checks status of call(incoming or active) and makes authorization with specified SIM positions range
phone_number: a pointer where the tel. number string of current call will be placed so the space for the phone number string must be reserved - see example first_authorized_pos: initial SIM phonebook position where the authorization process starts last_authorized_pos: last SIM phonebook position where the authorization process finishes
Note(important): ================ In case first_authorized_pos=0 and also last_authorized_pos=0 the received incoming phone number is NOT authorized at all, so every incoming is considered as authorized (CALL_INCOM_VOICE_NOT_AUTH is returned)
return: CALL_NONE - no call activity CALL_INCOM_VOICE_AUTH - incoming voice - authorized CALL_INCOM_VOICE_NOT_AUTH - incoming voice - not authorized CALL_ACTIVE_VOICE - active voice CALL_INCOM_DATA_AUTH - incoming data call - authorized CALL_INCOM_DATA_NOT_AUTH - incoming data call - not authorized CALL_ACTIVE_DATA - active data call CALL_NO_RESPONSE - no response to the AT command CALL_COMM_LINE_BUSY - comm line is not free **********************************************************/
|
|
|
|
|
Logged
|
|
|
|
|
Pontecagnano (SA)
Offline
Newbie
Karma: 0
Posts: 33
Arduino rocks
|
 |
« Reply #82 on: June 04, 2011, 01:38:00 pm » |
io l'ho impostato cosi case CALL_INCOM_VOICE: gsm.CallStatusWithAuth(number_incoming,0,0); se ho letto bene la funzione server per verifica lo stato delle chiamate (in entrata o in corso) e autorizza le posizioni di SIM; L'ho inserito anche prima del controllo switch (call) , ma mi resttuisce vuoto, nel caso di numero presente in rubrica. il setup iniziale è questo. gsm.TurnOn(9600); //module power on gsm.InitParam(PARAM_SET_1);//configure the module gsm.Echo(0); Ciao
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Sr. Member
Karma: 0
Posts: 453
Arduino rocks
|
 |
« Reply #83 on: June 04, 2011, 02:06:04 pm » |
Ok allora vedendo meglio la libreria con la funzione: CallStatus torna se c'è una chiamata in arrivo o attiva o nessuna ma senza che nella stringa di risposta ci sia il numero chiamante Per la funzione : CallStatusWithAuth invece ritorna anche il numero ma solo se autorizzato (da quello che ho visto). Utilizza la funzione che ti ho postato e sei ok. Se fai la CallStatusWithAuth senza che non ci siano chiamate in arrivo è ovvio che restituisca vuoto.
|
|
|
|
|
Logged
|
|
|
|
|
Pontecagnano (SA)
Offline
Newbie
Karma: 0
Posts: 33
Arduino rocks
|
 |
« Reply #84 on: June 04, 2011, 02:46:02 pm » |
si grazie .. la tua funzione "funziona", pero volevo utilizzare la rubrica per la verifica di un numero autenticato, ma una volta memorizzato il numero , non riconosce la chiamata , lo stato è sempre "no call" , appena cancello il numero dalla rubrica la chiamata viene riconosciuta.
Grazie..
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Sr. Member
Karma: 0
Posts: 453
Arduino rocks
|
 |
« Reply #85 on: June 05, 2011, 04:39:12 am » |
Se hai il numero salvato in rubrica allora devi cambiare gli indici di: gsm.CallStatusWithAuth(number_incoming,0,0); cioè modificare gli 0 e mettere l'indirizzo di rubrica di partenza e quello di fine in modo che la libreria cerchi il numero in questo intervallo.
|
|
|
|
|
Logged
|
|
|
|
|
Pignola (PZ)
Offline
Newbie
Karma: 0
Posts: 45
Arduino rocks
|
 |
« Reply #86 on: June 12, 2011, 09:49:42 am » |
Salve ragazzi, ho da poco acquistato lo shield da futuraelettronica e devo dire che va benissimo. Ho scritto qualche altra funzione ma adesso vorrei interrogare il modulo con altri comandi AT. Stavo provando ad esempio con il comando AT+COPS=? per leggere il nome della rete e quindi stavo cercando di implementare tale funzione direttamente nella libreria e più precisamente nel file GSM_Shield.cpp e qui iniziano i problemi!!! Invio il comando con il comando seguente mySerial.print("AT+COPS=?"); ma poi non riesco a leggere la risposta. Qualche dritta?
|
|
|
|
|
Logged
|
|
|
|
|
Pontecagnano (SA)
Offline
Newbie
Karma: 0
Posts: 33
Arduino rocks
|
 |
« Reply #87 on: June 12, 2011, 01:21:39 pm » |
Se hai il numero salvato in rubrica allora devi cambiare gli indici di: gsm.CallStatusWithAuth(number_incoming,0,0); cioè modificare gli 0 e mettere l'indirizzo di rubrica di partenza e quello di fine in modo che la libreria cerchi il numero in questo intervallo.
Ho smatettato un po, per far riconoscere un numero inserito in rubrica occorre utilizzaregsm.CallStatusWithAuth(number_incoming,1,3);
che controlla a partire dalla posizione 1 per 3 celle Ma le funzioni gsm.CallStatus(); e gsm.CallStatusWithAuth(number_incoming,1,3) sono indipendenti cioè se chiamo con un numero in rubrica, questo viene riconosciuto solo dalla funzione gsm.CallStatusWithAuth ma non dalla gsm.CallStatus(); naturalmente se il numero non è in rubrica succede il contrario.
|
|
|
|
|
Logged
|
|
|
|
|
0
Offline
Sr. Member
Karma: 0
Posts: 453
Arduino rocks
|
 |
« Reply #88 on: June 12, 2011, 04:36:53 pm » |
Scusa ma gsm.CallStatus(); ti restituisce solo se c'è una chiamata in arrivo o una attiva o niente mentre gsm.CallStatusWithAuth(number_incoming,0,0); ritorna il numero del chiamante. Se vuoi vedere se il numero è in memoria allora (come hai fatto) cambi gli indici 0,0. Riassumendo se vuoi che tu veda solo numeri in memoria allora metti gli indici tra cui cercare mentre se vuoi accettare tutti i numeri metti 0,0. Forse pero un motivo per cui non ti identifica il chiamante potrebbe essere che il numero salvato non ha il +39 iniziale. Prova a vedere
|
|
|
|
|
Logged
|
|
|
|
|
Pontecagnano (SA)
Offline
Newbie
Karma: 0
Posts: 33
Arduino rocks
|
 |
« Reply #89 on: June 16, 2011, 03:53:06 am » |
Scusa ma gsm.CallStatus(); ti restituisce solo se c'è una chiamata in arrivo o una attiva o niente mentre gsm.CallStatusWithAuth(number_incoming,0,0); ritorna il numero del chiamante. Se vuoi vedere se il numero è in memoria allora (come hai fatto) cambi gli indici 0,0. Riassumendo se vuoi che tu veda solo numeri in memoria allora metti gli indici tra cui cercare mentre se vuoi accettare tutti i numeri metti 0,0. Forse pero un motivo per cui non ti identifica il chiamante potrebbe essere che il numero salvato non ha il +39 iniziale. Prova a vedere
Ti ringrazio del tuo aiuto. I numeri sono salvati con il +39. Il fattore fondamentale è nella funzione gsm.callstatus() che restituisce zero se il numero è in rubrica, quindi non va nel case dove posso utilizzare CallStatusWithAuth.. con gli indici cambiati.
|
|
|
|
|
Logged
|
|
|
|
|
|