以下内容摘抄自互联网:

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. (2) Java SQL框架(java.sql.*)中常用接口详解

    Driver接口:定义了一个驱动程序接口,每一个数据库的JDBC driver都应该实现这个接口,用于访问对应的数据库.比如MySQL的driver为com.mysql.jdbc.Driver.Jav ...

  2. TrippleDESCSPEncrypt 加密解密试试看

    public class TrippleDESCSPEncrypt { //12个字符 private static string customIV = "4vHKRj3yfzU=" ...

  3. 【Leetcode_easy】661. Image Smoother

    problem 661. Image Smoother 题意:其实类似于图像处理的均值滤波. solution: 妙处在于使用了一个dirs变量来计算邻域数值,看起来更简洁! class Soluti ...

  4. SQLPrompt 6.3.0.354 完美破解 安装于 SQL Server 2012/2014

    SQL SERVER 2012格式化 SQL SERVER 2014格式化 SQLPrompt_6.4.0.641 破解版 百度云下载 迅雷下载 百度网盘下载 SQL Prompt 是一款拥有SQL智 ...

  5. 导航current背景

    ========================================简单一点的 var locationUrl = location.href.toLowerCase(); //导航cur ...

  6. word模板文档填充数据

    1.切记一定要用Word 97-2003(*.doc)格式的文档另存为 *.xml格式的文件,而不能用 Word 2007(*.docx)格式的word文档转 *.xml,将转成功之后的xml文件放入 ...

  7. windows服务器入门 php的安装

    下载PHP安装包(下载地址: http://windows.php.net/download/ ),本文档以5.3版本为例,选择如下图对应的安装包: 下载完成后进行安装PHP,需要选择Web服务时,选 ...

  8. 怎么通过外网来访问自己在Tomcat服务器中配置的项目

    目前还没有试验过 https://blog.csdn.net/qingyisuo/article/details/80086105

  9. Git强制推送代码到多个远程仓库

    git push -f origin master 注释: origin 远程仓库名, master 分支名,-f 为force,意为:强行.强制.

  10. C++ 日志库 boost::log 以及 glog 的对比

    日志能方便地诊断程序原因.统计程序运行数据,是大型软件系统必不可少的组件之一.本文将从设计上和功能上对比 C++ 语言常见的两款日志库: boost::log 和 google-glog . 设计 b ...