SIM800模块是全球领先的M2M模块及解决方案供应商芯讯通无线科技有限公司的一个产品系列,使用AT指令的GSM/GPRS无线通讯模块,就自己的使用过程记录下SIM800C系列模块建立TCP连接到远端服务器过程,模块基本使用通用异步串口通讯,模块内部TCP /IP应用程序用于GPRS服务。

先对AT命令做一个简单介绍吧:
AT命令以AT开头,以回车符结束。一个简单命令如:AT回车符,模块对命令的响应为:回车符、换行符response回车符、换行符
AT命令大致可分为三类:  
1、基本AT命令:AT<><>或者AT&<><>,如:ATE1(打开串口回显),AT&D1(开启DTR低电平切换)。
2、S参数型AT命令:ATS<>=<>,如:ATS0=1(设置模块来电一声自动接起)。
3、扩展型AT命令(四种):
a)、AT+<>=?
用于查看此命令在模块中允许设置的参数范围,如发送命令:AT+CREG=?
正常时响应:+CREG:(0-2)
                     OK
b)、AT+<>?
用于查看此命令在模块中的当前设置值,如发送命令:AT+IPR?
正常时响应:+IPR:0
                     OK
c)、AT+<>=<>
用于设置当前AT命令x的参数值。如发送命令:AT+CMGF=0
正常时响应:OK
d)、AT+<>
查看模块内部的一些状态值。如发送命令:AT+CSQ
正常时响应:+CSQ:29,0
                    OK
现在利用上述格式的一些命令描述模块建立TCP连接到远端服务器的过程,先介绍模块建立一路链接的过程,建立多路连接时,方法基本相同。目前SIM800系列模块共支持6路链接。从模块开机到建立TCP链接过程如下:
1、等待模块开机后,向模块串口发送“AT”指令,让模块自适应主机串口波特率,设置成功时,返回:OK
2、向模块串口发送“AT+CPIN?”指令,检查SIM状态,SIM正常时,
     返回:+CPIN:READY
       OK
3、向模块串口发送“AT+CSQ”指令,检查网络信号强度,命令发送成功时,
      返回:+CSQ:29,0
        OK
4、向模块串口发送“AT+CREG”指令,检查GSM网络注册状态,发送成功时,
     返回:+CREG:0,1
       OK
     其中1代表已注册本网,若为2代表未注册。
5、向模块串口发送“AT+CGREG”指令,检查GPRS网络注册状态,发送成功时,
     返回:+CGREG:0,1
       OK
     其中1代表已注册本网,若为2代表未注册。
(若已设置命令“AT+CREG=1”和“AT+CGREG=1”时,模块在注册GSM和PGRS网络成功或发生变化时,将主动上报其注册状态,如上报结果:+CREG:2或+CGREG:2。其中2表示GSM和GPRS网络未注册)
6、(可选命令)向模块串口发送“AT+CMGF=0”指令,设置短消息为PDU模式,发送成功时,返回:OK
7、(可选命令)向模块串口发送“AT+CNMI=2,1,0,0,0”指令,设置新短消息URC上报格式,发送成功时,返回:+CMTI:“SM”,1
     (此返回结果为收到新短消息,1为此新短消息在存储器中的序号)
8、向模块串口发送“AT+CGATT=1”指令,使模块附着GPRS网络,发送成功时,返回:OK
     (此时模块内部TCP协议栈的状态为:IP IINITIAL)
9、向模块串口发送“AT+CIPMODE=1”指令,设置GPRS的TCP/IP透传模式,发送成功时,返回:OK
     (其中1为透传模式,0为非透传模式,即命令模式)
10、向模块串口发送“AT+CSTT="CMNET"”指令,设置APN,发送成功时,返回:OK
     (此时模块内部TCP协议栈的状态为:IP START)
11、向模块串口发送“AT+CIICR”指令,激活移动场景,建立无线链路,发送成功时,返回:OK
     (此时模块内部TCP协议栈的状态为:IP CONFIG或IP GPRSACT)
12、向模块串口发送“AT+CIFSR”指令,获取模块本地IP地址,发送成功时,返回模块的本地IP地址,如:10,143,166,133
13、向模块串口发送“AT+CIPSTART=“TCP”,“118.114.247.142”,“40006””指令,设置要连接的远端服务器类型,IP地址或域名,端口号。发送成功时,
       返回:CONNECT
         OK
14、若返回CONNECT值以后,即连接远端服务器成功,并进入透传模式,可随意收发数据了。
一路链接的以上过程如图所示:

 
建立多路链接时:
1、需在10步命令前,向模块串口发送“AT+CIPMUX=1”指令,设置多链路模式,发送成功时,返回:OK
2、第13步命令,向模块串口发送“AT+CIPSTART=0,“TCP”,“118.114.247.142”,“40006””指令,指定在第0路建立TCP链接。发送成功时,返回:CONNECT   OK
     若第13步命令为,向模块串口发送“AT+CIPSTART=1,“UDP”,“118.114.247.142”,“40007””指令,指定在第1路建立UDP链接。发送成功时,返回:CONNECT   OK
