搜索
bottom↓
回复: 35

SIM900A+STM32发送1K数据出错率较大!

[复制链接]

出0入0汤圆

发表于 2013-3-14 17:29:47 | 显示全部楼层 |阅读模式
用STM32控制SIM900A,发送1K数据出错率较大。10%左右,DTU不出错,请问原因在哪里。是不是SIM900A一段时间后需清内部存储区?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
头像被屏蔽

出0入0汤圆

发表于 2013-3-14 21:58:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

出0入0汤圆

发表于 2013-3-14 23:05:28 | 显示全部楼层
SIM900A稳定性怎么样?要不要隔断时间给他断电重启?

出0入0汤圆

发表于 2013-3-15 01:38:52 | 显示全部楼层
赚一莫元走人。

出0入0汤圆

发表于 2013-3-15 08:17:28 | 显示全部楼层
具体出什么错误?
通常gprs做tcp数据传输每帧数据量不要超过1024字节









  

出0入0汤圆

 楼主| 发表于 2013-3-15 09:07:26 | 显示全部楼层
比如发送连续4帧数据,5分钟一个周期,开始3个周期没问题,到第四个周期就会出现第三帧发送失败。这时重发也不行。

出0入0汤圆

发表于 2013-3-17 10:30:18 | 显示全部楼层
你可以一次性不发1K, 分开来发,这样可能会好点, SIM900A去年我也用过,好像没有碰到你说的这个问题哦

出0入147汤圆

发表于 2013-3-17 11:15:33 | 显示全部楼层
发送数据前用AT+CIPSEND?命令查询下剩余缓冲区大小,大于1K才发送。
另外每帧数据最好控制在256字节以内,中国移动网络七国八制,数据太长容易出现莫名其妙的问题,有时不一定就是模块的原因。

出0入0汤圆

 楼主| 发表于 2013-3-18 09:28:12 | 显示全部楼层
谢谢!我测试一下!

出0入0汤圆

发表于 2013-3-18 09:44:35 | 显示全部楼层
你把你的程序贴上来

出0入0汤圆

发表于 2013-3-18 16:14:25 | 显示全部楼层
SIM900A,
我有时候用来传50,60K的数据文件,
大部分时候都是对的,
当然也有校验出错的时候,
但是出现的概率不大。

出0入0汤圆

 楼主| 发表于 2013-3-18 16:48:00 | 显示全部楼层
发送数据的程序如下:
char gprs_tcp_send(unsigned char *sendData, int iLen)
{
        char snd_data[64] = {0};
        //char CTRLZ[2] = {0x1a, 0x00};

#if 0
        gprs_buffer_clr();
        sprintf(snd_data, "AT+CIPSEND?=%d\r\n", iLen);
        AtSndData(snd_data);
        if (AtRcvData(GPRS_TIMEOUT, "CIPSNED:") < iLen)
        {
                return GPRS_ERROR;
        }
#endif
       
        gprs_buffer_clr();
        sprintf(snd_data, "AT+CIPSEND=%d\r\n", iLen);
        AtSndData(snd_data);
        if (AtRcvData(GPRS_TIMEOUT, ">") != GPRS_OK)
        {
                return GPRS_ERROR;
        }

        //AtSndHexData(sendData, iLen);
        AtCommand_hex(sendData, iLen);
       
        // Ôö¼Ó·¢ËͽáÊø±êÖ¾ 2013/03/12
        //_delay_ms(5);
        //USART_SendData(USART2, 0x1a);
       
        //AtSndData(CTRLZ);
        if (AtRcvData(GPRS_TIMEOUT_MAX, "\r\nSEND OK\r\n") != GPRS_OK)
        {
                return GPRS_ERROR;
        }
        return GPRS_OK;
}

出0入0汤圆

 楼主| 发表于 2013-3-18 16:48:55 | 显示全部楼层
初始化程序流程如下:
   上电序列
   
   测试串口通讯是否正常
   AT\r\n

   读取模块波特率
   AT+IPR?

   检查SIM卡状态
   AT+CSMINS?
   
   国际移动台设备标示请求
   AT+CIMI

   设置接收数据是否显示IP头,0 不显示;1 显示
   AT+CIPHEAD=1
  
   设置传输模式,0 非透传;1 透传;
   AT+CIPMODE=0

   接收数据时在IP头显示传输协议,0 不显示;1 显示
   AT+CIPSHOWTP=0

   是否已注册到GSM网络
   AT+CREG?

   设置命令定义的PDP上下文参数
   AT+CGDCONT=1,"IP","CMNET"

   建立TCP连接或注册UDP端口号
   AT+CIPSTART="TCP","222.128.7.227",8886

出0入0汤圆

 楼主| 发表于 2013-3-18 16:49:37 | 显示全部楼层
实在不知道为什么?请大家帮忙分析一下,谢谢!

出0入0汤圆

 楼主| 发表于 2013-3-18 16:50:23 | 显示全部楼层
solojimes 发表于 2013-3-18 09:44
你把你的程序贴上来

代码贴上了初始化和发送部分,帮忙看一下!

出0入0汤圆

 楼主| 发表于 2013-3-18 16:52:29 | 显示全部楼层
