GPRS模块开发初步(软件)

2023-05-16

文章来源:http://blogold.chinaunix.net/u1/56388/showart_1121149.html

AT 指令简介

AT 指令集一般指专门用来控制调制解调器的指令集。该指令集最初由美国 Hayes 公司推出,专门用于数据传输通信领域,目前己成为全球通用的标准,任何与 Hayes 兼容的调制解调器都可使用这些指令。

AT 指令是以 AT 开头、结尾的特定字符串, AT 后面紧跟的字母和数字表明 AT 指令的具体功能。 AT 指令具有以下特点:

①几乎所有的 AT 指令 ( 除了 “A/” “+++” 两个指令外 ) 都以一个特定的命令前缀开始,以一个命令结束标志符结束。命令前缀一般由 AT 两个字符组成,命令结束符通常为。

每一条 AT 指令执行完后,调制解调器都会返回一个结果 ,以对接收到的命令作出应答。

指令集分成标准 AT 指令集 (Standard V 25ter ATCommands) AT 增强指令集 (AT Commands for En-hanced Functions) 和传真指令集 (AT Commands forFAX) 等。根据具体的产品,不同的厂商还会设计特殊的指令集供设置使用,例如奉系统中使用的无线 GSM 模块,根据 ETSI-GSM07 07 ETSI-GSM07 05 协议,给调制解调器增加了一些扩充指令。

 

2 登录 GGSN 的过程

  系统的一个难点是微控制器登陆 GPRS 网关( GGSN )并与网关通过 LCP PAP IPCP 协议进行协商的过程。 LCP PAP IPCP 协议的帧结构大同小异 , 最常用的为请求( REQ )、同意( ACK )和拒绝( NAK )三种帧。微控制器与 GGSN 各为一方进行协商 , 任何一方都可以发送 REQ 帧请求某方面的配制 , 另一方觉得配置不能接受会回应 NAK , 如果可以则回应 ACK 帧。为了节省资源 , 我们只处理这三种数据帧 , 其它链路问题都由微控制器在程序控制下自己重新拨号解决。

  协商过程大致描述如下:在拨号成功连接后 ,GGSN 首先会返回一个 PAP REQ 数据帧。我们发送一个空 LCP REQ , 以强迫进行协议协商阶段。随后 ,GGSN 发送 LCP 设置帧 , 我们拒绝所有的设置并请求验证模式。 GGSN 选择 CHAP PAP 方式验证 , 我们只接受 PAP 方式。然后 , 进行 PAP 验证用户名和密码过程 , GPRS 中用户名与密码都为空 , 如果成功 ,GGSN 会返回 IPCP 报文分配动态 IP 地址。此时 , 就完成了与 GGSN 的协商过程。协商过程的状态转换如图 4 所示。

 

 

 

 

3 软件设置

 

硬件连接完成后 , 在进行 GPRS 上网操作之前 , 首先要对 GPRS 模块进行一定的设置。 主要的设置工作有:

     设置通信波特率。可以使用 “AT+IPR=115200” 命令,把波特率设为 115 200 bps 或者其他速率。 SIMCOM 模块默认为 ll5200 bps

  设置接入网关 , 通过 AT+ CGDCONT=1, “IP”, “CMNET” 命令设置 GPRS 接入网关为移动梦网。

  ③设置移动终端的类别 , 通过 AT+CGCLASS=“B” 设置移动终端的类别为 B , 即同时监控多种业务 ; 但只能运行一种业务 , 即在同一时间只能使用 GPRS 上网 , 或者使用 GSM 的语音通信。

测试 GPRS 服务是否开通 , 使用 AT+CGACT=1,1 命令激活 GPRS 功能。如果返回 OK, GPRS 连接成功 ; 如果返回 ERROR, 则意味着 GPRS 失败。这时应检查一下 SIM 卡的 GPRS 业务是否已经开通 ,GPRS 模块天线是否安装正确等问题。

