打印
[应用相关]

单片机与GPRS通信将,AT指令返回的位置数据传到服务器上

[复制链接]
1005|4
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zch305|  楼主 | 2019-5-31 14:59 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 zch305 于 2019-6-1 16:43 编辑

现在我使用单片机与GPRS通信想获取定位信息。下面程序是通过单片机串口发送ALIENTEK@AT+LOC指令并且将返回的位置数据存储到寄存器中再通过串口将位置数据发送到服务器上。用串口助手测试,发送ALIENTEK@AT+LOC,返回这个数据,''+LOCATION: 108.986671,34.247131"   OK。下面是我的单片机程序,为什么结果是在服务器上接收到的是ALIENTEK@AT+LOC,而不是其返回数据,大家看看这有什么问题。
#include<reg52.h>
#include<stdio.h>
#include<string.h>

#define uchar unsigned char
#define uint unsigned int

char rcvbuf[20];
char rcvflag = 0;

void delayms(uint x)  //51单片机常用延时程序
{
        uint i,j;
        for(i=x;i>0;i--)
                for(j=125;j>0;j--);
}

void uart_init()  //串口初始化
{
        TMOD=0x20;
        TH1=0XFd;
        TL1=0XFd;
        SCON=0x50;
        PCON=0X00;
        TR1=1;
        EA=1;
        ES=1;
}

void GPRS_init()
{
            ES=0;//发送数据时关闭串口接收中断
            TI=1;//发送中断执行清除标志         
        printf("ALIENTEK@AT+LOC\r\n");
                        while(!TI);
                     TI=0;
                                 ES=1;
}  


void send(char *p)
{
        TI=0;
        do
        {        
                SBUF=*p;
                p++;
                while(!TI);
                TI=0;
        }while(*p);
        SBUF=' ';
        while(!TI);
        TI=0;
}

void main()
{
        char buf[10];
        char z;

        uart_init();
        GPRS_init()
                 while(1)
        {
                if(rcvflag == 1)  //判断是否接收到数据
                {
                        ES = 0;
                        rcvflag = 0;
                        for(z=0;z<60;z++)
                {        
                       send1(rcvbuf);
                }
                        z = 0;
                }
        }
}

void uart_rcv() interrupt 4  //中断接收程序
{
        static char i = 0;
        if(RI == 1)
        {
                ES = 0;
                RI = 0;
                rcvbuf[i++] = SBUF;
                if(rcvbuf[i-1] == '\n')  //判断字符串结束位置
                {
                        rcvbuf = '\0';
                        i = 0;
                        rcvflag = 1;  //字符串结束,把接收标志位置1
                }
                ES = 1;
        }         
}




332645cf0a520188ae.png (24.82 KB )

332645cf0a520188ae.png

使用特权

评论回复
沙发
mmuuss586| | 2019-6-7 16:44 | 只看该作者
51的

使用特权

评论回复
板凳
labasi| | 2019-6-18 11:38 | 只看该作者
非常感谢楼主分享

使用特权

评论回复
地板
paotangsan| | 2019-6-18 12:02 | 只看该作者
看起来一点也不复杂啊

使用特权

评论回复
5
renzheshengui| | 2019-6-18 12:13 | 只看该作者
非常宝贵的例程

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

21

帖子

0

粉丝