网上找到的资料 先留着



函数清单和注意事项

(底层驱动部分)

1. IO口初始化:控制 IO 和通讯 IO,控制包括电源控制,复位和低功耗模式,通讯就是串口啦,相信大家应该都很熟悉了。

当然在这个基础上还可以组合出复位的功能,复位在GPRS连接出错的时候会用到。

2. 串口初始化:模块的波特率为115200,8位数据位,1位停止位,没有校验位和流控。

串口还需要两个发送函数,发送一个字节和发送一串字符串的。串口中断处理函数放到后面说。

3. AT指令操作:发送AT指令

设置GPRS数据长度

发送GPRS数据内容

接收GPRS数据内容

AT指令/GPRS数据解析

4. 串口中断函数:包含AT指令/GPRS数据解析 和 接收GPRS数据内容,判断AT指令是否发送成功。

AT指令返回的结束符除了设置GPRS数据长度的是'>',其他都是"\r\n"。但是在判断接收结束的时候不能只考虑这两种情况,还有一个情况需要特殊处理,那就是当接收到GPRS数据的时候,完全有可能会出现'\r','\n'对应的十六进制数。解决的办法就是在接收到"+CIPRCV:xxx,"的时候,附带判断接收到的数据长度,"xxx"代表的是GPRS数据长度信息,字符型格式,在这里还需要做一个格式转换。数据长度的位数根据字符 ','来进行判断,',' 将AT命令和GPRS数据进行分割。"xxx"换算过来的数值决定了 ',' 后面接收到的数据长度。

由于目前采用的SIM卡模块内部没有自带缓冲区,在GPRS数据接收的时候,需要另外开辟一个存储空间用于数据的临时存储,建议采用环形缓冲区Buffer, 将串口接收到的数据按顺序存储,这个部分在串口中断函数里面实现。在大循环里面将数据取出处理,并设置相关标志位。我一开始设计的时候只开辟了一个非环形的缓冲区,每次接收到完整的数据,会从缓冲区的0地址重新开始存储,那么就会导致未及时处理的数据被新的数据冲掉。 不知道有没有别家的SIM卡模块是自带缓冲区的。

(主循环部分)

1. TCP/IP连接流程控制:

step1、"AT\r\n"//检测模块串口工作

step2、"AT+CCID\r\n"//检查是否插卡

step3、"AT+CREG?\r\n"//检查网络注册情况

step4、"AT+CGATT=1\r\n"//附着网络

step5、"AT+CGDCONT=1,\"IP\",\"CMNET\"\r\n"//设置PDP参数

step6、"AT+CGACT=1,1\r\n"//激活网络

step7、 "AT+CIPSTART=\"TCP\",\"121.41.xxx.xxx\",port\r\n"//连接TCPIP服务器

我用的这个模块硬件初始化差不多就要10秒了,在硬件初始化完成后,按照以上七步进行服务器连接,测试下来,连接的成功率还是蛮高的。前面两步是硬件检测用的,如果这两步都测不过,那就需要检查下硬件是否完整。三到六步如果返回ERROR,可重复发送,直至返回OK,每一步之间可间隔数秒。最后一步如果失败,需先关闭连接,再重新发起连接。如果第七步一直连接不成功,那么可以通过控制 IO 复位模块,当然也可以先确认下你的服务器的端口是否打开。

我的经验是连接和通讯的过程中,如果出现错误的情况,复位模块是最有效和快捷的方式。在确认硬件连接正常的情况下,如果多次发送命令失败,返回ERROR的话,那你还是乖乖的复位它吧。

另外两个AT命令也很好用

"AT+CIPCLOSE\r\n"//关闭TCPIP连接

"ATE0\r\n"//关闭回显,关闭自己发给模块的串口数据,调试的时候可以不开启这个功能,方便观察

2. 数据链路层数据处理:实现GPRS数据接收/发送控制,存储串口中断接收到的数据,发送GPRS数据长度和GPRS数据内容。

这个函数里面需要注意的是发送GPRS长度和数据的操作,需要在一次操作流程里面完成。我一开始脑残的将GPRS数据长度和数据发送分开处理,导致设置完数据长度后,发送状态处于准备好的状态,此时只要检测到有数据是需要发送的,便会通过GPRS发送出去,而无法保证是当前数据长度对应的数据帧(我在这里一共开辟了8个数据缓存,但是没有对发送状态进行分开判断)。在设置完数据长度后,需要判断是否接收到字符'>',大概需要50毫秒的时间。一开始分开发送也是和这个'>'字符的操作有关的,我已经帮大家试过了,连在一起发就好了。

发送完GPRS长度帧后,返回字符'>',接着发送数据帧,在模块返回"OK"之前,发送的数据都会被发送到服务器,导致通讯出错。所以在数据发送后,需要等待判断模块是否已经发送成功。

3. 超时判断:检测GPRS数据是否发送失败,失败后可关闭TCP/IP连接,进行重连,如果还是失败,可复位模块,重新进行TCP/IP连接流程。

