EC20 AT 串口使用TCPIP


原文链接: EC20 AT 串口使用TCPIP

EC20的低功耗模式 - 杰瑞鼠 - 博客园

端口说明:

EC20挂载系统成功后,在Windows环境下会有三个com口,分别为AT Port、DM Port、NMEA Port。其中AT Port用于AT指令的收发,而NMEA Port用于GPS NMEA数据的接收。
在Linux系统下,EC20被成功识别并加载后,会有四个/dev/ttyUSBx设备文件,
ttyUSB2用于AT指令收发,ttyUSB1用于GPS NMEA的接收。

GPS功能启用步骤及说明:

1、使用 AT+QGPSCFG 对GPS参数进行配置,此步骤不进行亦可使用(采用默认参数)。

2、使用 AT+QGPS 开启GPS功能,激活NMEA端口开始上报GPS NMEA数据,也可通过AT指令端口获取NMEA GPS数据。

3、若设置了fixcount为非0,则当上报次数计满时会自动停止上报,若没有设置fixcount,则可以使用 AT+QGPSEND 结束GPS会话。

https://github.com/kenh0u/apn_selector/blob/a6954a8dbf66d6589fabacbcecd1151240095619/setup_air.sh

stty -F /dev/ttyACM0 -echo
cat /dev/ttyACM0 &
AT+GSN
echo -e "AT+CFUN=0\r\n" >/dev/ttyACM0
echo -e "AT+CGDCONT=1,\"ip\",\"internet\"\r\n" >/dev/ttyACM0
echo -e "AT+UCGDFLT=1,\"ip\",\"internet\"\r\n" >/dev/ttyACM0
echo -e "AT+CFUN=1\r\n" >/dev/ttyACM0
echo -e "AT+COPS?\r\n" >/dev/ttyACM0
echo -e "AT+CGCONTRDP\r\n" >/dev/ttyACM0
echo -e "AT+CIND?\r\n" >/dev/ttyACM0
echo -e "AT+CGDCONT?\r\n" >/dev/ttyACM0
echo -e "AT+CGACT=1,1\r\n" >/dev/ttyACM0
echo -e "AT+CGDCONT?\r\n" >/dev/ttyACM0
echo -e "AT+GMI\r\n" >/dev/ttyGS0

config_apn

spawn cu -l /dev/ttyUSB0
sleep 1
expect "Connected."
send "\rATE1\r"
send "AT+CGDCONT?\r"
expect "OK"
sleep 1
send "AT+CGDCONT=0,\"IP\",\"$1\"\r"
expect "OK"
sleep 1
send "AT+CGDCONT=1,\"IP\",\"$1\"\r"
expect "OK"
sleep 1
send "AT+CGDCONT?\r"
expect "OK"
sleep 1
send "ATE0\r"
expect "OK"
exit

正常工作模式
Idle 软件正常运行。模块注册上网络,能够接收和发送数据。
Talk/Data 网络连接正常工作。此模式下,模块功耗取决于网络设置和数据传输速率。
最少功能模式

不断电情况下,使用 AT+CFUN=0 命令可以将模块设置成最少功能模式。此模式下射频和 USIM 卡不工作。

飞行模式

AT+CFUN=4 命令或 W_DISABLE#管脚可以将模块设置成飞行模式。此模式下射频不工作。

睡眠模式

此模式下,模块的功耗将会降到非常低,但模块仍然可以接收寻呼、短信、电话和TCP/UDP 数据。

关机模式

在此模式下,PMU 停止给基带和射频部分的电源供电,软件停止工作,串口不通。但VBAT_RF 和 VBAT_BB 管脚仍然通电

AT+CFUN=0:最少功能模式(关闭 RF 和 USIM 卡)。
AT+CFUN=1:全功能模式(默认)。
AT+CFUN=4:关闭 RF 功能(飞行模式)。

AT+CCID //查询EC20 模块 SIM卡号iccid

+CCID: 89860317745393532238

