目录

  • 一、busybox
    • 1、下载busybox
    • 2、查看busybus
    • 3、查看microcom用法:
  • 二、检测4G模块
    • 1、检测4G模块是否被系统识别
    • 2、检测USB模块是否载入系统
    • 3、列出USB设备
  • 三、开始AT指令集测试
    • 1、先做准备测试
    • 2、拨打电话
    • 3、发短信:
      • (1)发送TEXT格式短信:
      • (2)发送pdu格式短信:

在做4G模块项目的时候,首先要完成串口通信编程的学习,这里就不赘述了,然后就是AT指令的学习,在本文中就记载一下一些常用的AT指令。

一、busybox

在嵌入式平台下,集成有minicom软件,可以实现串口调试功能,但是有的不会集成minicom软件。busybox的文件系统下,有一个更加简单的串口工具microcom。

1、下载busybox

sudo apt-get install busybox

2、查看busybus

busybos


可以看见,其中已经包含了microcom工具。

3、查看microcom用法:


说明:
-t 单位毫秒,无操作自动退出时间。
-s 单位bps,串口波特率。
另外两个参数一般不会用到。

二、检测4G模块

1、检测4G模块是否被系统识别

lsUSB


说明:
这里使用的是 EC20模块,这 是一款支持 PCI Express Mini Card 标准接口的 LTE 模块,EC20 模块封装成标准的 PCIe 接口,实际走的是 USB 信号,并虚拟出多个 ttyUSB 设备节点。
硬件方面连接 好EC20 模块,执行 lsusb 命令,如果出现如图内容,则表示模块已经成功被 Linux 系统识别到。其中,0x2C7C 和 0x0125 分别是 Quectel EC25/EC20 R2.0 的 VID 和 PID 编号。

2、检测USB模块是否载入系统

lsmod | grep usb


说明:
lsmod:是list modules的缩写,即 列出所有模块,所以该命令的作用就是显示已载入系统的模块。

3、列出USB设备

ls /dev |grep ttyUSB

三、开始AT指令集测试

1、先做准备测试

  • 进入测试,并查看AT是否可用正常使用: AT
busybox  microcom -s 115200 /dev/ttyUSB5

  • 查看SIM卡是否到位,返回ready则表示正常: AT+CPIN?

  • 测试信号: AT+CSQ

  • 查看运营商: AT+COPS?

    说明:该命令中可修改运营商和自动/手动连接等。

  • 查看所有可用运营商:AT+COPS=?

    说明:每一个()中的第一个数字就是stat,它会直接告诉我们哪些运营商可用:
    0 未知
    1 可用
    2 当前
    3 禁用

  • 获取模块标识: AT+CGMM

  • 获取模块厂商标识: AT+CGMI
  • 网络注册。获得手机的注册状态: AT+CREG?

    说明:
    +GREG:0,0,表示未注册,终端在搜寻新的运营商;
    +GREG:0,1表示注册本地网(正常);
    +GREG:0,2表示未注册,终端正在搜寻基站;
    +GREG:0,3表示SIM卡注册被拒绝;
    +GREG:0,4未知错误;
    +GREG:0,5表示注册漫游网络(正常)

注意(一些参数说明以及问题的解决办法)
在我上面手动改变了运营商之后,我发现出现了问题,就是我无法再进行拨打电话的操作了,查找一番发现是网络注册被撤销了。

此时我费了一番功夫,终于找到了解决办法:
就是输入 AT+CREG=1 设置允许网络注册主动提供结果代码,然后输入AT+COPS=0,将运营商转成自动模式,然后就发现可以继续进行拨号操作了。

由此我找出了这两个命令的各个参数的含义,记录在下:
(1)AT+CREG 网络注册和漫游
指令:AT+CREG=<mode>
响应:+CREG:<mode>,<stat> [,<lac>,<ci>]

参数说明:
<mode>

0: 禁止网络注册主动提供结果代码(默认设置)
1: 允许网络注册主动提供结果代码: +CREG:<stat>
2: 启用网络注册和位置信息非请求结果码: +CREG:<stat>[,<lac>,<ci>]

<stat>
0:未注册,终端当前并未在搜寻新的运营商
1:已注册本地网络
2:未注册,终端正在搜寻基站
4:未知代码
5:已注册,处于漫游状态

<lac> 位置区编号

<ci> 小区ID

注意:当设置AT+CREG成功时,调制解调器回复OK之后,会将网络注册状态通过响应返回。当网络注册状态发生改变时,调制解调器将状态通过响应反映上来。LAC及CI也可以从+CCED命令查询出来。

(2)AT+COPS( 强制选择和注册GSM网络运营 )
指令:AT+COPS=<mode>[,<format>[,<oper>]]
响应:OK