GPRS模块与STM32的数据传输相关推荐

  1. lora模块通过stm32实现数据传输(按键发送指令)

    使用串口一通过正点原子提供的串口调试助手发送数据给串口三,然后再通过串口三发送到GBC_x,把数据传输给lora模块 需要手动,按键,一条一条发送配置信道速率 串口1直接用的例程就不贴程序了 usar ...

  2. gprs模块http mqtt_在GPRS模块(SIM800C)和STM32芯片上实现MQTT协议 | TsonTec:测量解决方案提供者...

    最近真是的好一个劲的折腾,算是完全搞明白了如何在STM32上实现MQTT协议了. 目录 [显示] 一.本教程中说明的内容 先说说本文化的适用范围吧: 一.使用的芯片是STM32F103C8T6,但是并 ...

  3. STM32物联网项目-GPRS模块介绍

    GPRS模块 SIM800C模块介绍 SIM800C模块可支持4频GSM/GPRS,工作的频段为:GSM850.EGSM900.DCS1800和PCS1900 MHz. 模块的尺寸只有17.6 * 1 ...

  4. STM32物联网项目-GPRS模块通信编程

    GPRS模块通信-编程 实验目的 32单片机通过串口2发送AT指令控制SIM800C检测GPRS网络,连接TCP服务器,连接服务器成功后,通过Doit.am远程信息转发服务将上传至公网服务器的温湿度值 ...

  5. sim卡无线上网公用服务器,有人推出内置SIM卡GPRS模块!GM3S开启无线数传模块新时代!...

    在所有GPRS模块都需要SIM卡槽的时候,有人推出了内置SIM卡的无线数传模块--GM3S,GM3S是GM3的升级之作,继承了GM3的小体积.多功能的优良特点,并更加强大.GM3S是业界一款里程碑之作 ...

  6. linux下GPRS模块的应用程序

    ---------------------------------------------------------------------------------------------------- ...

  7. GSM/GPRS模块 AT指令集C语言编程——基于有方M660+和MSP430单片机

    GSM/GPRS芯片是手机中负责收发短信.拨打电话以及访问GPRS网络的核心器件.有方M660+为深圳有方公司生产的一款超小封装的GSM/GPRS工业无线模块,可以提供高品质的语音.短信.数据业务等功 ...

  8. 浅谈GSM/GPRS模块软硬件设计(基于有方M660+模块和单片机)

    GSM/GPRS芯片是手机中负责收发短信.拨打电话以及访问GPRS网络的核心器件.有方M660+为深圳有方公司生产的一款超小封装的GSM/GPRS工业无线模块,可以提供高品质的语音.短信.数据业务等功 ...

  9. Linux-C实现GPRS模块发送短信

    "GSM模块,是将GSM射频芯片.基带处理芯片.存储器.功放器件等集成在一块线路板上,具有独立的操作系统.GSM射频处理.基带处理并提供标准接口的功能模块.GSM模块根据其提供的数据传输速率 ...

最新文章

  1. GNU/Linux下有多少是GNU的?
  2. ajax脚本格式,jQuery ajax调用 - jim脚本响应是什么格式?
  3. vlookup练习_VLOOKUP拉住她的手,数据查询不用愁
  4. maven安装与创建多模块项目【转】
  5. 粤西茂名实现光网全覆盖 智慧城市改变民众生活
  6. K8S_Google工作笔记0011---通过二进制方式_为APIServer生成自签证书
  7. POJ 1789 Truck History(最小生成树)
  8. ElasticSearch安装分词插件IK
  9. spring事务失效场景三:内部方法调用
  10. 微型计算机原理与接口技术 考题,微机原理与接口技术试题答案
  11. 时间选择器(timepicker)用法
  12. 基于Basys3设计的FPGA多功能电子琴
  13. 如何查看自己的外网 IP 地址
  14. Elasticsearch-7(全文搜索应用分享)
  15. 石家庄网站建设公司详解企业网站建设方案策划
  16. Spark面试题修改版本
  17. iOS Swift 使用 CLLocationManager 定位
  18. 百分点大数据技术团队:低代码平台实践
  19. springboot毕设项目海尔空调售后服务系统d70j3(java+VUE+Mybatis+Maven+Mysql)
  20. 【渝粤教育】国家开放大学2018年春季 0701-21T公共政策学 参考试题

热门文章

  1. 命令行net time同步时间(内网)(转载)
  2. 做生意和追女人,“绝色真经”!
  3. 【博学谷学习记录】超强总结,用心分享|Java基础语法
  4. 淘宝刷信用教程曝光:“一钻”售价仅为250元
  5. 深度学习中的Normalization总结(BN/LN/WN/IN/GN)
  6. 2020年黄历表_老黄历2020黄道吉日一览表-万年历老黄历2020年黄道吉日查询【蜜匠婚礼】...
  7. 专利申请的费用和提交材料
  8. 自动驾驶车辆控制(车辆运动学模型)
  9. 计算机英语背单词技巧,闽教小学英语快速单词记忆法,怎么背单词下午、计算机、教室、长颈鹿、请...
  10. 2023美赛数学建模竞赛 C题思路分析