echo -e "AT+CFUN=1,1\r\n" >/dev/ttyUSB2 //重启模块
echo -e "AT+QCCID\r\n" >/dev/ttyUSB2 //查询SIM卡

echo -e "AT+CFUN=1,1\r\n" >/dev/ttyUSB2 //重启模块

echo -e "AT+QSIMDET=1\r\n" >/dev/ttyUSB2 //开启SIM卡热插拔状态报告

echo -e "AT+QSIMDET=1,1\r\n" >/dev/ttyUSB2 //开启SIM卡检测功能

echo -e "AT+CSQ\r\n" >/dev/ttyUSB2 //查询信号强度

echo -e "AT+QNWINFO\r\n" >/dev/ttyUSB2 //查询网络状态

echo -e "AT+QCFG=\"NWSCANMODE\",3,1\r\n" >/dev/ttyUSB2 //设置4G LTE only

echo -e "AT+QCFG=\"NWSCANMODE\",2,1\r\n" >/dev/ttyUSB2 //设置3G WCDMA only

echo -e "AT+QCFG=\"NWSCANMODE\",1,1\r\n" >/dev/ttyUSB2 //设置2G GSM only

echo -e "AT+QCFG=\"NWSCANMODE\",0,1\r\n" >/dev/ttyUSB2 //设置自动搜索网络

通用指令(300毫秒内返回,超时无效)

ATI:查询产品信息。

AT+GMI:查询制造商信息。

AT+GMM:查询产品模型。(不懂,制造标准?)

AT+GMR:查询软件版本号。

AT+CGMI:查询制造商识别码。

AT+CGMM:查询产品模型。(不懂,制造标准?)

AT+CGMR:查询软件版本号。

AT+GSN:查询IMEI号(国际移动设备识别号)。

AT+CGSN:查询产品序列号。

AT&F:将所有参数恢复到出厂缺省值。

AT&V:查询当前参数设置值。

AT&W[]:保存当前配置信息到用户定义的配置文件中。n 是文件号。

ATZ[]:从用户配置文件中恢复配置信息。n 是文件号。

ATQ :是否返回命令执行结果的提示信息,n = 0 提示所有信息,n = 1 不提示一些信息。

ATV :返回结果的样式。n = 0 短格式返回值,用数字形式表示常见返回信息 ,n = 1 长格式返回值,用字符形式表示常见返回信息。

ATE  :是否回显命令字符。n = 0 关闭回显,n = 1 打开回显。

 A/:重复执行上一条命令。/ 作为结束符号。

ATS3= :设置(查询)命令结束符。n = 0-13-127  默认 13。

ATS4= :设置(查询)响应分割符。n = 0 - 10 -127 默认 10。

ATS5= :设置(查询)删除命令行上一个字符。n = 0 - 8 - 127 默认 8。

ATX:设置是否检测到拨号音或占线音,和是否返回检测结果。value = 0 - 4。

AT+CFUN=[,] :设置电话功能。fun = 0、1、4。rst = 0、1。

AT+CMEE= :设置错误信息的格式。n = 0、1、2。

AT+CSCS= :设置TE(应该是从端)字符集。chset = GSM、IRA、UCS2。

AT+QURCCFG="urcport"[,] :配置URC(执行结果、消息)输出端口。urcportvalue = usbat、usbmodem、uart1。
————————————————
版权声明:本文为CSDN博主「じоνё靁〃」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/jingliuting/article/details/89928135

GPS功能

cat /dev/ttyUSB1 & // NMEA数据从ttyUSB1输出
echo -e "AT+QGPS=1\r\n" > /dev/ttyUSB2 // 开启GPS会话
可观察到ttyUSB1输出NMEA数据
AT+QGPSCFG
用于进行GPS功能的配置 AT+QGPSCFG="gpsnmeatype",1     (配置nmea格式为GGA) 具体配置请参考官网数据手册。
AT+QGPS GPS会话配置及启动 AT+QGPS=1  (启动GPS会话)
会话其他参数的配置请参考官方数据格式。
AT+QGPSEND 结束GPS会话 AT+QGPSEND (结束GPS会话 nmea端口停止上报) ——
AT+QGPSLOC 通过AT指令端口获取位置信息 AT+QGPSLOC=? (从AT指令端口返回位置信息)
数据格式请参考官方数据格式。
以上只列举了简单启用EC20模块GPS功能并获取到NMEA数据所需的AT指令
————————————————
版权声明:本文为CSDN博主「King_Mumumu」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/u011195662/article/details/78624977

