xiawae 发表于 2011-4-6 09:40:12

请教 GPRS软件框架

坛子里的各位兄弟姐妹,我司用的sim900 GPRS模块,目前正在软件开发中,前期熟悉了大量的资料和AT指令,并在网上下了一个别人MC35i的源程序,对整体的框架也有些把握了,但是依然存在两个比较大的问题,向大家请教:

1、缓冲区的设计和解析,这个是最头痛的问题,我的缓冲区定义如下:

#define GSM_BUFFER_SIZE320

typedef struct{
Int8Uwrite;
Int8Uread;
Int8Udata;
}GSM_BUFFER;

GSM_BUFFER gGSM_Buffer;

缓冲区只是简单通过终端来接收数据,不做任何处理;

处理是通过缓冲区解析GSM_chkBuf()来现实的,这个地方遇到了问题,我的缓冲区要怎么解析,并且与RING管脚来配合使用解析当前发送AT指令的响应呢。
初步考虑:

if( 是帧头 <CR><LF> ){

if(是RING){
   //ignore
返回0;
}

if ( 是短信 +CMI ){
    获取短信index,返回0;
}   

if ( 是提示符 “> ” ){
读取到处理缓冲区GSM_DealBuf,返回1;
}else{
找到帧尾,复制到GSM_DealBuf,返回1;
}

}

然后再RING中断中处理电话和短信:
问题一:   ?本来是想在这里判断是电话还是短信,是电话就挂断,是短信就读取的,可是终端进来的时候,我的电话和短信标志内容并没有读到处理缓冲区去啊?

问题二: 如何保证我当前读取的AT指令响应正好就是我刚才发出去的AT指令的响应呢? 如果我在GSM_chkBuf的过程中收到RING中断,很可能我的帧数据还没有读取到处理缓冲区啊?

问题三: 对于这样GPS终端的软件来说,主循环中应该是按照什么样的顺序来处理呢? 来实现电话、短信、GPRS上下行数据的切换呢?


谢谢大家,甚是头晕中。

zc3909 发表于 2011-4-6 09:45:44

鍙澶勭悊涓插彛鏁版嵁灏卞彲浠�涓嶇敤閭d箞澶嶆潅

zc3909 发表于 2011-4-6 09:48:11

bu yong na me fu za ,zhi yao chu li chuan kou shu ju jiu ke yi le

zc3909 发表于 2011-4-6 09:49:27

yong gprs shang wang fa tie hui bian cheng luan ma!

comway 发表于 2011-4-6 10:56:45

怎么还有提示符 “> ”?要做什么啊

xiawae 发表于 2011-4-6 11:18:06

回复【4楼】comway
怎么还有提示符 “&gt; ”?要做什么啊
-----------------------------------------------------------------------

发送短信和GPRS数据啊,在发送AT+CMGS="",之后有提示啊,然后GPRS发送也是有提示符的啊。

xiawae 发表于 2011-4-6 11:58:52

我这个没有使用ucosII那个操作系统,你们都是用了这个操作系统吗? 要是用操作系统我觉得还是简单些呢。。

comway 发表于 2011-4-7 11:41:07

AT+CMGS啊,还得PUD编码是吧,推荐用w8010模块,直接发汉字短信的,gprs状态是透传串口

kucooboy 发表于 2013-12-24 16:38:24

建议使用状态机来做{:smile:}
页: [1]
查看完整版本: 请教 GPRS软件框架