SIM卡热插拔检测:

AT+QSIMSTAT=1          //开启SIM卡热拔插状态报告
AT+QSIMDET=1,1或AT+QSIMDET=1,0//开启 SIM卡检测功能
当SIM卡拔出或者插上的时候,模块会有相应的提示:
+CPIN:NOT READY
AT+QSIMSTAT=1,1或AT+QSIMSTAT=1,0

二 ICCID唯一的号码与设备建立注册

三发送AT+CIPSTART="TCP","IP地址",端口号,返回CONNECT OK

查询用户号码:AT+CNUM

四短信操作:https://blog.csdn.net/woshishui918/article/details/79051473

短信操作步骤及相关命令:

(1)设置短信格式(文本=0、RTU=1)------AT+CMGF=1

(2)设置短信存储载体------AT+CPMS="SM","SM","SM"

(3)发送短信---AT+CMGS=="+8615083111880"

 >DATA +0X1A

 收:+CMGS: 54 OK

(4)读取短信---AT+CMGR=n

(5)删除短信----AT+CMGD

PDU短信:

二、中文PDU短信 https://blog.csdn.net/a_tu_/article/details/47808017

我用一个例子说明整个过程~

短信中心号码可以百度

北京移动 +8613800100500 北京联通 +8613010112500
上海移动 +8613800210500 上海联通 +8613010314500
天津移动 +8613800220500 天津联通 +8613010130500
重庆移动 +8613800230500 重庆联通 +8613010831500

    短信中心:+8613800100500
    收信号码:+8613401041516
    短信内容:我爱听评书

第一步——格式化短信中心号码
1 - 要去掉“+”号,然后看看长度要是奇数的话就在末尾追加一个“F”。
    +8613800200500 >>>> 8613800100500F
2 - 将奇数位和偶数位交换位置。
    8613800100500F >>>> 683108100005F0
3 - 在前面加上“91”,是国际化的意思。
    683108100005F0 >>>> 91683108100005F0
4 - 最后算一算它有多长了,把长度除于2,再把结果转换为2位的16进制数,加在最前面。
    91683108100005F0长16 16/2=8 8的16进制“08” 一定要注意是2位
    91683108100005F0 >>>> 0891683108100005F0
短信中心号码就处理完了,下几一步有类似的算法,现在我感觉就像做菜一样……

第二步——格式化收信号码
1 - 要去掉“+”号,然后看看长度要是奇数的话就在末尾追加一个“F”。
    +8613401041516 >>>> 8613401041516F
2 - 将奇数位和偶数位交换位置。
    8613401041516F >>>> 683104011415F6

第三步——格式化发送内容
1 - 把字符串转换为Unicode格式。(转换函数我写过了,直接拿去用好了)
    我爱听评书 >>>> 62117231542C8BC44E66
2 - 把串Unicode码的长度除于2,再把结果转换为2位的16进制数,加在最前面。
    62117231542C8BC44E66长20 20/2=10 10的16进制“0A”
    62117231542C8BC44E66 >>>> 0A62117231542C8BC44E66

先看看我们都准备什么了,再继续~
    格式化后的短信中心:0891683108100005F0
    格式化后的收信号码:683104011415F6
    格式化后的发送内容:0A62117231542C8BC44E66

第四步——组合处理
1 - 算一下收信号码的长度,不包括“+”号。这个收信号码指的是+8613401041516,而不是683104011415F6。
    +8613401041516 >>>> 8613401041516 长度为“OD”(2位16进制数表示)
2 - 在长度前后分别加“1100”。
    OD >>>> 1100OD
3 - 如果收信号码是手机的话就在后面追加“91”,如果是小灵通的话就要追加“81”。
    +8613401041516是手机号码所以加“91”
    11000D >>>> 11000D91
4 - 11000D91 + 格式化后的收信号码 + “000800” + 格式化后的发送内容
    11000D91 >>>> 11000D91683104011415F60008000A62117231542C8BC44E66
5 - 计算上面那一大字符串的长度除于2,10进制表示。
    11000D91683104011415F6008000A62117231542C8BC44E66长50 50/2=25

嗯,咱再看看手里都有啥了~
    格式化后的短信中心:0891683108100005F0
    实际的发送内容:11000D91683104011415F60008000A62117231542C8BC44E66
    发送内容的长度:25
都准备好了我们可以发短信了 ^_^

最后一步——通过AT命令发送PDU短信
    AT+CMGF=0 <Enter> (告诉它你要发的是PDU类的短信)
    OK (这是它返回的它说:“我已经准备好了”)
    AT+CMGS=25 <Enter> (告诉它你要发的实际长度)
    >0891683108100005F011000D91683104011415F60008000A62117231542C8BC44E66
