'***************************************************
'* MF535
'* Video GSM
'* Si basa su cellulare telit GM862
'* Il sistema è basato su un PIC16F876 lavorante a 20 MHz
'* Ultimo aggiornamento 21/02/2004
'******************************************************************************
DEFINE OSC 20
DEFINE DEBUG_REG PORTB
DEFINE DEBUG_BIT 5
DEFINE DEBUG_BAUD 9600
DEFINE DEBUG_MODE 0
'Configurazione usart 9600
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 20h
DEFINE HSER_BAUD 9600
DEFINE HSER_CLROERR 1 'Hser clear overflow automatically
@ DEVICE HS_OSC
@ DEVICE BOD_OFF
SYMBOL INC =PORTC.0 'Ingresso di allarme a contatto
SYMBOL INV =PORTC.1 'Ingresso di allarme a tensione
SYMBOL MOV =PORTA.3 'Ingresso di allarme su movimento
SYMBOL PIR =PORTA.2 'Ingresso di allarme PIR
SYMBOL POWERLT =PORTA.1 'Alimentazione regolatore
SYMBOL POWERGSM =PORTC.4 'ON/OFF GSM
SYMBOL RESET =PORTC.5 'RESET GSM
SYMBOL RING =PORTB.1 'RING GSM
SYMBOL LEDGSM =PORTB.0 'Status led GSM
SYMBOL LEDV =PORTC.2 'LED VERDE
SYMBOL LEDR =PORTC.3 'LED ROSSO
SYMBOL P1 =PORTA.5 'PULSANTE
Input INC
Input INV
Input MOV
Input PIR
Input RING
Input LEDGSM
Output POWERLT
Output POWERGSM
Output RESET
Output LEDV
Output LEDR
TMP VAR BYTE
TMP1 VAR BYTE
TMP2 VAR BYTE
TMP3 VAR BYTE
TMP4 VAR BYTE
ERR1 VAR BYTE
ERR2 VAR BYTE
FOTO VAR BYTE
ABILITATO VAR BYTE
SMS VAR BYTE[80]
MITT VAR BYTE[20]
LUNMITT VAR BYTE
LUNSMS VAR BYTE
FRASE VAR BYTE
TIME VAR WORD
GEST VAR BYTE
NUMERO VAR BYTE
FOTOABILITATA VAR BYTE
SMSABILITATO VAR BYTE
PIRABILITATO VAR BYTE
MOVABILITATO VAR BYTE
AUXABILITATO VAR BYTE
RESETTARE VAR BYTE
TENTATIVI VAR BYTE
MESSAGGIO VAR BYTE
LOW RESET
LOW POWERGSM
LOW POWERLT
PAUSE 1000
Clear
ADCON0=0
ADCON1=7
OPTION_REG.7=1 'DISAbilita resistenze di pull-up
EEPROM 200,[1] 'NELLA POSIZIONE 100 METTO SE IL DISPOSITIVO DEVE ESSERE ABILITANO O NO (SI)
EEPROM 201,[0,0,1] 'tempo di inibizione 1 minuto
EEPROM 205,[0] 'PRESENZA NUMERO ABILITATO
EEPROM 206,[1] 'FOTO ABILITATA
EEPROM 207,[1] 'SMS ABILITATO
EEPROM 208,[0] 'PIR DISABILITATO
EEPROM 209,[0] 'MOV DISABILITATO
EEPROM 210,[1] 'AUX DISABILITATO
EEPROM 220,[0] 'NUMERO DI TENTATIVI DI FARE LA FOTO
EEPROM 225,[0] 'messaggio di allarme
High LEDR
LOW LEDV
For TMP1=0 TO 5
Toggle LEDR
Pause 500
Next TMP1
Low LEDR
WRITE 7,1
IF INC=0 THEN
WRITE 7,0
ENDIF
WRITE 8,1
IF INV=0 THEN
WRITE 8,0
ENDIF
GOTO START
RIAVVIA:
LOW POWERLT
PAUSE 5000
'LOW LEDR
'HIGH LEDV
'GOSUB ON_OFF
'PAUSE 15000
START:
DEBUG "Sistem startup v4.2",13,10
LOW LEDR
HIGH LEDV
GOSUB ON_OFF
low LEDV
CLEAR
TIME=2
TMP1=0
RESETUP:
FOR TMP=1 TO 16
TOGGLE LEDV
TOGGLE LEDR
PAUSE 500
NEXT TMP
high LEDV
LOW LEDR
SETUP:
DEBUG " SETUP ",#TMP1,10,13
TMP1=TMP1+1
IF TMP1>5 THEN
GOTO start
ENDIF
'PAUSE 2000
'HSEROUT ["AT&F",13]
'HSERIN 2000,SETUP,[wait ("OK")]
'DEBUG "AT OK ",10,13
PAUSE 2000
HSEROUT ["AT&F",13]
HSERIN 3000,RESETUP,[wait ("OK")]
PAUSE 2000
HSEROUT ["AT+CMGF=1",13]
HSERIN 2000,RESETUP,[wait ("OK")]
PAUSE 1000
HSEROUT ["AT+GMR",13]
HSERIN 2000,RESETUP,[wait ("OK")]
PAUSE 1000
HSEROUT ["AT#CAP=1",13]
HSERIN 2000,RESETUP,[wait ("OK")]
PAUSE 1000
HSEROUT ["AT+CGDCONT?",13]
HSERIN 2000,RESETUP,[wait ("OK")]
PAUSE 1000
'HSEROUT ["AT#PASSW?",13]
'HSERIN 2000,RESETUP,[wait ("OK")]
'PAUSE 1000
HSEROUT ["AT+CLIP=1",13]
HSERIN 2000,RESETUP,[wait ("OK")]
'DEBUG "TEXT OK ",10,13
PAUSE 1000
HSEROUT ["AT#CAMOFF",13]
HSERIN 2000,RESETUP,[wait ("OK")]
'DEBUG "CAMERA SPENTA",10,13
PAUSE 1000
TMP1=0
HSEROUT ["AT+CGSN",13]
HSERIN 2000,RESETUP,[SKIP 5,TMP]
while TMP<>13
hserin 10000,RESETUP,[TMP]
sms[tmp1]=TMP
tmp1=tmp1+1
DEBUG TMP
wend
DEBUG "IMEI -> ",str sms \TMP1,13,10
FOR TMP=0 TO 5
TMP2 = TMP1-6+TMP
WRITE TMP,SMS[TMP2]
PAUSE 10
NEXT TMP
DEBUG "IMEI "
FOR TMP=0 TO 5
READ TMP,TMP1
DEBUG TMP1
NEXT TMP
PAUSE 500
tmp=0
main:
PAUSE 500
GOSUB LEGGISMS
GOSUB CHIAMATA
read 225,messaggio
IF MESSAGGIO=1 THEN
write 225,0
GOSUB GESTSMS
ENDIF
IF TIME>4THEN
TIME=TIME-2
ENDIF
HIGH LEDV
'LOW LEDR
DEBUG "time ",#TIME,13,10
FOR TMP4=0 TO 150
IF P1=0 THEN 'DA METTERE
'IF TMP4=100 THEN 'DA TOGLIERE
' WRITE 220,3 'SCRIVO CHE DEVO FARE 3 TENTATIVI DI INVIO FOTO
GOTO SCATTAFOTO
ENDIF
IF FOTO=1 THEN
WRITE 220,3 'SCRIVO CHE DEVO FARE 3 TENTATIVI DI INVIO FOTO
GOTO SCATTAFOTO
ENDIF
PAUSE 1
READ 200,ABILITATO
READ 7,TMP2
READ 8,TMP3
READ 208,PIRABILITATO
READ 209,MOVABILITATO
READ 210,AUXABILITATO
'READ 220,TENTATIVI
'IF TENTATIVI>1 THEN
' TENTATIVI=TENTATIVI-1 'DECREMENTO I TENTATIVI
' WRITE 220,TENTATIVI
' GOTO SCATTAFOTO
'ENDIF
IF (((INC<>TMP2 OR INV<>TMP3)AND AUXABILITATO=1) OR (MOV=0 AND MOVABILITATO=1) OR (PIR=1 AND PIRABILITATO=1) ) AND TIME<5 AND ABILITATO=1 THEN
WRITE 220,3 'SCRIVO CHE DEVO FARE 3 TENTATIVI DI INVIO FOTO
write 225,1
'DEBUG "INC ",#INC," - TMP2 ",#TMP2,10,13
'DEBUG "INV ",#INV," - TMP3 ",#TMP3,10,13
'DEBUG "AUXAB ",#AUXABILITATO,10,13
'DEBUG "MOV ",#MOV," - MOVAB ",#MOVABILITATO,10,13
'DEBUG "PIR ",#PIR," - PIRAB ",#PIRABILITATO,10,13
'DEBUG "AB ",#ABILITATO,10,13
IF TIME<>1 THEN
TIME=0
READ 201,TMP
TIME=TIME+(TMP*100)
'debug "time1 ",#time,10,13
READ 202,TMP
TIME=TIME+(TMP*10)
'debug "time2 ",#time,10,13
READ 203,TMP
TIME=TIME+TMP
'debug "time3 ",#time,10,13
TIME=TIME*60
' debug "time ",#time,10,13
ELSE
TIME=2
ENDIF
READ 206,FOTOABILITATA
IF FOTOABILITATA=1 THEN
TMP2=0
SCATTAFOTO:
DEBUG "TENTATIVI ",#TENTATIVI,10,13
FOTO = 0
TMP2=TMP2+1
IF TMP2>10 THEN GOTO main
DEBUG "SCATTAFOTO",10,13
HIGH LEDR
LOW LEDV
pause 500
' GOTO MAIN '**** DA TOGLIERE
HSEROUT ["AT#CAMON",13]
HSERIN 2000,SCATTAFOTO,[wait ("OK")]
pause 20
HSEROUT ["AT+CREG?",13]
HSERIN 2000,SCATTAFOTO,[wait ("+CREG: "),TMP,TMP1,TMP1]
PAUSE 100
IF TMP="0" AND TMP1="1" THEN
DEBUG "REG",10,13
ELSE
DEBUG "NON REG",10,13
for tmp=1 to 5
toggle ledv
low ledr
pause 1000
next tmp
GOTO SCATTAFOTO
ENDIF
HSEROUT ["AT+CGATT?",13]
HSERIN 2000,SCATTAFOTO,[wait ("+CGATT: "),TMP1]
PAUSE 100
IF TMP1="1" THEN
DEBUG "GPRS REG",10,13
ELSE
DEBUG "GPRS NON REG",10,13
PAUSE 1000
' HSEROUT ["AT+CGATT=1",13]
' PAUSE 1000
for tmp=1 to 5
toggle ledr
low ledv
pause 1000
IF P1=0 THEN
HIGH LEDR
GOTO FAIFOTO
ENDIF
next tmp
GOTO SCATTAFOTO
ENDIF
HSEROUT ["AT#MONI",13]
PAUSE 1000
HSEROUT ["AT+CSQ",13]
PAUSE 1000
FAIFOTO:
'DEBUG "CAMERA OK ",10,13
PAUSE 1000
'DEBUG "SCATTO LA FOTO..",10,13
HSEROUT ["AT#TPHOTO",13]
' HSERIN 10000,RIAVVIA,[TMP]
HSERIN 5000,SCATTAFOTO,[wait ("K")]
DEBUG "FATTA...",10,13
high ledv
PAUSE 1000
HSEROUT ["AT#CAMOFF",13]
HSERIN 2000,SCATTAFOTO,[wait ("OK")]
DEBUG "SPENTA",10,13
pause 2000
'HSEROUT ["AT#SKTRST",13]
'HSERIN 2000,SCATTAFOTO,[wait ("OK")]
'DEBUG "RESET SOK",10,13
'pause 2000
' GOTO MAIN '**** DA TOGLIERE
TMP2=0
INVIAFOTO:
HIGH LEDV
TMP2=TMP2+1
IF TMP2=10 THEN GOTO continua
DEBUG "INVIAFOTO",10,13
' HSEROUT ["AT#EADDR=",34,"MAGMA78@VODAFONE.IT",34,13]
' HSEROUT ["AT#EADDR=",34,"3200109484@WIND.IT",34,13]
HSEROUT ["AT#USERID=",34]
for tmp=130 to 160
READ TMP,TMP1
IF tmp1<>"#" THEN
HSEROUT [TMP1]
ELSE
HSEROUT [34,13]
TMP=250
ENDIF
NEXT TMP
HSERIN 10000,INVIAFOTO,[wait ("OK")]
PAUSE 1000
HSEROUT ["AT#USERID?",13]
PAUSE 2000
HSEROUT ["AT#PASSW=",34]
for tmp=160 to 170
READ TMP,TMP1
IF tmp1<>"#" THEN
HSEROUT [TMP1]
ELSE
HSEROUT [34,13]
TMP=250
ENDIF
NEXT TMP
HSERIN 10000,INVIAFOTO,[wait ("OK")]
PAUSE 1000
HSEROUT ["AT#EADDR=",34]
FOR TMP=130 TO 200
GOSUB ESTRAPOLA
NEXT TMP
READ 9,GEST
SELECT CASE GEST
CASE 1
HSEROUT ["@TIM.IT",34,13]
CASE 2
HSEROUT ["@VODAFONE.IT",34,13]
CASE 3
HSEROUT ["@WIND.IT",34,13]
END SELECT
' HSEROUT ["AT#EADDR=",34,"ALLARME",34,13]
HSERIN 2000,INVIAFOTO,[wait ("OK")]
DEBUG "EMAIL OK ",10,13
PAUSE 500
' HSEROUT ["AT#ESMTP=",34,"MAIL.POSTA.TIM.IT",34,13] 'ATTENZIONE TOLTO
' HSERIN 2000,INVIAFOTO,[wait ("OK")]
HSEROUT ["AT#ESMTP=",34]
FOR TMP=100 TO 200
GOSUB ESTRAPOLA
NEXT TMP
HSEROUT [34,13]
HSERIN 2000,INVIAFOTO,[wait ("OK")]
DEBUG "SMTP OK ",10,13
' HSEROUT ["AT#SEMAIL=",34,"BORIS.LANDONI@FUTURANET.IT",34,",",34,"FOTO",34,",1",13]
PAUSE 1000
HSEROUT ["AT#SEMAIL=",34]
FOR TMP=10 TO 50
GOSUB ESTRAPOLA
NEXT TMP
HSEROUT [34,",",34,"FOTO",34,",1",13]
PAUSE 1000
HSEROUT ["ALLARME",26]
'HSEROUT ["A",26]
DEBUG "INVIO IN CORSO",10,13
' PAUSE 20000
' DEBUG "PASSATI 20 SEC",10,13
HSERIN 60000,attendi,[wait ("O"),TMP]
'DEBUG "TMP ",TMP,13,10
IF TMP = "R" THEN
GOTO INVIAFOTO
ENDIF
GOTO INVIATA
attendi:
DEBUG "ATTENDI",10,13
HSERIN 60000,attendi2,[wait ("O"),TMP]
'DEBUG "TMP ",TMP,13,10
IF TMP = "R" THEN
GOTO INVIAFOTO
ENDIF
GOTO INVIATA
attendi2:
DEBUG "2",10,13
HSERIN 60000,attendi3,[wait ("O"),TMP]
'DEBUG "TMP ",TMP,13,10
IF TMP = "R" THEN
GOTO INVIAFOTO
ENDIF
GOTO INVIATA
attendi3:
DEBUG "3",10,13
HSERIN 60000,INVIAFOTO,[wait ("O"),TMP]
'DEBUG "TMP ",TMP,13,10
IF TMP = "R" THEN
GOTO INVIAFOTO
ENDIF
inviata:
DEBUG "INVIATA",10,13
PAUSE 5000
WRITE 220,0 'SCRIVO CHE DEVO NON DEVO PIù INVIARE LA FOTO PERCHè è ANDATA
RESETTARE=1
ENDIF
continua:
IF RESETTARE=1 THEN
RESETTARE=0
HSEROUT ["ATZ",13]
PAUSE 3000
DEBUG "reset hwd",10,13
low ledv
high reset
pause 200
low reset
for tmp=0 to 30
toggle ledr
pause 1000
next tmp
DEBUG "fine reset",10,13
low ledr
tmp1=0
goto resetup
ENDIF
ENDIF
NEXT TMP4
LOW LEDV
HSEROUT ["AT+CMGL=",34,"ALL",34,13]
HSERIN 10000,RIAVVIA,[TMP]
DEBUG "TMP dopo cmgl ",TMP,13,10
hserin 500,MAIN,[WAIT ("+CMS ERROR"),tmp]
DEBUG "riavvio ",tmp,13,10
' DEBUG STR SMS\15
GOTO RIAVVIA
goto main
ESTRAPOLA:
READ TMP,TMP1
PAUSE 5
IF TMP1<>"#" THEN
HSEROUT [TMP1]
ELSE
TMP=250
ENDIF
RETURN
GESTSMS:
DEBUG "GESTSMS ",13,10
READ 205,NUMERO
READ 207,SMSABILITATO
IF SMSABILITATO=1 AND NUMERO=1 THEN
FOR TMP=170 TO 200
READ TMP,TMP2
IF TMP2="#" THEN
LUNMITT=TMP-171
TMP=222
ELSE
MITT[TMP-170]=TMP2
ENDIF
NEXT TMP
FRASE=6
DEBUG "LUNMITT ",#LUNMITT,13,10
GOSUB INVIOSMS
ENDIF
RETURN
INVIOSMS:
PAUSE 2000
HSEROUT ["AT+CMGS="]
FOR TMP=0 TO LUNMITT
HSEROUT [MITT[TMP]]
NEXT TMP
'PAUSE 1000
HSEROUT [13]
PAUSE 1000
' str MITT \LUNMITT
SELECT CASE FRASE
CASE 1
HSEROUT ["IMPOSTAZIONE CORRETTA",13]
CASE 2
HSEROUT ["IMPOSTAZIONE NON CORRETTA",13]
CASE 3
READ 200,TMP
HSEROUT ["ALLARME ",13]
IF TMP=1 THEN
HSEROUT ["ABILITATO",13]
ELSE
HSEROUT ["DISABILITATO",13]
ENDIF
CASE 4
HSEROUT ["IL NUMERO ",13]
FOR TMP=170 TO 200
READ TMP,TMP2
IF TMP2="#" THEN
TMP=222
ELSE
HSEROUT [TMP2]
ENDIF
NEXT TMP
HSEROUT [" E' STATO ABILITATO.",13]
CASE 5
HSEROUT ["IL NUMERO E' STATO DISABILITATO",13]
CASE 6
HSEROUT ["ALLARME ATTIVO",13]
CASE 7
READ 208,PIRABILITATO
READ 209,MOVABILITATO
READ 210,AUXABILITATO
HSEROUT ["SENSORE PIR "]
IF PIRABILITATO=1 THEN
HSEROUT ["ABILITATO",13]
ELSE
HSEROUT ["DISABILITATO",13]
ENDIF
HSEROUT ["SENSORE DI MOVIMENTO "]
IF MOVABILITATO=1 THEN
HSEROUT ["ABILITATO",13]
ELSE
HSEROUT ["DISABILITATO",13]
ENDIF
HSEROUT ["SENSORI AUSILIARI "]
IF AUXABILITATO=1 THEN
HSEROUT ["ABILITATI",13]
ELSE
HSEROUT ["DISABILITATI",13]
ENDIF
END SELECT
PAUSE 1000
hserout [26]
PAUSE 15000
' hserin 10000,EXIT4,[wait("CMG"),TMP]
' DEBUG "TMP RICEVUTO SULL'OK ",TMP,13,10
' IF TMP="S" THEN
' DEBUG "SOK",13,10
' pause 3000
' ENDIF
'EXIT4:
RETURN
LEGGISMS:
'AT+CMGL="REC UNREAD"
'OK
'AT+CMGL="REC UNREAD"
'+CMGL: 5,"REC UNREAD","+393355760939"
'Ciao+africa
'OK
DEBUG "LEGGI SMS",10,13
HSEROUT ["AT+CMGL=",34,"ALL",34,13]
' HSEROUT ["AT+CMGL=",34,"ALL",34,13]
hserin 800,EXIT,[SKIP 10, wait(34,",",34),TMP]
' hserin 1000,EXIT,[SKIP 10, wait(13,10),TMP]
MITT[0]=TMP
LUNMITT=1
HIGH LEDV
' HIGH LEDR
while TMP<>34 AND LUNMITT<20
hserin 10000,EXIT,[TMP]
MITT[LUNMITT]=TMP
LUNMITT=LUNMITT+1
wend
LUNSMS=0
while TMP<>"#" AND LUNSMS<80
hserin 10000,EXIT3,[TMP]
sms[LUNSMS]=TMP
LUNSMS=LUNSMS+1
wend
EXIT3:
LUNMITT=LUNMITT-1
DEBUG "MITT -> ",str MITT \LUNMITT,13,10
LUNSMS=LUNSMS-1
DEBUG "sms -> ",str sms \LUNSMS,13,10
PAUSE 3000
DEBUG "CANCELLO TUTTO",13,10
HSEROUT ["AT+CMGD=0,4",13] 'CANCELLO TUTTI I MESSAGGI
HSERIN 10000,EXIT,[wait ("OK")]
PAUSE 1000
GOSUB ANALIZZASMS
PAUSE 2000
EXIT:
' DEBUG "EXIT",13,10
LOW LEDV
' LOW LEDR
RETURN
ANALIZZASMS:
FRASE=10
DEBUG "ANALIZZA",13,10
' FOR TMP=0 TO 4
' READ TMP,TMP1
' DEBUG "IMEI ",TMP1, " - SMS ",SMS[LUNSMS-5+TMP],13,10
' IF TMP1<>SMS[LUNSMS-5+TMP] THEN
' GOTO EXIT2
' ENDIF
' NEXT TMP
' DEBUG "IMEI OK",13,10
ERR1=0
ERR2=0
For TMP=0 TO 4
TMP2= SMS[LUNSMS-5+TMP]
READ TMP,TMP1
DEBUG "IMEI ",TMP1, " - SMS ",TMP2,13,10
IF TMP1<>TMP2 Then
DEBUG "ERR1",13,10
ERR1=1
EndIF
LookUp TMP,["15061"],TMP1
IF TMP1<>TMP2 Then
DEBUG "ERR2",13,10
ERR2=1
EndIF
Next TMP
IF ERR1=1 AND ERR2=1 THEN
GOTO EXIT2
ENDIF
DEBUG "IMEI OK",13,10
FRASE=2
DEBUG "sms 1 ",sms[2],13,10
select case sms[2]
case "A"
HSEROUT ["AT+CGDCONT=1,",34,"IP",34,",",34]
for tmp=6 to 50
IF sms[tmp]<>"," THEN
'WRITE TMP+4,SMS[TMP] 'SALVO IN MEM L'APN
HSEROUT [SMS[TMP]]
ELSE
'write TMP+4,35 'FINE STRINGA
HSEROUT [34,",,0,0",13]
TMP1=TMP+6
TMP=55
ENDIF
NEXT TMP
HSERIN 10000,EXIT2,[wait ("OK")]
' DEBUG "OK CGD",13,10
PAUSE 1000
' HSEROUT ["AT#ESMTP=",34]
for tmp=100 to 130
TMP2= TMP-100+TMP1
IF sms[TMP2]<>"*" THEN
WRITE TMP,SMS[TMP2] 'SALVO IN MEM L'ESMTP 100÷130
DEBUG SMS[TMP2]
select case sms[TMP2]
case "T"
IF sms[TMP2+1]="I" THEN
GEST = 1
ENDIF
case "V"
IF sms[TMP2+1]="O" THEN
GEST = 2
ENDIF
case "W"
IF sms[TMP2+1]="I" THEN
GEST = 3
ENDIF
END SELECT
DEBUG " GEST ",#GEST,10,13
WRITE 9,GEST
ELSE
write TMP,35 'FINE STRINGA
'HSEROUT [34,13]
TMP=205
ENDIF
NEXT TMP
' HSERIN 10000,EXIT2,[wait ("OK")]
' DEBUG "OK SMTP",13,10
FRASE=1
case "U"
HSEROUT ["AT#USERID=",34]
for tmp=7 to 37
TMP2= TMP+123
IF sms[tmp]<>"," THEN
WRITE TMP2,SMS[TMP] 'SALVO IN MEM L'USER ID POS 130÷160
HSEROUT [SMS[TMP]]
ELSE
write TMP2,35 'FINE STRINGA
HSEROUT [34,13]
TMP1=TMP+6
TMP=55
ENDIF
NEXT TMP
HSERIN 10000,EXIT2,[wait ("OK")]
PAUSE 1000
HSEROUT ["AT#USERID?",13]
PAUSE 2000
' DEBUG "OK CGD",13,10
PAUSE 1000
HSEROUT ["AT#PASSW=",34]
for tmp=TMP1 to 200
TMP2= 160 + (TMP-TMP1)
DEBUG "TMP2 ",#TMP2,13,10
IF sms[tmp]<>"*" THEN
WRITE TMP2,SMS[TMP] 'SALVO IN MEM LA PASS
HSEROUT [SMS[TMP]]
ELSE
write TMP2,35 'FINE STRINGA
HSEROUT [34,13]
TMP=205
ENDIF
NEXT TMP
HSERIN 10000,EXIT2,[wait ("OK")]
' DEBUG "OK PSW",13,10
FRASE=1
case "D"
IF SMS[4]="S" THEN
DEBUG "DESTINAZIONE",13,10
' HSEROUT ["AT#PASSW=",34]
for tmp=7 to 100
TMP2=TMP+3
IF sms[tmp]<>"*" THEN
WRITE TMP2,SMS[TMP] 'SALVO IN MEM LA DEST PARTENDO DALL'INDIRIZZO 10
' HSEROUT [SMS[TMP]]
ELSE
write TMP2,35 'FINE STRINGA
' HSEROUT [34,13]
TMP=105
ENDIF
NEXT TMP
' HSERIN 10000,EXIT2,[wait ("OK")]
' DEBUG "OK PSW",13,10
FRASE=1
ENDIF
IF SMS[4]="L" THEN
DEBUG "CANCELLAZIONE",13,10
WRITE 205,0
FRASE=5
ENDIF
case "O"
IF SMS[3]="N" THEN
WRITE 200,1
TIME=2
ELSE
WRITE 200,0
'GOTO RIAVVIA
ENDIF
FRASE=3
case "T"
' HSEROUT ["AT#PASSW=",34]
WRITE 201,SMS[6]-48
WRITE 202,SMS[7]-48
WRITE 203,SMS[8]-48
FRASE=1
case "F"
tmp2=0
FOTO=1
FRASE=1
case "M"
for tmp=5 to 45
TMP2=TMP+165
IF sms[tmp]<>"*" THEN
WRITE TMP2,SMS[TMP] 'SALVO IN MEM IL NUMERO ABILITATO PARTENDO DALL'INDIRIZZO 160÷200
' HSEROUT [SMS[TMP]]
ELSE
write TMP2,35 'FINE STRINGA
' HSEROUT [34,13]
TMP=105
ENDIF
NEXT TMP
' HSERIN 10000,EXIT2,[wait ("OK")]
WRITE 205,1
DEBUG "NUMERO MEMORIZZATO",13,10
FOR TMP=170 TO 200
READ TMP,TMP2
IF TMP2="#" THEN
TMP=222
ELSE
DEBUG TMP2
ENDIF
NEXT TMP
FRASE=4
case "D"
WRITE 205,0
FRASE=5
case "S"
If SMS[5]="1" THEN
WRITE 207,1
DEBUG "SMS ABI",10,13
ELSE
WRITE 207,0
DEBUG "SMS DIS",10,13
ENDIF
If SMS[10]="1" THEN
WRITE 206,1
DEBUG "FOTO ABI",10,13
ELSE
WRITE 206,0
DEBUG "FOTO DIS",10,13
ENDIF
FRASE=1
case "P"
If SMS[5]="1" THEN
WRITE 208,1
DEBUG "PIR ABI",10,13
ELSE
WRITE 208,0
DEBUG "PIR DIS",10,13
ENDIF
If SMS[9]="1" THEN
WRITE 209,1
DEBUG "MOV ABI",10,13
ELSE
WRITE 209,0
DEBUG "MOV DIS",10,13
ENDIF
If SMS[13]="1" THEN
WRITE 210,1
DEBUG "AUX ABI",10,13
ELSE
WRITE 210,0
DEBUG "AUX DIS",10,13
ENDIF
FRASE=7
END SELECT
GOSUB INVIOSMS
EXIT2:
DEBUG "EXIT2",13,10
RETURN
CHIAMATA:
IF RING=0 THEN
READ 205,NUMERO
DEBUG "CHIAMATA",13,10
IF NUMERO=0 THEN
HSEROUT ["ATH",13]
PAUSE 1000
GOTO EXIT4
ENDIF
HIGH LEDR
'+CLIP: "+393355760939",145,"",128,"",0
HSERIN 5000,EXIT4,[WAIT ("CLIP: "),TMP1]
TMP2=0
'DEBUG TMP1
WHILE TMP<>34
'DEBUG TMP
HSERIN 5000,EXIT4,[TMP]
MITT[TMP2]=TMP
TMP2=TMP2+1
WEND
lunmitt=TMP2-2
FOR TMP=0 TO lunmitt
TMP1=TMP+170
READ TMP1,TMP2
DEBUG "CHIAMANTE: ",MITT[TMP]," MEM: ",TMP2,13,10
IF TMP2<>MITT[TMP] THEN
HSEROUT ["ATH",13]
PAUSE 1000
GOTO EXIT4
ENDIF
NEXT TMP
HSEROUT ["ATA",13]
PAUSE 1000
ELSE
LOW LEDR
ENDIF
EXIT4:
'DEBUG "EXIT 4 "
RETURN
ON_OFF:
HIGH POWERLT
PAUSE 3000
HIGH POWERGSM 'accendi il modulo
PAUSE 1200
LOW POWERGSM
PAUSE 10000
RETURN
|