以下内容摘抄自互联网:

ppp拨号 与 at命令的疑问

GPRS模块在Linux平台上ppp拨号上网总结与心得

以PPP拨号实现GPRS与因特网的数据通信的具体实现流程

问:

我刚接触GPRS,了解AT指令方式如何实现的GPRS网络通信,但对PPP拨号不太了解,有以下问题:
1)ppp拨号与用at命令实现gprs网络通信有什么区别?ppp拨号完成的哪一步骤?
2)看了一些资料,ppp拨号是不是只是联网,自己还要按TCP或UDP编写socket,实现网络通信?
3)一般目前的使用gprs模块的产品采用哪一种开发的方式?在嵌入式linux项目开发中,这两种方式如何进行选择?
4)3G模块开发上与之有哪些区别?

我看资料来理解这两种方式使用协议栈不同,ppp是外置协议栈,AT命令一般把tcp/ip协议栈内嵌到模块处理软件中。
对嵌入式linux系统而言ppp协议在内核中加载,还要加自动拨号处理。但之后还要做哪些工作,如数据收发是否要写socket或经处理后发送,其流程如何就不清楚了。
at命令是gprs模块通过RS232与系统进行数据交互,底层不需要做处理。
但两者的优缺点,并不太了解。

答1:

1)ppp拨号与用at命令实现gprs网络通信有什么区别?ppp拨号完成的哪一步骤?
先通过AT命令,让设备激活PDP,然后PC切换到数据模式,由操作系统发起PPP协商,获取IP地址和鉴权,然后就可以上网了。
2)看了一些资料,ppp拨号是不是只是联网,自己还要按TCP或UDP编写socket,实现网络通信?
拨号已经不需要你自己做了,因为已经建立了Modem的通道,就等于插上网线了,其他的自己的功能自己玩。
3)一般目前的使用gprs模块的产品采用哪一种开发的方式?在嵌入式linux项目开发中,这两种方式如何进行选择?
不明白你啥意思,基本上都采用Modem拨号即可。
4)3G模块开发上与之有哪些区别?
没有区别,都是上网,功能复杂了一些,你根据需要选择,如果只是上网,基本上没有变化。

答2:

1)ppp拨号与用at命令实现gprs网络通信有什么区别?ppp拨号完成的哪一步骤?
ppp拨号处理实现at的方式,还虚拟出了网卡,让网络通信标准化。
 2)看了一些资料,ppp拨号是不是只是联网,自己还要按TCP或UDP编写socket,实现网络通信?
ppp只是做到网卡这一步,通信还需要socket编程。
 3)一般目前的使用gprs模块的产品采用哪一种开发的方式?在嵌入式linux项目开发中,这两种方式如何进行选择?
linux我觉得用ppp比较好。可以使编程结构简单,移植好。当然如果程序特别特别小,还是可以用at的
 4)3G模块开发上与之有哪些区别? 
对于ppp来说,才不管你3G, 2G.这就是好处。

中国移动在GPRS网中建立了许多相当于ISP的GPRS网关支持结点(GGSN),以连接GPRS网与外部的Internet网络。要使用GPRS功能首先要登录GPRS网络中的GGSN,这个工作可以通过相关AT命令完成。
登录的基本过程如下:通过AT+CGATT=?命令检查MC35i是否附着GPRS,返回0为未附着,返回1为已附着。若没有附着,则发送AT+CGATT=1命令进行附着。"AT+CGDCONT=1,IP,CMNET"定义PDP(分组数据协议)上下文,其中1为PDP上下文标识,IP表明将要传输的数据包类型为IP数据包,CMNET为中国移动的GPRS网关;ATD*99***1#命令进行数据拨号,其中1与上面的PDP上下文标识对应。在上述AT命令正常执行后,MC35i就登录到GPRS网络。但由于MC35i没有TCP/IP协议栈,控制器必须自行处理相关的协议解析工作才能进行数据传输。为了能够进行IP数据包的传输,就必须首先实现数据链路层PPP协议。

以PPP拨号实现GPRS与因特网的数据通信的具体实现流程:    
  1、GPRS 模块的ECHO关闭,MCU发送ATEOV1到GPRS模块。  
  2、完成接入初始化:AT+CGDCONT=1,“IP”,“CMNET”。  
  3、呼叫CMNET:ATD*99***1#。  
  4、MODEN返回正确的CENNECT信息。  
  5、终端主动发送LCP数据包(REQ,ACK,Reject)进行链路协商,据服务器ISP提供商的   不同可能也有不同  
  ISP发生的选项若终端不接爱,则返回Reject  
  服务器ISP发送LCP(Request)终端ACK则无需拒绝Reject;  
  任何一方接受请求时发ACK,不处理NAK数据包  
  不可链路则重复发送(程序和MCU机制完成)直至连接成功  
  6、LCP配置成功进入PAP认证,目前中移动用明文密码认证身份,认证通过读取SIM卡信息来完成身份认证,以电话号码来识别用户名和密码,因此发送用户名和密码的数据包可以为NULL。  
  7、PAP通过以后需要进行IP协调配置(IPCP),选项3配置(IP地址)而网关与DNS配置信息可省略,发送NAK选项3配置,发00.00.00.00到服务器,返回终端目前的IP,  
  这一IP可用否,要看CMNET的设置  
      若CMNET将局域网内部直接路由关闭后,可以通过PC+GPRS方式利用PING测试,测试通过则可用。  
      否则就要进行IP地址和端口的映射转换后才可进行通讯。  
  8、IPCP通过后,要有相关NCP协议进行网络层协议的选择TCP/IP或UDP,进行数据传输。本方案之中,可以无需考虑相关的网络层数据传输协议  
  9、模式转换,无需中断连接的前提下GRRS的数据模式―――   AT Command状态使用     +++命令切换,若切回数据状态输入ATO到CMS91 GPPRS MODULE。  
  10.中断GPRS 的PPP连接,可用LCP包完成///或用AT     Command状态的ATH指令挂断目前的连接。  
  11.   GPRS接到INTERNET后,信道正在通信时,任何外来的呼叫都会没有响应。  
  若无数据传输,这时呼叫信息可达GPRS MODULE ,由于MODULE 此时,在数据状态,在没有使用MULTIPLEX情况下只能通过RING脚得到信息,MCU如要处理过个呼叫可切换到AT Command状态。