catch2000 发表于 2013-3-18 16:14
SIM900A,
我有时候用来传50,60K的数据文件,
大部分时候都是对的,

我感觉一个是GPRS设置的问题,一个是电源可能有问题。最后也许是在市中心,受语音业务的影响比较大?

出0入0汤圆

发表于 2013-3-20 10:40:59 | 显示全部楼层
jack_1860 发表于 2013-3-18 16:52
我感觉一个是GPRS设置的问题,一个是电源可能有问题。最后也许是在市中心,受语音业务的影响比较大? ...

这个肯定是个问题,

电源的问题是我们能够控制的,
但是对于语音业务造成的影响,
就不是我们能控制的了。

还有就是使用的地方信号质量比较低,
而处于的位置,又是语音业务比较多的地方
就更难说了。

出0入0汤圆

 楼主| 发表于 2013-3-20 17:06:57 | 显示全部楼层
catch2000 发表于 2013-3-20 10:40
这个肯定是个问题,

电源的问题是我们能够控制的,

不知我的初始化设置是否有问题?

出0入0汤圆

 楼主| 发表于 2013-3-20 17:09:17 | 显示全部楼层
SIM900A读到的信号强度为20左右,比较正常。主要担心是设置、电源、缓冲区以及语音对模块的影响。

出0入0汤圆

发表于 2013-3-21 10:26:13 | 显示全部楼层
jack_1860 发表于 2013-3-20 17:09
SIM900A读到的信号强度为20左右,比较正常。主要担心是设置、电源、缓冲区以及语音对模块的影响。 ...

SIM900A按照网上的一些步骤是可以的,
记得有这方面的帖子,
而且由于一些已经配置了,
我们不用配置很多。

这个博客可以参考一下:
http://www.ec66.com/article/list.asp?indexid=4432

出0入0汤圆

发表于 2013-3-27 15:35:22 | 显示全部楼层
我做DTU开发的 加我QQ我告诉你 qq:627255898 我叫孙大明

出0入0汤圆

发表于 2013-3-27 17:05:01 | 显示全部楼层
是不是时序有问题啊

出0入0汤圆

发表于 2013-3-27 17:28:32 | 显示全部楼层
首先你用的是外部晶体没错吧。如果我没记错STM32用8MHz的晶体配置115200的波特率会有一点点误差的。你又刚好连续发送很多数据,是否可能出错。
我用SIM900A没有基本没发现这个问题,当然,最好还是有应答机制,接收端没应答就超时重发,这样偶尔穿错一次也没啥。当然出错太频繁就要找原因。
还有我在每次发送IPSEND(具体详细命令懒的翻手册了)后有延时几十毫秒。不能马上发数据过去,不然报错。。。

出0入0汤圆

发表于 2013-4-17 09:13:53 | 显示全部楼层
我有几个问题要问楼主,1 透传的时候,怎么判断丢帧的问题,你怎么知道传过去了
                      2 怎样从透传退出来
                      3 是不是透传之后不过不关闭透传,gprs还在连接,一直再走流量
                      4 方便加我QQ吗371364118,多谢

出0入0汤圆

 楼主| 发表于 2013-4-19 08:34:56 | 显示全部楼层
我是启动发送命令后等待响应再发送。

出0入0汤圆

发表于 2013-4-19 08:38:54 | 显示全部楼层

出0入0汤圆

发表于 2013-4-28 00:49:53 | 显示全部楼层
数据中有0X1A的话,后面的数据将会丢失.

出0入0汤圆

发表于 2013-9-25 15:31:22 | 显示全部楼层
检测发送后的“seng ok”啊,收到再发下一条,否则重连TCP再发

出0入0汤圆

发表于 2013-9-26 18:58:44 | 显示全部楼层
我的也是这样。。郁闷。

出0入0汤圆

发表于 2013-9-26 18:59:01 | 显示全部楼层
或者发回来乱码。。。伤心。

出0入0汤圆

发表于 2013-9-27 09:06:08 | 显示全部楼层
mark。。。

出0入0汤圆

发表于 2013-9-27 09:06:39 | 显示全部楼层
dreampet 发表于 2013-3-17 11:15
发送数据前用AT+CIPSEND?命令查询下剩余缓冲区大小,大于1K才发送。
另外每帧数据最好控制在256字节以内, ...

经验!

出0入0汤圆

发表于 2013-9-27 09:54:46 | 显示全部楼层
应该是发的数据太多了,好像最多才发1K的数据,是封包以后的,建议少发点数据
分几次发送

出0入0汤圆

发表于 2013-9-27 10:00:48 | 显示全部楼层
可能是接收处理部分有问题,通过GPRS发送数据包太长后有可能在接收的时候会被分成不止一包,这样如果接收处理不注意的话就只能收到半截数据了

出0入0汤圆

发表于 2014-1-16 11:10:08 | 显示全部楼层
问题出现频繁吗?还有请问下大家对SIM900这个模块认可程度怎么样,值得大范围的使用吗

出0入0汤圆

发表于 2014-6-26 16:37:16 | 显示全部楼层
xiaofeng87 发表于 2014-1-16 11:10
问题出现频繁吗?还有请问下大家对SIM900这个模块认可程度怎么样,值得大范围的使用吗 ...

同问……
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-11 17:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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