Pages: 1 ... 4 5 [6] 7 8   Go Down
Author Topic: Moduli gsm  (Read 10112 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Shannon Member
****
Karma: 130
Posts: 10463
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mannaggia io parteciperei,ma senza modulo ho paura di fare più danni che altro.
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Pontecagnano (SA)
Offline Offline
Newbie
*
Karma: 0
Posts: 35
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Sr. Member
****
Karma: 0
Posts: 453
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Newbie
*
Karma: 0
Posts: 35
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

.. 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 Offline
Sr. Member
****
Karma: 0
Posts: 453
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Questa è la funzione che utilizzo per verificare ogni secondo se c'è una chiamata in arrivo:
Code:
//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 Offline
Newbie
*
Karma: 0
Posts: 35
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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
Quote
forse sono le autorizzazioni che ti danno prob prova a vedere

Grazie
Logged

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 453
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Quello che dicevo riguardava la funzione:
CallStatusWithAuth
Code:
/**********************************************************
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 Offline
Newbie
*
Karma: 0
Posts: 35
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

io l'ho impostato cosi
Code:
  case CALL_INCOM_VOICE:
    gsm.CallStatusWithAuth(number_incoming,0,0); 
se ho letto bene la funzione server per
Quote
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.
Code:
gsm.TurnOn(9600);          //module power on
  gsm.InitParam(PARAM_SET_1);//configure the module 
  gsm.Echo(0);
Ciao
Logged

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 453
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Newbie
*
Karma: 0
Posts: 35
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Sr. Member
****
Karma: 0
Posts: 453
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Newbie
*
Karma: 0
Posts: 45
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Newbie
*
Karma: 0
Posts: 35
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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 utilizzare
Quote
gsm.CallStatusWithAuth(number_incoming,1,3);
che controlla a partire dalla posizione 1 per 3 celle

Ma le funzioni
Quote
gsm.CallStatus();
e
Quote
gsm.CallStatusWithAuth(number_incoming,1,3)
sono indipendenti cioè se chiamo con un numero in rubrica, questo  viene riconosciuto solo dalla funzione
Quote
gsm.CallStatusWithAuth
ma non  dalla
Quote
gsm.CallStatus();
naturalmente se il numero non è in rubrica succede il contrario.
Logged

0
Offline Offline
Sr. Member
****
Karma: 0
Posts: 453
Arduino rocks
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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 Offline
Newbie
*
Karma: 0
Posts: 35
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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

Pages: 1 ... 4 5 [6] 7 8   Go Up
Jump to: