Hi,
This is for conecting a nokia phone and a pic, you will control the phone from the pic, later i will post a code where you can with a serial gps send a sms with the gps data.
Xau.
Hi,
This is for conecting a nokia phone and a pic, you will control the phone from the pic, later i will post a code where you can with a serial gps send a sms with the gps data.
Xau.
Here is my full and working code for a gps/alarme/gsm.
*********************************************
@ Device HS_OSC
define OSC 20
Include "modedefs.bas" ' Include serial modes
Clear
sms var byte[10]
numero VAR BYTE[12]
Lat var byte[11]
Long var byte[11]
TrisB.7=0 ' LIGA GSM
TrisB.6=1 ' IGNIÇÃO
TrisB.5=1 ' SENSORES
TrisB.4=0 ' FEXA PORTAS
TrisB.3=0 ' PISCAS
TrisB.2=0 ' IMOBLIZA
TrisB.1=0 ' ?????????????
TrisB.0=0 ' LED OK VERDE
TrisC.4=1 ' RX BT
TrisC.5=0 ' TX BT
TrisC.6=0 ' TX GSM
TrisC.7=1 ' RX GSM
TrisD.1=1 ' RX GPS
Low PortB.1
Low PortB.2
Low PortB.3
Inicio:
Low PortB.0
Pause 500
High PortB.0
Pause 500
Low PortB.0
Pause 500
High PortB.0
Pause 500
Low PortB.0
Pause 500
High PortB.0
Pause 500
Low PortB.0
Pause 2000
UM:
Low PortB.1
HSEROUT["at",13,10]
HSERIN 10000,UM,[WAIT("OK")]
LCDOut $FE, 1,"ON"
HIGH PortB.0
DOIS:
serin2 portD.1, 188, [WAIT("$GPRMC,"),skip 13, STR LAT\11,skip 1, STR Long\12]
High PortB.1
HSEROUT["AT+CMGF=1",13,10]' Modo Texto
HSERIN 10000,UM,[WAIT("OK")]
HSEROUT["AT+CMGR=1",13,10] ' Ler sms
HSERIN 5000,UM,[WAIT("REC UNREAD"),skip 3, STR numero\13,skip 27,STR sms\10]
IF sms[0]="S" and sms[1]="t" and sms[2]="o" and sms[3]="p" Then
goto Tranca
Endif
IF sms[0]="C" and sms[1]="e" and sms[2]="l" and sms[3]="i" and sms[4]="a" Then
goto Destranca
Endif
IF sms[0]="P" and sms[1]="o" and sms[2]="s" Then
goto PO
Endif
Goto APAGA
Tranca:
High PortB.3 'Piscas
Pause 500
High PortB.2 ' Imobliza
Goto PO
Destranca:
Low PortB.3 'Piscas
Low PortB.2 ' Imobliza
Goto APAGA
Liga: ' LIGA GSM
High PortB.7
Pause 20000
Goto UM
PO: ' Envia localizacao
HSEROUT["AT+CMGS=",34,"+351xxxx32xxx", 34,13] ' Phone number to get the gps sms data
hserin 10000,PO,[WAIT(">")]
HSEROUT["LAT: ",LAT (10),"-", LAT, lat (1),"'",lat (2),Lat(3),".",lat (5),lat(6),lat (7),lat(8),$fe,$c0,"LON: ", Long(11),"-", Long (1),long (2),"'",Long (3),long (4),".",Long (6),long (7),long(8),long (9),13,10]
HSEROUT[26]
APAGA:
HSerout ["AT+CMGD=1",13,10]' apaga sms 1
hserin 10000,APAGA,[WAIT("OK")]
HSerout ["AT+CMGD=2",13,10]
Pause 5000
goto Inicio
End
************************************************** ********
I get sender number (numero VAR BYTE[12]) but cant use it in the HSEROUT["AT+CMGS=",34,"+351xxxx32xxx", 34,13] i try HSEROUT["AT+CMGS=",34,"Str numero", 34,13] but no sucess can the masters give me some hellp?
Thanks
Xau
Last edited by camolas; - 27th October 2008 at 18:28.
Try sending "numero" like you are for "lat" and "Lon", one piece at a time.I get sender number (numero VAR BYTE[12]) but cant use it in the HSEROUT["AT+CMGS=",34,"+351xxxx32xxx", 34,13] i try HSEROUT["AT+CMGS=",34,"Str numero", 34,13] but no sucess
Dave
Always wear safety glasses while programming.
Camola, try the following:
Use a larger array in such a way that you can accomodate the calling string in the initial part of the array:
Arry[0]=65
Arry[1]=84
Arry[2]=43
Arry[3]=67
Arry[4]=77
Arry[5]=71
Arry[6]=83
ArrY[7]=43
The above sequence contains the string AT+CMGS=+
Than you tranfer the sender number (12 bytes) in Arry[8] to Arry[19]. Remember that last byte should always be Arry[20]=13
At this point you can make the call:
For A0=0 to 20
serout Mtx,T9600,[Arry[A0]]
Next A0
Immediatly after the call you have to wait the modem acknowledge ">". Here an example of code:
Flag=0
WSend:
Flag=Flag+1
if Flag>20 then NoSMS
Serin MRx,T9600,500,WSend,[ ">"] , A0
If A0=32 then SendTxt
serout Mtx,T9600,[27]
pause 5000
goto NoSMS
The code above will jump to label "SendTxt" if the modem answer corectly, otherwise it will abort the call with ascii 27 and jump to label "NoSMS"
At label "SendTxt" you will wite your code to send your string.
Naturally you should change Serin/Serout to fit your code
Al.
Last edited by aratti; - 28th October 2008 at 11:19.
Look the ASCII table
A=65
T=84
and so on
the above could also be written like...
Code:Arry[0]="A" Arry[1]="T" // etc etc etc
Steve
It's not a bug, it's a random feature.
There's no problem, only learning opportunities.
Not sure if this will help you now or not, but it might.
http://www.picbasic.co.uk/forum/showthread.php?t=544
Dave
Always wear safety glasses while programming.
Bookmarks