LiteOS通信模组教程02-AT指令玩转2G通信
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LiteOS通信模组教程02-AT指令玩转2G通信相关的知识,希望对你有一定的参考价值。
参考技术A 小熊派开发板右上角的开关拨到AT-PC一端,则模组直接与PC相连,方便调试。指令:AT
功能:测试AT指令功能是否正常
示例:
指令:AT+CPIN?
功能:查询SIM卡是否正常,返回ready则表示SIM卡正常
示例:
指令:AT+CSQ
功能:查询模组的信号强度,第一个值为0-31则正常,99为不正常
示例:
指令:AT+CREG?
功能:查询模组是否注册上GSM网络,+CREG:0,1 表示已注册上本地网,+CREG:0,5表示注册上漫游网。
示例:
指令:AT+CERGE?
功能:查询模组是否注册上GPRS网络,+CGREG:0,1 表示已注册上本地网,+CGREG:0,5表示注册上漫游网。
示例:
指令:AT+QIFGTCNT=0
功能:配置当前场景
示例:
指令:AT+QICSGP=1, "CMNET"
功能:设置GPRS的APN,移动CMNET,联通UNINET
示例:
指令:AT+QIMODE=0
功能:设置数据传输模式,0表示非透传模式,1表示透传模式
示例:
指令:AT+QIDEACT
功能:在激活GPRS场景之前先关闭GPRS场景,确保连接正确
示例:
指令:AT+QIREGAPP
功能:启动任务并设置接入点APN、用户名和密码
示例:
指令:AT+QIACT
功能:激活移动场景
示例:
指令:AT+QILOCIP
功能:查看模组获取的IP地址
示例:
首先我们需要搭建一个TCP服务器,有两种方式:
因为M26模组直接注册的是公网ip地址,所以这里我们使用第一种方式,在Linux服务器上运行一个Python编写的tcp测试服务器:
这里的Python程序如下:
运行:
效果如下:
查询ip地址:
使用AT命令连接TCP服务器,其中第一个参数是协议类型,“TCP”则表示使用TCP协议,第二个参数是TCP服务器ip地址,也可以使用域名,最一个参数是TCP服务器开启监听的端口:
示例:
连接之后,在服务器端也可以看到:
模组连接到服务器后,服务器会自动发送消息,模组会打印出收到的信息:
使用如下的命令即可向TCP服务器发送消息,首先设置要发送数据的字节数,等待模组返回 > 后,输入要发送的数据即可,如果发送的数据超过了设置的n个字节,则只发送前n个字节,后面的数据被认为是无效数据,不会发送:
示例:
发送成功看服务器上运行的TCP服务器是否收到:
通信完毕之后,可以使用下面的命令关闭TCP连接:
示例:
一起玩转玩转LiteOS组件:TinyFrame
摘要:TinyFrame是一个简单的用于解析串口(如 UART、telnet、套接字等)通信数据帧的库。
本文分享自华为云社区《LiteOS组件尝鲜—玩转TinyFrame》,作者:Lionlace。
基本介绍
TinyFrame是一个简单的用于解析串口(如 UART、telnet、套接字等)通信数据帧的库。它可以灵活处理通信双方之间的消息会话、响应侦听者、校验及超时问题。该库允许注册侦听器(以回调函数形式)用于等待:任何帧、特定帧类型以及特定消息ID,这种高通用性的API可以满足绝大部分通信场景。
功能概览
帧结构
每个帧由帧头和payload组成。这两个部分都可以通过校验和来保护,以排除格式错误的报头(例如,错误的字段长度)或payload损坏的帧。帧中的所有字段大小都是可配置的。例如,用户可以更改配置文件中的某个字段TF_LEN_BYTES为不同值(1、2 或 4)。
,-----+-----+-----+------+------------+- - - -+-------------,
| SOF | ID | LEN | TYPE | HEAD_CKSUM | DATA | DATA_CKSUM |
| 0-1 | 1-4 | 1-4 | 1-4 | 0-4 | ... | 0-4 | <- size (bytes)
'-----+-----+-----+------+------------+- - - -+-------------'
SOF ......... start of frame, usually 0x01 (optional, configurable)
ID ......... the frame ID (MSb is the peer bit)
LEN ......... number of data bytes in the frame
TYPE ........ message type (used to run Type Listeners, pick any values you like)
HEAD_CKSUM .. header checksum
DATA ........ LEN bytes of data
DATA_CKSUM .. data checksum (left out if LEN is 0)
消息监听
TinyFrame有 3 种侦听器类型,按优先顺序排列:
- ID侦听器—等待响应
- 类型侦听器—等待给定类型字段的消息
- 通用侦听器—回退
数据缓冲
TinyFrame使用两个数据缓冲区:一个小的发送缓冲区和一个较大的接收缓冲区。发送缓冲区用于准备要发送的字节,可以一次全部发送;如果缓冲区不够大,则以循环方式发送。缓冲区必须只包含整个帧头,例如对于短消息,32字节即可。
使用说明
LiteOS中提供了TinyFrameDemoTask来演示如何使用TinyFrame组件。目前支持在以下开发板上运行TinyFrameDemoTask。
- STM32F769
- STM32F429
- realview-pbx-a9
- qemu-virt-a53
接下来以TinyFrameDemo为例介绍TinyFrame的使用。
解析TinyFrame Demo
在TinyFrame_demo.c中主要实现3个功能:
- 不带侦听器和结构的发送TF_SendSimple();
- 发送时侦听器正在等待答复,但不使用结构TF_QuerySimple();
- 不带侦听器发送TF_Send()。
使能TinyFrame Demo
在LiteOS源码根目录下执行make menuconfig命令,按如下菜单路径使能
TinyFrame Demo。
Demos --->
Utility Demo --->
[*] Enable TinyFrame Demo (NEW)
使能TinyFrame Demo后会自动使能TinyFrame组件。
保存退出后,会从github上自动下载TinyFrame源代码,并从gitee上下载适配LiteOS系统的patch包,并打入patch。
编译运行TinyFrame Demo
操作步骤如下:
- 参照上述使能TinyFrame demo。
- 在Linux主机的LiteOS源码根目录下执行make clean ; make -j命令编译LiteOS工程,编译成功后将在~/Huawei_LiteOS/out/$platform/lib目录下生成TinyFrame的库文件libTinyFrame.a和此Demo库文件libTinyFrame_demo.a,系统镜像文件为Huawei_LiteOS.bin。以realview-pbx-a9/开发板为例,其目录就是out/realview-pbx-a9/。
- 执行qemu-system-arm -machine realview-pbx-a9 -smp 4 -m 512M -kernel out/realview-pbx-a9/Huawei_LiteOS.bin -nographic命令后,可以看到串口输出Demo部分运行结果,如下所示。
********Hello Huawei LiteOS********
LiteOS Kernel Version : 5.1.0
Processor : Cortex-A9 * 4
Run Mode : SMP
GIC Rev : GICv1
build time : Dec 20 2021 11:30:07
**********************************
main core booting up...
OsAppInit
releasing 3 secondary cores
cpu 0 entering scheduler
cpu 3 entering scheduler
cpu 2 entering scheduler
cpu 1 entering scheduler
app init!
TinyFrame demo task start to run.
--------------------
TF_WriteImpl - sending frame:
1 01 .
128 80 .
0 00 .
7 07 .
1 01 .
240 F0 .
215 D7 .
108 6C l
105 69 i
116 74 t
101 65 e
111 6F o
115 73 s
0 00 .
213 D5 .
30 1E .
--- end of frame ---
GenericListener demo
Frame info
type: 01h
data: "liteos"
len: 7
id: 80h
--------------------
...
...
...
以上是关于LiteOS通信模组教程02-AT指令玩转2G通信的主要内容,如果未能解决你的问题,请参考以下文章