参数说明:
<mode>  
0  自动模式  被忽略
1  手动选择
2  从网络中手动注销
3  选择尽有有格式
4  手动或自动选择,如果手动失败,则自动使能

<format> 
0  支持长字节格式,能升到16字节长
1  短字节格式
2  数字格式

<oper>    运营商
但是这个操作只默认在有服务的情况下才可以使用。

2、拨打电话

  • 拨打电话: ATD电话号码; (电话号码后面一定要加分号)
  • 来电显示: AT+CLCC(有电话打过来串口会打印RING提示。)
  • 接电话: ATA
  • 挂电话: ATH

3、发短信:

  • 查看目前的短信编码模式:AT+CMGF?
  • 切换编码模式:
    AT+CMGF=0 //PDU模式
    AT+CMGF=1 //TEXT模式
(1)发送TEXT格式短信:
  • 发送短信
AT+CMGS=”收信号码”
… (此处为发送内容)
键盘按键 ctrl+z(0x1A)结束

  • 读取短信: AT+CMGR=index(index为读第几条短信)
  • 设置存储区域为SM: AT+CPMS=”SM”
(2)发送pdu格式短信:
  • 获取短信中心号码:AT+CSCA?

    我这里的短信中心号码是13334262200

  • 格式化短信中心号码
    步骤:
    (1)要去掉“+”号,然后看看长度要是奇数的话就在末尾追加一个“F”。
    +8613334262200 ——> 8613334262200F

    (2)将奇数位和偶数位交换位置。
    8613334262200F ——> 683133242602F0

    (3)在前面加上“91”,是国际化的意思。
    683133242602F0 ——> 91683133242602F0

    (4)最后算一算它有多长了,把长度除于2,再把结果转换为2位的16进制数,加在最前面。91683133242602F0 长16, 16/2=8, 8的16进制“08” (一定要注意是2位)
    91683133242602F0 ——> 0891683133242602F0

    短信中心号码就处理完了,处理完的短信中心号码:0891683133242602F0

  • 格式化收信号码
    这里为了安全保密,我就随便举了一个电话的例子哟!不是用的本人的号码。
    (1) 要去掉“+”号,然后看看长度要是奇数的话就在末尾追加一个“F”。
    +8618934935552 ——> 8618934935552F
    (2) 将奇数位和偶数位交换位置。
    8618934935552F ——> 688139945355F2

  • 格式化发送内容
    (1) 把字符串转换为Unicode格式。
    我找了两种方式:
    一种是直接用转码工具,这个小工具做字符串和unicode之间的转码还是非常方便的:字符串和unicode在线转换工具
    Hello ——> 00480065006C006C006F
    还有一种是可以用函数来实现,就需要自己写一下转码函数啦!
    (2) 把串Unicode码的长度除于2,再把结果转换为2位的16进制数,加在最前面。 00480065006C006C006F 长 20; 20/2=10 10的16进制“0A”
    0A00480065006C006C006F

  • 总结一下所有的数据
    格式化后的短信中心:0891683133242602F0
    格式化后的收信号码: 688139945355F2
    格式化后的发送内容:0A00480065006C006C006F

  • 组合处理
    (1)算一下收信号码的长度,不包括“+”号。这个收信号码指的是+8618934935552。
    +8618934935552 ——> 8618934935552 长度为“OD”(2位16进制数表示)
    (2)在长度前后分别加“1100”。
    OD ——> 1100OD
    (3) 如果收信号码是手机的话就在后面追加“91”,如果是小灵通的话就要追加“81”。 +8618934935552是手机号码所以加“91”
    11000D ——> 11000D91
    (4)11000D91 + 格式化后的收信号码 + “000800” + 格式化后的发送内容
    11000D91688139945355F20008000A00480065006C006C006F

  • 记录一下上面字符串的长度,除于2。长度为50 ,50/2 = 25。
    总结一下相关信息
    格式化后的短信中心:0891683133242602F0
    实际的发送内容:11000D91688139945355F20008000A00480065006C006C006F
    发送内容的长度:25

  • 通过AT命令发送PDU短信
    将其设为PDU模式: AT+CMGF=0 //PDU模式

  • 开始发送短信:

AT+CMGS=25 >0891683133242602F011000D91688139945355F20008000A00480065006C006C006F
<Ctrl+Z> (看到它返回“>” 在后面输入格式化的短信中心+实际的发送内容最后按Ctrl+Z发送)


可以看到我的手机上收到了 内容为 “Hello” 的短信:

