msp430单片机和GPRS模块连接中的返回值返回到哪里?

2019-03-24 11:34发布

我在用MSP430编程给GPRS模块AT指令的时候,GPRS模块会返回比如“OK"返回值,那么,我想在编程中检测到”ok"后再进行下一条命令传输,我从哪个寄存器中去检测“ok"呢? 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
7条回答
lcofjp
1楼-- · 2019-03-24 18:33
从串口发送完命令后,要接着从串口等待数据。判断串口返回的是什么数据。
面纱如雾
2楼-- · 2019-03-24 20:26
 精彩回答 2  元偷偷看……
lcofjp
3楼-- · 2019-03-25 02:23
面纱如雾 发表于 2014-5-7 14:11
现在我就想在程序中检测返回值,我用strstr()程序,但是我在哪个寄存器中去查找呢?

你是要从串口寄存器一个字节一个字节去接收的,而不是会从寄存器中能把整个数据回复读出来。
串口寄存器一般只能保存一个字节,例如模块一般返回OK ,则要从串口寄存器中读取三个值才行,读出来之后放到内存缓冲区再去判断返回值是什么。所以处理流程是非常复杂的,因为返回的内容绝对不总是OK,所以你要考虑周全,说太多了也没用,看样子你是新手,要慢慢来。
面纱如雾
4楼-- · 2019-03-25 06:33
lcofjp 发表于 2014-5-7 16:48
你是要从串口寄存器一个字节一个字节去接收的,而不是会从寄存器中能把整个数据回复读出来。
串口寄存器 ...

我想先把"OK“检测出来,然后依葫芦画瓢检测其他返回值。我写了这样一个程序,你看看对不对?谢谢你!

/****************************接收返回值函数**************************
*函数原型:void Receive(void)
*函数功能:
*输入参数:无
*输出参数:无
**********************************************************************/
void Receive(void)  
{
if(URXIE0)   //如果是接送中断,则进行处理——————————————————————————这个判断对不对????????
  {
   URXIE0 = 0; //清除接收中断标志位
   Rec_Buf[j] = RXBUF0; //将接收到的字符串存到缓存中——————————————————————这个寄存器赋值对不对?????
   j++;               //缓存指针向后移动
   if(j>100)          //如果缓存满,将缓存指针指向缓存的首地址
    {
     j = 0;
    }
  }
}

/*****************判断缓存中是否含有指定的字符串函数******************
*函数原型:int Hand(unsigned char *a)
*函数功能:判断缓存中是否含有指定的字符串
*输入参数:unsigned char *a 指定的字符串
*输出参数:int 1---含有    0---不含有
*调用模块:无
*******************************************************************/
int Hand(unsigned char *a)
{
    if(strstr(Rec_Buf,a)!=NULL)
     return 1;
else
     return 0;
}
lcofjp
5楼-- · 2019-03-25 06:53
 精彩回答 2  元偷偷看……
面纱如雾
6楼-- · 2019-03-25 09:36
lcofjp 发表于 2014-5-8 08:00
很明显你现在的代码离你要实现的功能差很。我也不用430好几年了,你最好找个人实际的给你指导一下。脑海 ...

谢谢你指点!

一周热门 更多>

相关问题

    相关文章