中国移动在 GPRS Internet 网中间建立了许多相当于 ISP 的网关支持节点( GGSN , 以连接 GPRS 网与外部的 Internet 网。 GPRS 模块可以通过拨 “*99***1#” 登录到 GGSN 上动态分配到 Internet 网的 IP 地址。其间 GPRS 模块与网关的通信要符合点对点协议( Point to Point Protocol, PPP , 其中身份验证时用户名、密码都为空。使用 PPP 协议登录上之后 , 就可以通过 GGSN 接上 Internet 了。

 

 

 

 

 

GPRS Moderm 实现 TCP 连接的 AT 指令主要操作步骤:

   AT/r

   AT+ccid/r // 检测是否装有 SIM 
   AT+cgmr/r //
检测软件版本, 5.0  以上的才有 GPRS  功能支持

   AT+csq/r // 检测信号质量,确定是否可以登陆上网络;若返回 10--31 0 之间的信号数字则继续,

            如果信号是 99 99 ,则应该考虑不停的的让模块去搜寻网络。

  

 

   AT+CGCLASS="B"/r  // 设置模块工作类型

   AT+CGDCONT=1,"IP","CMNET"/r 

   AT+CGATT=1  // 激活 PDP ,获得 IP

 

   AT+CIPCSGP=1,"CMNET"/r

   AT+CIPSTART="TCP",211.147.18.79,1433/r

   AT+CIPSEND/r

   >   // 返回 “>” 后输入要传输的数据,再发送 CTRL+Z, 即将所要发送的数据发送到指定 IP 的服务器上
   AT+CIPCLOSE/r  //
只有在 TCP/UDP 处于 CONNECT OK 的状态下才返回 OK, 否则返回 ERROR

   AT+CIPSHUT/r   // 关闭移动场景

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

GPRS模块开发初步(软件) 的相关文章

随机推荐

  • Catkin创建工程

    介绍 catin make编译过程 xff0c cmake指令依据你的CMakeLists txt 文件 生成cmakefiles和makefile文件 make再依据此cmakefiles和makefile文件编译链接生成可执行文件 ca
  • ros中使用serial包实现串口通信

    一 Ubuntu下的串口助手cutecom 1 安装cutecom并打开 xff1a sudo apt get install cutecom sudo cutecom 2 查看电脑链接的串口信息 xff08 名称 xff09 xff1a
  • 构造函数后冒号的作用

    构造函数后面的冒号起分割作用 xff0c 是类给成员变量赋值的方法 xff0c 初始化列表 xff0c 更适用于成员变量的常量const型 struct XXX XXX y 0xc0
  • 字节序(byte order)和位序(bit order)

    字节序 byte order 和位序 bit order 在网络编程中经常会提到网络字节序和主机序 xff0c 也就是说当一个对象由多个字节组成的时候需要注意对象的多个字节在内存中的顺序 以前我也基本只了解过字节序 xff0c 但是有一天当
  • __thread关键字

    thread是GCC内置的线程局部存储设施 xff0c 存取效率可以和全局变量相比 thread变量每一个线程有一份独立实体 xff0c 各个线程的值互不干扰 可以用来修饰那些带有全局性且值可能变 xff0c 但是又不值得用全局变量保护的变
  • SCRUM框架包括3个角色、3个工件、5个活动、5个价值

    转自http www scrumcn com agile scrum knowledge library scrum html SCRUM 是一个用于开发和维持复杂产品的框架 Scrum 是一个用于开发和维持复杂产品的框架 xff0c 是一
  • Hadoop伪分布式安装步骤

    Hadoop伪分布式安装步骤 目录 Hadoop伪分布式安装步骤 一 永久关闭防火墙 二 配置主机名 1 编辑network文件 xff1a vim etc sysconfig network 2 将HOSTNAME属性改为指定的主机名 x
  • MPU6050的一些问题及解决办法

    最近做的项目要用到MPU6050 xff0c 出现了以下这些问题 xff1a 当然 xff0c 也有一些奇怪的事 xff0c 我是在淘宝上买的现成的模块 xff0c 那个ADO无论接地还是高电平 xff0c MPU的地址都是用0xD0 xf
  • 程序员的期望与现实

    来自 xff1a 程序员最幽默 xff08 ID xff1a humor1024 xff09 0 我期望的代码 VS 实际代码的工作方式 1 我认为我的代码 VS 项目经理看到的代码 2 我心里想做的架构 VS 我真正写出来的架构 3 开发
  • PixHawk Bootloader

    在https github com PX4这里下载的Bootloader代码 xff0c 编译TARGET HW PX4 FMU V2这个版本的 xff0c 然后将代码烧录到STM32F4探索者这块开发板上 xff0c 代码能够正常运行 x
  • 解决Ubuntu 显卡驱动升级导致的 显卡驱动和内核版本不匹配的问题

    解决Ubuntu 显卡驱动升级导致的 显卡驱动和内核版本 xff08 同时内核存在问题 xff09 不匹配的问题 不要轻易升级显卡驱动版本 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xf
  • NVIDIA Jetson Xavier NX入门(1)——镜像烧写

    NVIDIA Jetson Xavier NX入门 xff08 1 xff09 镜像烧录 1 准备SD卡并且格式化 推荐使用SD Card Formater软件进行SD卡格式化 xff0c SD Card Formater软件下载地址 界面
  • NVIDIA Jetson Xavier NX入门(2)——系统设置;环境搭建

    NVIDIA Jetson Xavier NX入门 xff08 2 xff09 系统设置 环境搭建 1 NVIDIA Jetson Xavier NX连接显示器 键盘 鼠标 xff1b 2 Jetson Xavier NX连接电源后 xff
  • NVIDIA Jetson Xavier NX使用UART进行串口通信

    NVIDIA Jetson Xavier NX使用UART进行串口通信 一 NVIDIA Jetson Xavier NX的40pin接口 NVIDIA Jetson Xavier NX开发板俯视图 xff1a 2 开发板上打印出的UART
  • 远程服务器时Ubuntu报错:qt.qpa.xcb: could not connect to display

    远程服务器时Ubuntu报错 xff1a qt qpa xcb could not connect to display 远程服务器时Ubuntu报错 xff1a qt span class token punctuation span q
  • linux下USB设备编号固定

    linux下USB设备插入时系统自动分配编号 xff0c 多个相同设备时 xff0c 按插入顺序分配编号 以串口为例 xff0c 插入的USBtoSerial顺序不一样时 xff0c 系统分配的设备号是不一样的 但是每个USB接口对设备来说
  • Java进阶书籍推荐

    学习Java xff0c 书籍是必不可少的学习工具之一 xff0c 尤其是对于自学者而言 废话不多说 xff0c 下边就给大家推荐一些Java进阶的好书 第一部分 xff1a Java语言篇 1 Java编程规范 适合对象 xff1a 初级
  • GitHub+Docker Hub自动构建镜像

    一 什么是Dockerfile xff1f Dockerfile是一个包含用于构建镜像的命令的文本文档 可以使用在命令行中调用任何命令 Docker通过读取Dockerfile中的指令自动生成镜像 它们简化了从头到尾的流程并极大的简化了部署
  • 前端工程化 - 剖析npm的包管理机制(完整版)

    导读 现如今 xff0c 前端开发的同学已经离不开 npm 这个包管理工具 xff0c 其优秀的包版本管理机制承载了整个繁荣发展的NodeJS社区 xff0c 理解其内部机制非常有利于加深我们对模块开发的理解 各项前端工程化的配置以加快我们
  • GPRS模块开发初步(软件)

    文章来源 xff1a http blogold chinaunix net u1 56388 showart 1121149 html 1 AT 指令简介 AT 指令集一般指专门用来控制调制解调器的指令集 该指令集最初由美国 Hayes 公