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

面纱如雾   2014-5-7 11:12 楼主
我在用MSP430编程给GPRS模块AT指令的时候,GPRS模块会返回比如“OK"返回值,那么,我想在编程中检测到”ok"后再进行下一条命令传输,我从哪个寄存器中去检测“ok"呢?

回复评论 (7)

从串口发送完命令后,要接着从串口等待数据。判断串口返回的是什么数据。
点赞  2014-5-7 11:55
引用: lcofjp 发表于 2014-5-7 11:55
从串口发送完命令后,要接着从串口等待数据。判断串口返回的是什么数据。

现在我就想在程序中检测返回值,我用strstr()程序,但是我在哪个寄存器中去查找呢?
点赞  2014-5-7 14:11
引用: 面纱如雾 发表于 2014-5-7 14:11
现在我就想在程序中检测返回值,我用strstr()程序,但是我在哪个寄存器中去查找呢?

你是要从串口寄存器一个字节一个字节去接收的,而不是会从寄存器中能把整个数据回复读出来。
串口寄存器一般只能保存一个字节,例如模块一般返回OK\n,则要从串口寄存器中读取三个值才行,读出来之后放到内存缓冲区再去判断返回值是什么。所以处理流程是非常复杂的,因为返回的内容绝对不总是OK,所以你要考虑周全,说太多了也没用,看样子你是新手,要慢慢来。
点赞  2014-5-7 16:48
引用: 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;
}
点赞  2014-5-7 21:31
引用: 面纱如雾 发表于 2014-5-7 21:31
我想先把"OK“检测出来,然后依葫芦画瓢检测其他返回值。我写了这样一个程序,你看看对不对?谢谢你!

...

很明显你现在的代码离你要实现的功能差很。我也不用430好几年了,你最好找个人实际的给你指导一下。脑海里要有清晰的思路才行。
点赞  2014-5-8 08:00
引用: lcofjp 发表于 2014-5-8 08:00
很明显你现在的代码离你要实现的功能差很。我也不用430好几年了,你最好找个人实际的给你指导一下。脑海 ...

谢谢你指点!
点赞  2014-5-8 09:50
这个是需要先建立缓冲区,这个你做了,接下来寻找帧头不能只比较一个,你可以多个数据同时比较,速度来得及,另外就是每收到一次数据,你可以清空一次缓冲区,或者把指针清零。这样的次数多了,你会发现一个规律,OK的位置=你发送的字符串+OK。但是不保证每次都是那个位置,需要实际检验
点赞  2014-5-8 18:43
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复