OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7967|回复: 19

SIM800 GPRS模块AT+CIPSEND发送数据

[复制链接]

37

主题

595

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1572
金钱
1572
注册时间
2017-7-17
在线时间
308 小时
发表于 2018-3-28 17:23:31 | 显示全部楼层 |阅读模式
10金钱
现在做一个网关的项目,GPRS发送数据有点蛋疼。调用一次AT+CIPSEND发送数据后,我会等待2秒的SEND OK,但是有时候SEND OK 2秒内没有回来,然后我就重发一次数据。但是我很担心这样会不会出问题,如果第一次发送的过程还没有结束,我又给一个AT+CIPSEND过去,GPRS模块会不会出错,会不会挂掉?大家在判断数据发送是否完成(成功或失败)的时候都是怎么做的才能保证可靠传输呢?

最佳答案

查看完整内容[请看2#楼]

重复发没什么影响
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2018-1-10
在线时间
48 小时
发表于 2018-3-28 17:23:32 | 显示全部楼层
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5136
金钱
5136
注册时间
2014-8-26
在线时间
1316 小时
发表于 2018-3-28 18:32:52 | 显示全部楼层
通过返回SEND OK ,另外保证数据可靠性,可以加协议的
回复

使用道具 举报

37

主题

595

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1572
金钱
1572
注册时间
2017-7-17
在线时间
308 小时
 楼主| 发表于 2018-3-29 09:21:41 | 显示全部楼层
login_FAE 发表于 2018-3-28 18:32
通过返回SEND OK ,另外保证数据可靠性,可以加协议的

我们的数据传输是定了协议的,我只是不知道一个数据包该以什么样的标准判断他发送成功还是失败,通过返回SEND OK 判断的话,应该等多久....因为有时候我发现SEND OK返回很快,1秒就可以,有时候又要很久,10秒以上....。比如我等了2S他没有返回SENK OK,然后我认为他这次失败了,然后AT+CIPSEND重发,但是其实他没有失败,只是SEND OK没有在2S之内返回而已,那这个时候模块会不会因为一次发送没有执行完,我又发送一次而出现POWER DOWN之类的故障或者ERROR,从目前的结果来看是不会,但是总是觉得没有办法把控。
回复

使用道具 举报

37

主题

595

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1572
金钱
1572
注册时间
2017-7-17
在线时间
308 小时
 楼主| 发表于 2018-3-29 09:24:37 | 显示全部楼层
还是说我该把等待SEND OK的时间延长到10S,这样等待的时间又太长了,万一他确实是失败了,岂不是白等了10秒...
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7206
金钱
7206
注册时间
2016-11-30
在线时间
622 小时
发表于 2018-3-29 15:49:30 | 显示全部楼层
candylife9 发表于 2018-3-29 09:24
还是说我该把等待SEND OK的时间延长到10S,这样等待的时间又太长了,万一他确实是失败了,岂不是白等了10秒 ...

做个超时等待啊,只要等到了就跳出了,就不会非要等10S了啊。
回复

使用道具 举报

37

主题

595

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1572
金钱
1572
注册时间
2017-7-17
在线时间
308 小时
 楼主| 发表于 2018-3-30 15:03:33 | 显示全部楼层
lvkanger 发表于 2018-3-29 15:49
做个超时等待啊,只要等到了就跳出了,就不会非要等10S了啊。

我说的10S就是超时等待时间,我本来做的2S,但是好像有时候不够,10S又感觉太长了。。。其实我想问的核心是连发两个AT+CIPSEND会不会有问题。。。
回复

使用道具 举报

37

主题

595

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1572
金钱
1572
注册时间
2017-7-17
在线时间
308 小时
 楼主| 发表于 2018-3-30 15:05:17 | 显示全部楼层
lvkanger 发表于 2018-3-29 15:49
做个超时等待啊,只要等到了就跳出了,就不会非要等10S了啊。

等到了就好了,就是有时候等不到...没等到再发一个AT+CIPSEND过去会不会出什么问题。
回复

使用道具 举报

37

主题

595

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1572
金钱
1572
注册时间
2017-7-17
在线时间
308 小时
 楼主| 发表于 2018-3-30 15:06:13 | 显示全部楼层
candylife9 发表于 2018-3-30 15:05
等到了就好了,就是有时候等不到...没等到再发一个AT+CIPSEND过去会不会出什么问题。

比如说第二次的AT+CIPSEND被当作了第一次的数据之类的,或者模块POWER DOWN之类的。
回复

使用道具 举报

37

主题

595

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1572
金钱
1572
注册时间
2017-7-17
在线时间
308 小时
 楼主| 发表于 2018-3-30 15:20:13 | 显示全部楼层
993389738 发表于 2018-3-29 11:25
重复发没什么影响

一个AT+CIPSEND后,是不是遇到0X1A就算一个数据包,如果第一次发送没有成功的恶化我第二次重发的AT+CIPSEND会不会被当成数据包。。。
回复

使用道具 举报

37

主题

595

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1572
金钱
1572
注册时间
2017-7-17
在线时间
308 小时
 楼主| 发表于 2018-3-30 16:46:09 | 显示全部楼层
至少从我做的看来是没有影响,可以发送出去。
回复

使用道具 举报

23

主题

323

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1010
金钱
1010
注册时间
2016-11-8
在线时间
233 小时
发表于 2018-3-30 17:50:02 | 显示全部楼层
接收方对重复的数据会不会有莫名的反应呢?也要避免
我最近用它的HTTP的GET功能请求数据,和你一个情况,不知道要等多久才会返回get的数据。。很是蛋疼,因为这东西受信号影响,请求数据内容影响很大。。
现在还没有想到好的办法来怎么判断什么时候get完数据了。。。
亦余心之所善,
虽九死其犹未悔。
回复

使用道具 举报

15

主题

866

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
7206
金钱
7206
注册时间
2016-11-30
在线时间
622 小时
发表于 2018-4-1 17:16:08 | 显示全部楼层
candylife9 发表于 2018-3-30 15:05
等到了就好了,就是有时候等不到...没等到再发一个AT+CIPSEND过去会不会出什么问题。

不会有问题的!
回复

使用道具 举报

37

主题

595

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1572
金钱
1572
注册时间
2017-7-17
在线时间
308 小时
 楼主| 发表于 2018-4-2 15:02:06 | 显示全部楼层
南有乔木 发表于 2018-3-30 17:50
接收方对重复的数据会不会有莫名的反应呢?也要避免
我最近用它的HTTP的GET功能请求数据,和你一个情况, ...

我觉得你不用管接收方对重复的数据会不会有莫名的反应,因为接收方收到数据肯定会有反应的,他不知道你是不是重复的,也不会去判断。所以也只能自己判断了,设个超时等待时间。
回复

使用道具 举报

3

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2018-1-10
在线时间
48 小时
发表于 2018-4-3 11:48:26 | 显示全部楼层
candylife9 发表于 2018-3-30 15:20
一个AT+CIPSEND后,是不是遇到0X1A就算一个数据包,如果第一次发送没有成功的恶化我第二次重发的AT+CIPSE ...

会把AT+CIPSEND当成数据包
回复

使用道具 举报

37

主题

595

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1572
金钱
1572
注册时间
2017-7-17
在线时间
308 小时
 楼主| 发表于 2018-4-3 16:13:02 | 显示全部楼层
993389738 发表于 2018-4-3 11:48
会把AT+CIPSEND当成数据包

出问题了。。。。我担心的事情还是发生了。贴两张图:
1、我对SIM800C进行了一个小小的压力测试,就是我这边间隔4秒发送一个数据包到后台,后台收到后返回两个数据包给我,如此循环。
2、大概跑了4个小时,出现了图1的现象。一个AT+CIPSEND发出去后,SIM800返回了一个不连续的“”“\r\n> ",被我判为不成功而忽略,然后我出去一个AT+CIPSEND,然后SIM800C就再也不响应我的东西了。。。。如图2
3、单片机检测到连接故障后,重启了SIM800C,测试继续正常进行了。。。。
SIM800不再响应AT CIPSEND.PNG
1.返回ACK错误.PNG
回复

使用道具 举报

37

主题

595

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1572
金钱
1572
注册时间
2017-7-17
在线时间
308 小时
 楼主| 发表于 2018-4-3 16:17:00 | 显示全部楼层
南有乔木 发表于 2018-3-30 17:50
接收方对重复的数据会不会有莫名的反应呢?也要避免
我最近用它的HTTP的GET功能请求数据,和你一个情况, ...

出问题了。。。。我担心的事情还是发生了。贴两张图:
1、我对SIM800C进行了一个小小的压力测试,就是我这边间隔4秒发送一个数据包到后台,后台收到后返回两个数据包给我,如此循环。
2、大概跑了4个小时,出现了图1的现象。一个AT+CIPSEND发出去后,SIM800返回了一个不连续的“”“\r\n> ",被我判为不成功而忽略,然后我出去一个AT+CIPSEND,然后SIM800C就再也不响应我的东西了。。。。如图2
3、单片机检测到连接故障后,重启了SIM800C,测试继续正常进行了。。。。
真是要人命了,怎么会有这么多边边角角难以预料又偶尔会出现的不可靠的东西。。。
SIM800不再响应AT CIPSEND.PNG
1.返回ACK错误.PNG
回复

使用道具 举报

3

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
306
金钱
306
注册时间
2018-1-10
在线时间
48 小时
发表于 2018-4-3 18:15:27 | 显示全部楼层
candylife9 发表于 2018-4-3 16:17
出问题了。。。。我担心的事情还是发生了。贴两张图:
1、我对SIM800C进行了一个小小的压力测试,就是我 ...

SIM868比A9G好用多。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2020-5-23
在线时间
0 小时
发表于 2020-5-23 09:53:24 | 显示全部楼层
楼主大大,为啥我send就回复error呢
回复

使用道具 举报

37

主题

595

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1572
金钱
1572
注册时间
2017-7-17
在线时间
308 小时
 楼主| 发表于 2020-5-23 16:42:08 | 显示全部楼层
chengsiyuan 发表于 2020-5-23 09:53
楼主大大,为啥我send就回复error呢

可能是没有连上网络吧,发送数据之前要先入网。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 23:14

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表