|
|
View previous topic :: View next topic |
Author |
Message |
prajeesh
Joined: 17 Apr 2006 Posts: 2 Location: India
|
using AT commands |
Posted: Tue Apr 18, 2006 1:19 am |
|
|
Hi all,
am working with PIC16f877 and ccs pcw 3.094
am trying to read sms using command AT+CMGR=1 from a wavecom GSM modem. The message stored in the index 1 is "Hi". so what am trying to do is to read the sms using the AT command and read the response from the modem. the response will have the message along with additional info. so i will be checking for "Hi" and if the read is seccessful, an LED glows (connected to portd.2)
for reading the serial port i used #INT_RDA interrupt. a count is declared to get the total number of interrupts occured..
am facing some issues....please help me in resolving it.
the code written by me is given below
#include "G:\Work\pic\work_outs\serial\serial_send.h"
#include <string.h>
#byte trisc = 0x87
#byte portc = 0x07 // defining port address
#byte trisd = 0x88
#byte portd = 0x08
#define BUFFER_SIZE 90
byte buffer[BUFFER_SIZE];
byte next_in = 0;
byte next_out = 0;
byte count = 0;
void init()
{
setup_adc_ports(NO_ANALOGS);
setup_adc(ADC_CLOCK_DIV_2);
setup_spi(FALSE);
setup_psp(PSP_DISABLED);
setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
setup_timer_1(T1_DISABLED);
setup_timer_2(T2_DISABLED,0,1);
setup_ccp1(CCP_OFF);
setup_ccp2(CCP_OFF);
}
void tx_ate0()
{
putc('A');
putc('T');
putc('E');
putc(0x30);
putc('\r');
}
void tx_data()
{
tx_ate0();
putc('A'); // Transmit "AT" through serial port
putc('T');
putc('+');
putc('C');
putc('M');
putc('G');
putc('R');
putc('=');
putc(0x31);
putc('\r');
}
#int_rda
void rx_serial_data()
{
byte t;
count += 1; // counting total number of interrupts occured
#asm
BSF 0x08, 0
#endasm
buffer[next_in] = getc(); // get the data(single character) from serial port
t=next_in;
next_in=(next_in+1) % BUFFER_SIZE;
if(next_in==next_out)
next_in=t; // Buffer full !!
}
void check_serial_data()
{
char resp_data[] = "\r\n\r\nOK\r\n";
if(strstr(buffer, resp_data)){
#asm
BSF 0x08, 2
#endasm
}
}
void main()
{
byte i;
trisc = 0x80; // RC7 as i/p & RC6 as o/p. RC6 - Tx pin & RC7 - Rx pin
trisd = 0x00; // portd as o/p
portd = 0x00;
memset(buffer, 0, BUFFER_SIZE);
enable_interrupts(global);
enable_interrupts(int_rda); // Enable 'receive data available' interrupt
init(); // initialize peripherals
tx_data();
delay_ms(60000);
for(i = 0; i < count; i ++){
#asm
BSF 0x08, 1
#endasm
delay_ms(500);
#asm
BCF 0x08, 1
#endasm
delay_ms(500);
}
count = 0;
check_serial_data();
}
i was able to send an sms using AT commands and got the correct response back...(read through serail port)
thanks,prajeesh _________________ Prajeesh
c/o Mobax Networks
Coimbatore
India |
|
|
ckielstra
Joined: 18 Mar 2004 Posts: 3680 Location: The Netherlands
|
|
Posted: Tue Apr 18, 2006 1:41 am |
|
|
Some remarks:
1) When posting code use the 'code' button, this helps to preserve the format of your source code and makes it much easier for us to read your program.
2) Instead of many separate putc commands your code will be much easier to read when you combine them into a single printf command.
Instead of Code: | putc('A'); // Transmit "AT" through serial port
putc('T');
putc('+');
putc('C');
putc('M');
putc('G');
putc('R');
putc('=');
putc(0x31);
putc('\r'); | This becomes
Code: | // Transmit "AT" through serial port
printf('AT+CMGR=1\r'); |
Quote: | am facing some issues....please help me in resolving it. | We are not very good in reading your mind, it helps when you explain what the issues are you are facing. |
|
|
lover_w40 Guest
|
help |
Posted: Wed Jan 24, 2007 5:24 pm |
|
|
i m doing the same think can you explain me code
if you got teh solution, plz give us the source
thanks |
|
|
Foppie
Joined: 16 Sep 2005 Posts: 138 Location: The Netherlands
|
Re: using AT commands |
Posted: Fri Jan 26, 2007 8:26 am |
|
|
prajeesh wrote: |
am facing some issues....please help me in resolving it. |
I think one of your problems might be the you don't have any error handling, what do you do when the response from the modem is ERROR instead of "\r\n\r\nOK\r\n"?
You should always keep in mind that other responses are possible...
furthermore, are you sending in TEXT or PDU mode?
Cheers, Jos |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|