一、系统设计约束

1、使用4G模块提供的AT命令集

2、AT指令回应规则:回应以0X0D 0X0A作为AT命名回应的结束

3、设计原则

AT命令应答一对一,不可以有交叉,AT+CGREG AT命令是检查是否注册上GPRS或4G网络,需要检查返回的状态,如果没有正常返回以注册的网络状态,直接使用后续的AT命令会导致通讯出现连接不通的情况。

采用状态机机制

使用异步操作方式,需要使用消息机制

4、发送和接收分离

针对4G的发送和接收,使用命令和数据分离的方式进行;SEND数据使用指定长度发送的方式(AT+QISEND=XXX),RECEIVE数据使用通过命令提取数据的方式(AT+QIRD=0,1,0,XXXX);通过此方式的选择保证数据和命令在串口输入和输出上不会出现命令和数据混杂的情况,简化程序设计。

二、流程图

三、状态机设计

状态机分为4G模块上电过程的状态部分,4G通讯过程状态部分;由于4G模块上电过程较多都需要对每一条AT命令的回应进行处理,所以分出多个上电过程的状态以满足 4G上电过程的要求;

第二个是GSM通讯过程状态,主要是IP 通讯过程中OPEN, CLOSE, SEND, RECEIVE四个过程,以此来定义状态;

AT 命令状态

STATUS_WAIT_CMD = 100,

STATUS_HW_INIT_CMD,

STATUS_HW_END_CMD,

STATUS_AT_SYNC_CMD,

STATUS_AT_E0_CMD,

STATUS_AT_IPR_CMD,

。。。

STATUS_AT_OPEN_CMD,

STATUS_AT_SEND_CMD,

STATUS_AT_RECEIVE_CMD,

STATUS_AT_CLOSE_CMD,

STATUS_AT_CLEAR_CMD,

回应状态

STATUS_AT_SYNC =0,

STATUS_AT_E0,

STATUS_AT_IPR,

。。。

STATUS_AT_DISCONNECT_IDLE,

STATUS_AT_CONNECT_IDLE,

STATUS_AT_OPEN,

STATUS_AT_SEND,

STATUS_AT_RECEIVE,

STATUS_AT_CLOSE,

STATUS_AT_PARSE,

STATUS_AT_CLEAR,

四、主处理任务

static void 4G_Task(void)

{

while(1)

{

ATCMD 处理 4G_AtSendCmdProc(procstatus);

SELECT 等待接口命令和AT回馈

有接口消息命令,进行处理4G_MsgProc(pipebuffer, lenpipecount, &lenpipecount);

对应CMD设置;

有AT回馈,进行处理 procstatus =4G_DataProc(databuffer, lendatacount, &lendatacount, newprocstatus, 0);

}

}

如何解决制定项目计划的难题     https://mp.csdn.net/postedit/85099154

通过AT命令使用4G模块通讯软件设计相关推荐

  1. 1553B通讯软件设计BC客户端

    作为1553B总线通讯软件,软件主要目的就是控制总线控制器BC和远程终端RT之间的数据交换. 本实验所用的板卡为EXC-PCI/MCH-1,相关资料可在官网下载:http://www.mil-1553 ...

  2. 1553B通讯软件设计RT客户端

    作为1553B总线通讯软件,软件主要目的就是控制总线控制器BC和远程终端RT之间的数据交换. 本实验所用的板卡为EXC-PCI/MCH-1,相关资料可在官网下载:http://www.mil-1553 ...

  3. 基于Qt智能仪器仪表通讯软件设计

    目录 1.比如电量测试仪表PF9810,PF9811, 2.使用串口调试助手进行通讯测试 3.根据需求设计软件界面 4.软件开发的步骤 1.UI设计,Qt为例 2.文件管理 3.逻辑设计 1.比如电量 ...

  4. 【无标题】激光测距模块的软件设计(含C#源代码)

    1.实验清单: 激光测距传感器WT-VL53L0 L1距离模块1个 ,维特智能USB转4路TTL串口数据采集板1块,type-c数据接口1根 接线说明: 红色 模块电源,3.3V 或 5V 输入 绿色 ...

  5. 使用AT命令控制2G/4G模块注意事项

    在开发一产品过程中,使用了2G/4G无线模块,将踩过的雷总结下,分享出来. 1.AT命令规则 AT命令应答一对一实现,命令不允许交叉使用;回应0x0d 0x0a结束,进行AT回应的结束;代码设计中一定 ...

  6. 使用4G模块连接到远程服务器?这个过程我不太理解

    有个疑问,我在开发产品的过程中, 使用4G模块连接到远程服务器?这个过程我不太理解 4G连接服务器:基带->基站----->服务器??????????? WIFI连接服务器:无线网卡–&g ...

  7. linux下 ppp 4G模块拨号上网与解析

    目录 一.ppp协议是什么? 二.linux下的ppp 2.1ppp安装 2.2ppp架构 三.4G模块拨号 3.1硬件准备 3.2软件准备 3.3编写拨号脚本 四.开始拨号 一.ppp协议是什么? ...

  8. 嵌入式Linux利用ppp实现4G模块联网

    https://blog.csdn.net/qq361294382/article/details/52136126 https://blog.csdn.net/qq361294382/article ...

  9. Linux实现ppp拨号4G模块联网全球APN之中国(China)

    Linux实现ppp拨号4G模块联网全球APN之中国(China) 网络运营商APN China Mobile (中国移动) China Unicom (中国联通) China Telecom (中国 ...

最新文章

  1. 网络传输中的两个阶段、阻塞IO、非阻塞IO和多路复用
  2. Linux删除证书文件命令,Linux基础面面观之文件复制、移动、删除的命令
  3. Eclipse的自动编译和手动编译
  4. BAT中一行太长,如何折行
  5. 赛码行测题库_在线笔试— 赛码网试题(一)
  6. js封装websocket
  7. 观测云产品更新|新增阿里云账户结算方式;新增 DQL 查询查看器;新增基础设施网络模块等
  8. 如何在微信小程序中使用iconfont 1
  9. android 平板root,安卓平板电脑怎么root 安卓平板一键root方法
  10. 阿里云数据库(hk)连接不上处理方法
  11. oracle crm系统叫什么,常用CRM软件有哪些?
  12. Node.js Websocket 井字棋游戏
  13. 论Flutter开发如何改善套娃地狱问题
  14. verilog使用1bit全加器实现4bit全加器【行波进位法】
  15. 强化学习适合解决什么样的问题
  16. Android 中的自定义 Snackbar
  17. python中flag的用法_python中flag什么意思
  18. JdbcTemplate增删改查总结
  19. 求推荐一款带日历的电脑桌面记事便签
  20. Python 基本语法

热门文章

  1. 斗地主游戏-应用程序-01
  2. python探测服务器端口
  3. 纵观国内外,这些优秀的桥梁照明案例
  4. 给docker存储目录扩容
  5. python 异常点检测 cook距离_异常检测算法汇总
  6. JVM内存区域划分 EDEN SPACE、SURVIVOR SPACE、TENURED GEN
  7. 可以把Windows xp模仿Vista界面工具。
  8. vue使用全局websocket
  9. 软件破解逆向安全(五)CRC检测
  10. Yunxion资产监测设备研发中,4G通信模块的功耗处理