3、若要通过第0路链接发送数据,则向模块串口发送“AT+CIPSEND=0”命令。然后就可以随意收发数据了。
多路链接的以上过程如图所示:

SIM800系列模块GSM/GPRS建立TCP连接到远端服务器过程——新浪博客迁移相关推荐

  1. python datetime strptime_python datetime模块strptime/strptime format常见格式命令_施罗德_新浪博客...

    python datetime模块strptime/strptime format常见格式命令 (2013-02-21 11:04:05) 转载▼ 标签: datetime it 分类: python ...

  2. Action Golf 四个魔法球实战训练系列_huatuo_新浪博客

    Action & Golf 四个魔法球实战训练系列_huatuo_新浪博客

  3. WINCC与STEP7的仿真连接_过路老熊_新浪博客

    一.概述 测试WINCC与西门子PLC的连接可以直接在本机完成,不需要实际PLC 二.连接步骤 1.  将程序下载至PLC-SIM中,并将PLC-SIM中的连接方式选为PLCSIM(TCP/IP),如 ...

  4. kafka系列--简介_李孟_新浪博客

    Kafka简介: 1.Apache Kafka是一个开源消息系统,由scala写成.是由Apache软件基金会开发的一个开源消息系统项目. 2. Kafka最初是由LinkedIn开发,并于2011年 ...

  5. 博图软件中多重背景块的建立_过路老熊_新浪博客

    用过Step7的技术人员都知道,在功能块FB的使用过程中需要配合背景数据块DB进行使用,当对一个建立了形式参数的FB进行重复调用时,调用多少次,就必须配套相应数量的背景数据块.因此当FB的调用次数较多 ...

  6. UGNXCAM加工模块二次开发视频教程全集(全套视频教程)_NXopen-UG二次开发_新浪博客

    UG NX CAM 加工模块二次开发视频教程全集(胡君录制) 教程简介: 本套 NX CAM 加工模块二次开发视频教程由胡君录制,教程详细的讲解了关于NX加工模块开发的各个知识点,以及同时使用UFun ...

  7. jvm系列_李孟_新浪博客

    url:jvm系列--GC url:jvm系列--堆分析 url:jvm系列--监控工具 url:jvm系列--类加载器 url:jvm系列--锁

  8. [转载]HC-SR501 人体红外感应模块_北国的雪_新浪博客

    热释电红外感应模块 原文地址:HC-SR501 人体红外感应模块作者:XingHeStudio 技术参数: 1.工作电压:DC5V至20V 2.静态功耗:65微安 3.电平输出:高3.3V,低0V 4 ...

  9. [转载]红楼梦四大家族人物关系图谱(12系列图表)_RWERWERWE_96921_新浪博客

    原文地址:红楼梦四大家族人物关系图谱(12系列图表) 作者: 静心聆听62 红楼梦主要人物关系 01红楼梦四大家族人物关系图谱 02红楼梦人物关系简图 03红楼梦人物关系详图 04红楼梦四大家族奴隶图 ...

  10. mysql连接不上_前进的火车_新浪博客

    报错:### Error querying database.  Cause: org.springframework.jdbc.CannotGetJdbcConnectionException: F ...

最新文章

  1. oracle快速导出1t数据,使用sqluldr2快速高效大批量导出Oracle数据
  2. Powerful array CodeForces - 86D (莫队算法)
  3. C++ 菱形继承 的 对象模型01
  4. Codeforces 1045. A. Last chance(网络流 + 线段树优化建边)
  5. java将一个整数反转输出,输入一个整数,实现反转输出,如输入123,输出321。...
  6. asp 开发app_从零开始实现 ASP.NET Core MVC 的插件式开发(七) 问题汇总及部分问题解决方案...
  7. Java vs ECS,垃圾回收的乾坤大挪移?
  8. java读取配置文件的详细写法,Properties配置文件读取相关java知识
  9. mybatisPlus代码自动生成
  10. “你好,世界!” Python教程
  11. css实现带边框,半透明气泡定位浮层效果
  12. Java進階:ExecutorService 線程池
  13. 用Arduino做一个能发射水弹的遥控小车
  14. new和delete,malloc和free
  15. 零基础入门网络渗透到底要怎么学?
  16. 浅谈产品经理入门和学习路径
  17. 繁体与简体之间的转化
  18. resnet修改输出类别
  19. element UI-远程搜索(el-select)
  20. vscode php中文乱码,vscode打开乱码怎么办

热门文章

  1. 腾讯信鸽推送php,腾讯信鸽推送业务封装类-PHP版
  2. 【读书笔记->统计学】12-02 置信区间的构建-t分布概念简介
  3. POSIX和CMSIS接口
  4. 仓库管理无纸化,WMS仓库管理软件+条形码技术
  5. SRIO系统初始化过程和路由配置
  6. aes-gcm模式前端加解密(html页面 js)——使用node-forge库
  7. Android学习路线指南-------任玉刚
  8. Excel如何从一组数据中随机抽取若干个数据
  9. 开发板上rmmod卸载驱动的时候,常见的错误总结
  10. 如何关闭Win10易升更新?