<Ctrl+Z> (看到它返回“>” 在后面输入格式化的短信中心+实际的发送内容最后按Ctrl+Z发送

EC20指令的更多相关文章

  1. EC20指令测试

    cat /dev/ttyUSB2 & echo -e "AT+CGMM\r\n" >/dev/ttyUSB2   //输出模块型号 echo -e "AT+ ...

  2. EC20的指令

    AT+QURCCFG="urcport","usbat" :当设置在主串口时且用主串口进行AT交互时开机会收到一串状态的信息,默认USBAT就不会 AT+IPR ...

  3. EC20的低功耗模式

    EC20的支持以下几种工作模式,睡眠模式包括MCU主机睡眠和EC20睡眠. 当MCU主机不睡眠时,通过AT+QICSK =1(发送完之后串口被禁用不再响应AT指令),DTR=1(投票EC20可以进入睡 ...

  4. iOS逆向工程之Hopper中的ARM指令

    虽然前段时间ARM被日本软银收购了,但是科技是无国界的,所以呢ARM相关知识该学的学.现在看ARM指令集还是倍感亲切的,毕竟大学里开了ARM这门课,并且做了不少的实验,当时自我感觉ARM这门课学的还是 ...

  5. 步入angularjs directive(指令)--点击按钮加入loading状态

    今天我终于鼓起勇气写自己的博客了,激动与害怕并存,希望大家能多多批评指导,如果能够帮助大家,也希望大家点个赞!! 用angularjs 工作也有段时间了,总体感觉最有挑战性的还是指令,因为没有指令的a ...

  6. Git小技巧 - 指令别名及使用Beyond Compare作为差异比较工具

    前言 本文主要写给使用命令行来操作Git的用户,用于提高Git使用的效率.至于使用命令还是GUI(Tortoise Git或VS的Git插件)就不在此讨论了,大家根据自己的的喜好选择就好.我个人是比较 ...

  7. 浅谈JSP中include指令与include动作标识的区别

    JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...

  8. [Django]用户权限学习系列之User权限基本操作指令

    针对Django 后台自带的用户管理系统,虽说感觉还可以,但是为了方便用户一些操作,特别设计自定义的用户权限管理系统. 在制作权限页面前,首先需要了解权限和用户配置权限的指令,上章讲到权限的添加,删除 ...

  9. 机器指令翻译成 JavaScript —— No.5 指令变化

    上一篇,我们通过内置解释器的方案,解决任意跳转的问题.同时,也提到另一个问题:如果指令发生变化,又该如何应对. 指令自改 如果指令加载到 RAM 中,那就和普通数据一样,也是可以随意修改的.然而,对应 ...

随机推荐

  1. mybatis会自动把字段名中的下划线转为驼峰命名法?

    先看一下转化的调用堆栈: 代码如下: 上面代码只是去掉了下划线,并没有首字母小写变大写的代码.再跟进findProperty方法可以找到获取驼峰结果的代码如下: 可以看出通过reflector.fin ...

  2. 解决docker: error pulling image configuration: Get https://registry-1.docker.io/v2/library/mysql/: TLS handshake timeout.

    出现这个问题,一般的原因是无法连接到 docker hub,通过: systemctl stop docker echo "DOCKER_OPTS=\"\$DOCKER_OPTS ...

  3. Flask 学习之flask入门

    一.Flask的简单介绍 Flask是一个基于Python开发并且依赖jinja2模板和Werkzeug WSGI服务的一个微型框架,对于Werkzeug本质是Socket服务端,其用于接收http请 ...

  4. MongoDB - 将查询结果保存到excel文件中

    import pymongo import re client = pymongo.MongoClient('127.0.0.1', 27017) db_name = 'Trade' db = cli ...

  5. AOP底层实现原理

    有两种方法实现: 当实现接口时,采用动态代理 另一种采用cglib cglib和动态代理并没有谁好谁坏,就像做菜一样,一种菜可以有多种味道,使用不同的方法就有不同的模式

  6. 查看Oracle的表中有哪些索引(用user_indexes和user_ind_columns)

    用user_indexes和user_ind_columns系统表查看已经存在的索引 对于系统中已经存在的索引我们可以通过以下的两个系统视图(user_indexes和user_ind_columns ...

  7. Web.config和App.config配置连接字符串

    读取配置文件,获取连接字符串 <!-- 第一种 --> <connectionStrings> <add name="connString" conn ...

  8. 通过颜色绘制图片UIImage

    + (UIImage *)clearImageView { UIColor *color=[UIColor clearColor]; CGRect rect =CGRectMake(,,,); UIG ...

  9. oracle 12c pdb开启和关闭

    oracle 12c pdb开启和关闭 //开启数据库 sqlplus / as sysdba;                  //登录连接CDB,默认是root container;startu ...

  10. Python学习(一)——开发语言和Python的安装

    开发语言: 高级语言: Python,Java,PHP,C#,Go,ruby,C++...都依赖于C→字节码 语言的对比: Python,Java:既能写网页又能写后台 Python:开发效率比Jav ...