[4G模块]华为ME909S-821 NDIS拨号指令流程

一、在配置后4G模块linux驱动之后, ifconfig usb0 up

二、发送指令流程

1、AT+CPIN? // 查询sim卡是否有识别到

返回信息 :+CPIN: READY

2、AT+CSQ //查询信号强度,范围0~31

返回信息 :+CSQ: 17,99

3、AT+CEREG? // 查询业务数据可用状态

 返回信息 :+CEREG: 0,1  // 返回 1(或 或 5) 表示数据业务可以使用;返回 2 、3 、4 表示数据业务不可用。此时,表示可以进行数据业务了。

4、AT^SYSINFOEX //查询模块注册网络制式

返回信息 :^SYSINFOEX:2,3,0,1,,6,"LTE",101,"LTE"

5、(NDIS撥號相關)AT+CGDCONT? // 查询网络制式

  返回信息 :

    +CGDCONT: 0,"IPV4V6","","",0,0,0,0,0,0

    +CGDCONT: 1,"IP","3gwap","",0,0,0,0,0,0

    +CGDCONT: 11,"IPV4V6","","",0,0,0,0,0,0

6、AT^NDISDUP? // NDIS拨号是否可用

 返回信息 :OK

7、AT^NDISDUP=1,1 // 网络拨号 ,后参数可填写apn接入点

 返回信息 :OK

8、AT+CGATT? // 拨号結果 连接成功為1

返回信息 :1

三、连接完毕之后执行命令自动获取IP

 udhcpc -i usb0

EC20模块

EC20 内嵌了 TCP/IP 协议栈, Host 直接通过 AT 命令可以方便的访问 internet, Host 可以减少对 PPP和 TCP/IP协议栈的依赖,实现低成本的设计。UC20提供TCP Client、UDP Client、TCP Server、UDP Service这些内置的 socket 服务功能。

AT_TCP/IP使用流程
UC20 TCPIP AT 涉及 context profile 配置、激活和关闭、 socket 服务的启动和关闭、数据的收发这几种类型的命令,一般流程如下:

第一步使用AT+QICSGP配置 context profile 的等,同时假如需要修改该 context profile 的 QoS 参数,可以利用 AT+CGQMIN、 AT+CGEQMIN、 AT+CGQREQ、AT+CGEQREQ 这些命令来配置。
第二步使用 AT+QIACT激活 context profile,激活后可以利用 AT+QIACT?查询分配到的 IP 地址。
第三步使用 AT+QIOPEN 启动一个socket服务,通过可以指定服务类型。通过上报的“+QIOPEN:”这个 URC,可以看出启动 socket 服务是否成功。

发送和接收:socket服务启动后,可以进行数据的收发。数据收发方式根据数据访问模式不同有所变化,如在 buffer access mode 下, 利用 AT+QISEND进行数据的发送,接收到数据后,会先上报+QIURC: “recv”,这个 URC 通知 Host 使用 AT+QIRD去获取数据。 数据传输完毕后,可以使用 AT+QICLOSE 关闭 socket 服务;(第 3 ~ 5 步可以重复进行)。

最后, 使用 AT+QIDEACT关闭 context profile。
AT实例
按照上面的步骤,举一个AT命令示例。

第一步:配置 context profile
AT+QICSGP=1,1,”UNINET”,””,””,1 //配置 context profile 1,这里以中国联通举例

AT+QICSGP=1,1,"CMNET","","",1 //移动APN:CMNET; 联通APN:UNINET
OK

第二步:激活 context profile
AT+QIACT=1 //激活 context profile 1
OK //激活成功