wen的d

关于PPP拨号 和 AT指令实现GPRS模块联网的疑问的更多相关文章

  1. sim900GPRS模块ppp拨号上网

    --------------------------------------------- 主机操作系统:Centos 6.5 交叉编译器环境:arm-linux-gcc-4.5.4 开发板平台: F ...

  2. linux下利用GPRS模块发短信、打电话

    一.开发环境     内核版本:linux-3.0    开发板:FL2440(nandflash:K9F1G08 128M)    GPRS模块:SIM900   二.与发短信和拨号相关的 AT 指 ...

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

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

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

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

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

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

  6. 0710 mux协议的作用(ppp拨号时如何和gprs进行at指令交互)

    ppp拨号使gprs上网的同时如何和gprs模块进行at指令的交互,这是一个问题. 在linux中,ppp拨号上网是内核中支持的,只需要在内核配置中选上. ppp拨号的方式使gprs进行上网与at指令 ...

  7. GPRS模块在Linux平台上ppp拨号上网总结与心得

    linux平台的ppp拨号上网,(注明:这里只谈命令行拨号,用linux就要习惯和熟练使用命令行) 在网上常见的有三种方式:1.使用智能的ppp拨号软件wvdial:参考案例:本博客的<使用wv ...

  8. 树莓派实现SIM868 ppp拨号上网

    环境:raspbian-stretch(2018-06-27) 树莓派:3代B型 SIM868模块具有GPRS数据传输功能(2G网络),但是模块是通过AT指令控制的,在树莓派上用AT指令控制会非常不方 ...

  9. SIM7600CE TCP/IP连接与PPP拨号上网 4G上网

    SIM7600CE联网测试分为两部分: 1.TCP/IP连接 2.PPP拨号上网 实验环境:ubuntu-meta 16.04 硬件:树莓派3B,SIM7600CE 上网卡:移动的NB-IOT物联网卡 ...

随机推荐

  1. Spark2.x学习笔记:5、Spark On YARN模式

    https://blog.csdn.net/chengyuqiang/article/details/77864246

  2. html页面设置自动刷新

    在中添加如下: <meta HTTP-EQUIV="REFRESH" CONTENT="1"> 其中CONTENT对应刷新的间隔时间,这里为1秒. ...

  3. Python3之多重继承

    继承是面向对象编程的一个重要的方式,因为通过继承,子类就可以扩展父类的功能. Animal类层次的设计,假设我们要实现以下4中动物 Dog-狗狗 Bat-蝙蝠 Parrot-鹦鹉 Ostrich-鸵鸟 ...

  4. self-attention详解

    编写你自己的 Keras 层 对于简单.无状态的自定义操作,你也许可以通过 layers.core.Lambda 层来实现.但是对于那些包含了可训练权重的自定义层,你应该自己实现这种层. 这是一个 K ...

  5. Python爬取链家二手房源信息

    爬取链家网站二手房房源信息,第一次做,仅供参考,要用scrapy.   import scrapy,pypinyin,requests import bs4 from ..items import L ...

  6. in-place数据交换

    实现in-place的数据交换 声明:引用请注明出处http://blog.csdn.net/lg1259156776/ 经典的排序问题 问题描述 一个数组中包含两个已经排好序的子数组,设计一个in- ...

  7. web前端常用meta整理

    标签提供关于HTML文档的元数据.元数据不会显示在页面上,但是对于机器是可读的.它可用于浏览器(如何显示内容或重新加载页面),搜索引擎(关键词),或其他 web 服务. 页面关键词 <meta ...

  8. Python 面向对象总结

    面向对象 类 class 类型 类变量 实例方法 init attack bite 类指针 - 指向父类 对象 对象指针 实例变量 self.name slef.age 组合 一个对象作为一个属性 s ...

  9. 用户字符串操作,这里面包括字符串的decode、encode、substract等等操作

    工具类描述:用户字符串操作,这里面包括字符串的decode.encode.substract等等操作 package cn.hgnulb; import java.io.UnsupportedEnco ...

  10. sql中能使用charindex 不要用 in 。charindex比in快很多

    写SQL语句我们经常需要判断一个字符串中是否包含另一个字符串,但是SQL SERVER中并没有像C#提供了Contains函数,不过SQL SERVER中提供了一个叫CHAEINDX的函数,顾名思义就 ...