2673|7

333

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

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

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

最新回复

这个是需要先建立缓冲区,这个你做了,接下来寻找帧头不能只比较一个,你可以多个数据同时比较,速度来得及,另外就是每收到一次数据,你可以清空一次缓冲区,或者把指针清零。这样的次数多了,你会发现一个规律,OK的位置=你发送的字符串+OK。但是不保证每次都是那个位置,需要实际检验  详情 回复 发表于 2014-5-8 18:43
 
点赞 关注

回复
举报

6040

帖子

205

TA的资源

版主

沙发
 
从串口发送完命令后,要接着从串口等待数据。判断串口返回的是什么数据。

点评

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

回复

333

帖子

0

TA的资源

一粒金砂(高级)

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

现在我就想在程序中检测返回值,我用strstr()程序,但是我在哪个寄存器中去查找呢?

点评

你是要从串口寄存器一个字节一个字节去接收的,而不是会从寄存器中能把整个数据回复读出来。 串口寄存器一般只能保存一个字节,例如模块一般返回OK\n,则要从串口寄存器中读取三个值才行,读出来之后放到内存缓冲区  详情 回复 发表于 2014-5-7 16:48
 
 
 

回复

6040

帖子

205

TA的资源

版主

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

你是要从串口寄存器一个字节一个字节去接收的,而不是会从寄存器中能把整个数据回复读出来。
串口寄存器一般只能保存一个字节,例如模块一般返回OK\n,则要从串口寄存器中读取三个值才行,读出来之后放到内存缓冲区再去判断返回值是什么。所以处理流程是非常复杂的,因为返回的内容绝对不总是OK,所以你要考虑周全,说太多了也没用,看样子你是新手,要慢慢来。

点评

我想先把"OK“检测出来,然后依葫芦画瓢检测其他返回值。我写了这样一个程序,你看看对不对?谢谢你! /****************************接收返回值函数************************** *函数原型:void Receive(void)  详情 回复 发表于 2014-5-7 21:31
 
 
 

回复

333

帖子

0

TA的资源

一粒金砂(高级)

5
 
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;
}

点评

很明显你现在的代码离你要实现的功能差很远,首先你对单片机不熟悉,其次你对c语言如何处理一些算法也不熟悉。我也不用430好几年了,你最好找个人实际的给你指导一下。脑海里要有清晰的思路才行。  详情 回复 发表于 2014-5-8 08:00
 
 
 

回复

6040

帖子

205

TA的资源

版主

6
 
面纱如雾 发表于 2014-5-7 21:31
我想先把"OK“检测出来,然后依葫芦画瓢检测其他返回值。我写了这样一个程序,你看看对不对?谢谢你!

...

很明显你现在的代码离你要实现的功能差很。我也不用430好几年了,你最好找个人实际的给你指导一下。脑海里要有清晰的思路才行。

点评

谢谢你指点!  详情 回复 发表于 2014-5-8 09:50
 
 
 

回复

333

帖子

0

TA的资源

一粒金砂(高级)

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

谢谢你指点!
 
 
 

回复

565

帖子

5

TA的资源

纯净的硅(中级)

8
 
这个是需要先建立缓冲区,这个你做了,接下来寻找帧头不能只比较一个,你可以多个数据同时比较,速度来得及,另外就是每收到一次数据,你可以清空一次缓冲区,或者把指针清零。这样的次数多了,你会发现一个规律,OK的位置=你发送的字符串+OK。但是不保证每次都是那个位置,需要实际检验
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表