AT+QIACT? //查询 context profile 状态
+QIACT: 1,1,1,"10.7.157.1"
OK
1
2
3
4
5
6
关闭 context profile

AT+QIDEACT=1 //关闭 context profile 1
OK //关闭成功
1
2
第三步:创建套接字,发送和接收
因为有三种不同的数据访问模式模式,通过指定数据访问模式 buffer access mode、 direct push mode 或 transparent access mode,所以会有三种发送和接受的方式,这里以最简便的transparent access mode为例,并附上 buffer access mode的例子。

3.1 TCP Client 工作于 transparent access mode
建立 TCP client 连接,进入 transparent access mode

AT+QIOPEN=1,0,"TCP","61.190.19.174",8705,0,2 //在 context profile 1建立 TCP连接,为 0
OK
CONNECT //连接成功
1
2
3
在 transparent access mode 发送数据

<串口上输入要发送的数据,将直接发送到 internet 上>
1
在 transparent access mode 接收远端 server 发来的数据

test1 //从 internet 接收的数据将直接输出到串口
1
关闭 TCP client 连接

+++ //输入“+++” 或者在 AT&D1 设置下拉 DTR 退出数据模式, 然后才可以输入 AT
OK
AT+QICLOSE=0 //关闭为 0 的连接
OK
1
2
3
4
3.2 TCP Client 工作于 buffer access mode
建立 TCP client 连接,进入 buffer access mode
AT+QIOPEN=1,0,"TCP","61.190.19.174",8705,0,0 //在 context profile 1建立 TCP连接,为 0
OK

+QIOPEN: 0,0 //连接成功

AT+QISTATE=1,0 //查询为 0 下的连接状态
+QISTATE: 0,”TCP”,“61.190.19.174”,8705,0,2,1,0,0,”usbmodem”
OK

在 buffer access mode 发送数据
AT+QISEND=0 //发送不指定长度数据

test1
SEND OK


AT+QISEND=0,4 //发送长度为 4 的数据
test
SEND OK


AT+QISEND=0,0 //查询已发送的数据长度
+QISEND: 9,0,0
OK

在 buffer access mode 接收远端 server 发来的数据
+QIURC: “recv”,0 //表示为 0 的连接上收到数据(假设接收到 5 个字节的数据)
AT+QIRD=0,1500 //读取 buffer 中长度为 1500 字节的数据
+QIRD: 5 //表示实际数据仅仅为 5 个字节
test1

OK


AT+QIRD=0,1500
+QIRD: 0 //buffer 中无数据

OK


AT+QIRD=0,0 //查看总共接收的数据长度、 已读取的数据长度和 Buffer 中未读取的数据长度
+QIRD: 5,5,0
OK
4.关闭连接

AT+QICLOSE=0 //关闭为 0 的连接
OK
AT_TCP常用命令
套接字链接

AT+QIOPEN=1,0,"TCP","172.16.33.242",6666,0,0AT+QIOPEN=1,6,"TCP","172.18.0.207",9999,0,2AT+QIOPEN=1,0,"TCP","172.16.33.242",6666,0,0\AT+QIOPEN=1,6,"TCP","172.18.0.207",9999,0,2
AT+QIOPEN=1,0,"TCP","172.16.33.242",6666,0,0
AT+QIOPEN=1,6,"TCP","172.18.0.207",9999,0,2

发送长度为 4 的数据

AT+QISEND=0,4testAT+QISEND=0,4 \test
AT+QISEND=0,4
test

读取 buffer 中长度为 1500 字节的数据

AT+QIRD=0,1500AT+QIRD=0,1500
AT+QIRD=0,1500

关闭连接

AT+QICLOSE=0AT+QICLOSE=0
AT+QICLOSE=0

获取错误信息

AT+QIGETERRORAT+QIGETERROR
AT+QIGETERROR

应用例子

备注
测试代码:单片机代码
附上一个在线调试tcp服务器:公共TCP服务器
————————————————
版权声明:本文为CSDN博主「O_MMMM_O」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/O_MMMM_O/article/details/98501735

`