• 大小: 5KB
    文件类型: .c
    金币: 1
    下载: 0 次
    发布日期: 2021-06-03
  • 语言: C/C++
  • 标签: gprs  

资源简介

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

评论

共有 条评论