SIM800分析

 

细节1:
发送链接以后收到
TX:AT+CIPSTART=0,"TCP","mqtt-iot.tslsmart.com","1883"

---RX:

OK

L506_module_receive:

0, CONNECT OK

其实收到的是:
0D 0A 30 2C 20 43 4F 4E 4E 45 43 54 20 4F 4B 0D 0A --17个!

代码:
if ((pst = strstr(otp, "\r\n")) != NULL)
{
	length -= (pst - otp);
	if ((type = read_dat_type(pst, &typeLen)) != GSM_RECEIVE_NULL)
这里otp是原始报文 pst是找到\r\n 
注意strstr定位到\r\n前头!也就是此时pst = strstr(otp, "\r\n")
pst和otp是一样一样的!因为本身就是\r\n打头的!	

细节2:
发送消息是先发AT再发消息
发送消息以后是
L506_write_data

L506_module_receive:

> 

 RX_data_analisys:length = 4 , data=#

> #0D 0A 3E 20 
回答的是\r \n > 空格
这样4个HEX

返回是5 GSM_SEND_READY
然后发信号
                      case GSM_SEND_READY:
                      {
                        xSemaphoreGive(xSocketCmdSemaphore);
                      }break;
这个在发消息里面会采集!!


细节3:
消息发送完成
RX_data_analisys:length = 35 , data=#

0, SEND OK



+RECEIVE,0,4:

 #

上面都是回答的 我们看看这35个字节
0D 0A 
30 2C 20 53 45 4E 44 20 4F 4B 0D 0A 
0D 0A 
2B 52 45 43 45 49 56 45 2C 30 2C 34 
3A 0D 0A 20 02 00 00 

上面例子不好 举例收5个HEX的
+RECEIVE,0,5:
2B 52 45 43 45 49 56 45 2C 30 2C 35 
3A 0D 0A 90 03 

进入解析流程:
0, SEND OK--类型 9--GSM_SEND_OK_TYPE 发信号xSemaphoreGive(xSocketSendSemaphore); 这个在发消息里面会采集!! 和上面一样 也即是AT采集一次 信息以后采集一次



+RECEIVE,0,4:--类型 2--GSM_RECEIVE_TYPE 调到函数里面
类似+RECEIVE,0,137:该你你0socket收到了137个字节

关注一下:ype = read_dat_type(pst, &typeLen)的typeLen
其实它永远是11 就是越过前面的strlen("\r\n+RECEIVE,");
看到后面的那个函数!
 

				  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值