资源简介
gprs接收源程序代码,在mini2440上实现。
基于arm的gprs程序,语言是c语言,可用作嵌入式设备。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
int open_port(int fdint comport);
int set_opt (int fd int nSpeed int nBits char nEvent int nStop) ;
int main(void)
{
int fd;
int nwritenreadi=0 ;
char red[512]buf[1024] = {‘\0‘} ;
char *pcon *pr;
if((fd=open_port(fd1))<0)
{
perror(“open_port error“);
return -1;
}
if((i=set_opt(fd96008‘N‘1))<0)
{
perror(“set_opt error“);
return;
}
//测试AT命令
write(fd“AT\r“3);
sleep(2);
nread=read(fdred256);//读串口
if(strstr(red“OK“) == NULL)
printf(“the AT is faule!!\n“);
printf(“nread=%d%s\n“nreadred);
//测试AT+CSQ命令,检查网络信号强度和SIM卡情况(**,##)
write(fd“AT+CSQ\r“7);
sleep(2);
nread=read(fdred256);
if(strstr(red“OK“) == NULL)
printf(“the AT+CSQ is faule!!\n“);
printf(“nread=%s\n“red);
//接收短信主动提示
write(fd“AT+CNMI=11\r“12) ;
sleep(2) ;
nread=read(fdred256);
if(strstr(red“OK“) == NULL)
printf(“the AT+CNMI=11 is faule!!\n“);
printf(“nread=%s\n“red);
//接收短信从串口输出
write(fd“AT+CSMS=1\r“10) ;
sleep(2) ;
nread=read(fdred256);
if(strstr(red“OK“) == NULL)
printf(“the AT+CSMS=1 is faule!!\n“);
printf(“nread=%s\n“red);
write(fd“AT+CNMI=22\r“12) ;
sleep(2) ;
nread=read(fdred256);
if(strstr(red“OK“) == NULL)
printf(“the AT+CNMI=22 is faule!!\n“);
printf(“nread=%s\n“red);
while(1)
{
i = 0;
buf[i] = ‘\0‘;
nread=read(fdred512);
if(nread)
{
printf(“read content = %s\n“red);
pcon = pr = red;
while(pr)
{
while(*pcon != ‘\012‘)
{
pcon++;
pr++;
}
pcon++;
pr++;
while(*pr != ‘\n‘ && *pr != ‘\r‘)
{
pr++;
}
break;
}
printf(“MSG: “);
for(; pcon != pr; pcon++)
{
buf[i++] = *pcon;
printf(“%c“ *pcon);
}
printf(“\n“);
buf[i] = ‘\0‘;
printf(“buf: %s\n“ buf);
if(strlen(buf) == 1)
{
if(buf[0] >= ‘1‘ && buf[0] <= ‘9‘ || buf[0] == ‘A‘)
{
printf(“Send: %c\n“ buf[0]);
}
}
}
}
return 0;
}
int open_port(int fdint comport)
{
char *dev[]={“/dev/ttyS0““/dev/ttyS1““/dev/ttyS2“};
long vdisable;
//O_NOCTTY 标志用于通知Linux 系统,这个程序不会成为对应这个端口的控制终端。
//O_NDELAY 标志通知Linux 系统,这个程序不关心DCD 信号线所处的状态(端口的另一端是否激活或者停止)。
if
评论
共有 条评论