4G拨号上网 之 AT指令学习相关推荐

  1. linux下4g拨号上网问题,解决 Ubuntu 18.04 下无法建立 4G 拨号的问题

    如果你像我一样用 Ubuntu Unity 的话,你可能会遇到"无法建立 4G 拨号上网"的问题.不过这个问题不是一直都会出现,如果你是标准的 Gnome Shell 或者 KDE ...

  2. openwrt 使用 usb 实现4G拨号上网功能

    上班一年了,最近才觉得应该把学到的东西好好用博客展示出来,而不是排的整整齐齐的放在浏览器收藏夹里!也开始从头发一些博客,但是觉得手头上的工作,也应该及时总结,这篇文章是关于 openwrt 拨号上网的 ...

  3. 迅为IMX6开发板Buildroot文件系统4G拨号上网工具测试

    给IMX6开发板烧写好 buildroot 的文件系统,连接好 4G 模块和天线并将 SIM 卡插入卡槽启动如下图: 输入用户名 root ,密码 :XXXXXX 开始测试 ppp 拨号,先将 eth ...

  4. openwrt 18.06 ec20 R2.0 qmi 4G拨号上网

    记录18.06 下驱动 EC20 openwrt 18.06 已经支持EC20 这个模块的识别了 只要在make menuconfig下选中以下模块, 是直接可以用AT命令读取到信息的,只是无法用qm ...

  5. 4G模块加网流程_4G拨号上网相关知识

    随着物联网技术的广泛应用,移动端联网变得越来越普遍.这里我们一起分享4G网络相关知识,以高通平台 data call 管理库dsi_netctrl,移远EC20通信模组进行讲解. 1.首先介绍一下相关 ...

  6. 如何在飞腾平台使用4G模块拨号上网

    经常看到在笔记本上可以通过插无线网卡进行wifi连接上网,鲜有使用4G模块进行上网的.但是在某些场景下,没有wifi信号,要如何解决上网问题呢?一般可以通过usb共享手机网络,或者外接4G网卡进行上网 ...

  7. sim7600ce 拨号上网测试_树莓派系列教程:通过SIM7600 4G模块NDIS拨号

    1.说明 本章将介绍Raspberry Pi如何采用SIM7600 4G模块进行无线上网,并描述其相关细节,本文先讲解NDIS拨号. 2.采用4G模块的上网方式有哪些? Raspberry Pi通过S ...

  8. sim7600ce 拨号上网测试_SIM7600CE TCP/IP连接与PPP拨号上网 4G上网

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

  9. Linux系统下使用4G模块EC20实现拨号上网

    驱动的实现过程 实现4G功能分为两步,第一步内核能成功识别出该设备,第二步实现拨号上网.最后提一下自带的定位功能 一.添加内核USB驱动 这里直接使用内核已经存在的USB驱动,只需要让内核能识别出该U ...

最新文章

  1. Ubuntu16.04下配置最新Vs Code的C/C++开发环境
  2. C++知识点23——使用C++标准库(顺序容器list的其他操作)
  3. mysql查询当前use的数据库
  4. 学习知识[置顶] C++学习方式方法
  5. 典型环节的matlab仿真分析,典型环节的MATLAB仿真.doc
  6. 搭建MySQL+MHA服务易错位置
  7. 2019网络教育计算机统考模拟试题,最新2019年网络远程教育《计算机应用基础》统考模拟题库500题(含答案)...
  8. 远程桌面连接_Win10 系统远程桌面连接怎么打开
  9. 传统IO与NIO的区别
  10. 反爬虫策略之----UserAgent设置与随机生成
  11. 现代通信原理3.2:线性系统的时域与频域特性
  12. 配置xml文件来实现FlightGear通信,接收与发送数据
  13. ANSYS CFD网格划分笔记3
  14. javascript连接数据库
  15. VLAN划分和网络配置实例
  16. n维椭球体积公式_【栗子资料】高中生必看,高中年级所有数学公式大全
  17. Linux软件安装管理的三种方式——源码安装/deb/rpm/yum/apt
  18. 基于babylon3D模型研究3D骨骼动画(1)
  19. [渝粤教育] 天水师范学院 人文地理学 参考 资料
  20. 海康威视校招C++岗面经(笔试+一面+二面+三面+Offer)

热门文章

  1. php变量值传给html,如何将PHP变量传递给新的HTML页面?
  2. 把 Jul 8, 2020 12:00:00 AM 格式的时间转换为 2020-07-08 12:00:00 格式的时间
  3. SolidWorks转.urdf格式机器人模型导入Matlab
  4. 文笔很差系列3 - 知音难觅
  5. 06.Google抓包技巧和方法
  6. 在线瓦片地图服务资源 总结
  7. 二.百度UEditor编辑器之配置文件:ueditor.config.js
  8. CTF之旅WEB篇(4)--NewStarCTF 公开赛IncludeOne详解
  9. python中cv2提取图像rgb值,获取RGB值opencv python
  10. 愤怒的小鸟重制版 Angry Birds Reloaded for Mac(经典的休闲游戏)