合宙Air724UG Cat1(4G)CSDK 二次开发总结(DNS TCP)
最近项目要用到cat1模块,之前使用过这个模块,但是是有MCU的,所以只需要知道如何发送正确的AT指令即可。
现在是需要对这个cat1模块进行二次开发,在这个过程中学到了什么进行总结。
这次使用的合宙的Air724UG开发板。这个模块只有4G功能。
在学习过程中,参考了这位大佬的教程,非常好,合宙开发。学习过程中是官方的代码和他的代码结合起来学习,主要以官方的为主!!!!
官方代码:https://gitee.com/openLuat/Luat_CSDK_Air724U
1.环境搭建
具体搭建的话可以参考官方文档,官方文档都已经给出了。这里主要写一些需要注意的地方或者已经踩坑的地方。
1.1 监视软件
合宙官方这套系统没有debug的功能,所以只能在代码中加入打印信息来进行调试。使用的coolwatcher
但是刚开始在实际使用过程中,经常会碰到打印信息不全或者没有的情况。例如:打印10次hello world,总是不能全部都打印出来,总是会少几次。但是使用while(1)就可以一直打印。
后来经过问技术支持之后,发现调试软件不是官方说的那么打印,需要接串口打印,这样才能全部都能输入出来。(可能运行速度快,监视软件没跟上打印)
需要在host_tx host_rx接上串口调试助手。这样就能全部打印出来了。
1.2 打印信息
还有就是在下载代码之后,进入调试助手之前,其实要发送AT指令的,然后再复位,才能在监视软件上看到打印信息。但是每次发送之前就很烦,可以在代码里面加上这个AT指令,这样就可以避免每次都发AT指令。
但是有个要注意:要注册联网的时候,一定要加在回调函数之后,不然会出现联网不成功现在。如果不涉及联网,那么是可以加在开头的地方。
2.与基站联网和DNS
其实这个DNS解析只是很小的一部分,当连上网之后,只要将想相应的网址扔进去,自然就能解析。重点是在联网过程,这里联网指的是连上基站。
iot_network_set_cb()这个函数是来初始线程信息和回调函数的。
at_regNetStatueCb()函数是设置回调的。
BOOL iot_network_set_cb(F_OPENAT_NETWORK_IND_CB indCb)
{if(at_init_flag==0){ at_init();at_init_flag=1;}at_regNetStatusCb(gsmStatusCb); g_s_gsmStatusCb = indCb;
} void demo_socket_init(void)
{ socket_dbg("[socket] demo_socket_init");//????????????????iot_network_set_cb(demo_networkIndCallBack);g_s_socket_task = iot_os_create_task(demo_socket_task,NULL,4096,5,OPENAT_OS_CREATE_DEFAULT,"demo_socket");
}
只要弄清楚这个回调函数就可以非常容易理解联网过程了。
结合代码可以看到这个 demo_networkIndCallBack是一个函数,是用来判断连接状态,回复消息的。
static void demo_networkIndCallBack(E_OPENAT_NETWORK_STATE state)
{DEMO_SOCKET_MESSAGE* msgptr = iot_os_malloc(sizeof(DEMO_SOCKET_MESSAGE));socket_dbg("[socket] network ind state %d", state);if(state == OPENAT_NETWORK_LINKED){msgptr->type = SOCKET_MSG_NETWORK_LINKED;iot_os_send_message(g_s_socket_task, (PVOID)msgptr);return;}else if(state == OPENAT_NETWORK_READY){msgptr->type = SOCKET_MSG_NETWORK_READY;iot_os_send_message(g_s_socket_task,(PVOID)msgptr);return;}iot_os_free(msgptr);
}
总结一下:
- gsmStatusCb()是一个函数,作用是发送AT来获取和基站连接的信息
- demo_networkIndCallBack()也是一个函数,来解析现在是什么状态,获取现在是什么联网状态。
当初始化完毕之后,就可以创建线程来做一些应用层方面的东西了。
这里可以看到获取联网状态是阻塞式的,当ready状态时,就会去进行pdp激活,根据不同运行商,apn的值是不同的。但是经过测试其实724这个不需要填apn的值也能联网成功。
pdp激活三个步骤:pdp附着--->pdp上下文激活--->业务访问。
但是因为724只有4G没有2G,所以不需要这个步骤,看代码:
在第一个if就能return了,下面else if才是pdp激活过程。
当返回TRUE说明联网成功了,就可以进行DNS解析了。
调用gethostbyname()函数就能解析网址了,底层用的是lwip。
3.TCP
在这只能作为客户端进行TCP通信。根据定义测试的服务器地址和端口号来发送数据。
具体流程是这样的:
底层的lwip协议解析可以参考这个:LWIP中socket接口
合宙Air724UG Cat1(4G)CSDK 二次开发总结(DNS TCP)相关推荐
- 合宙Air724UG二次开发(1):搭建开发环境
合宙Air724UG二次开发(1):搭建开发环境 文章目录 合宙Air724UG二次开发(1):搭建开发环境 1. 系统环境 2. 嵌入式4G发展现状 3. 合宙Air724UG支持Lua开发实现原理 ...
- 微信小程序+阿里物联平台+合宙Air724UG搭建无服务器物联系统(五)---合宙Air724UG 4G cat.1硬件设计开源
首先,感谢某立创平台的开源支持及免费硬件PCB支持,废话不多说直接上硬件开源链接:希望平台能够开放该链接!!! RYK_OPEN_20220212 - 立创EDA开源硬件平台 立创EDA开源硬件平台, ...
- 微信小程序+阿里物联平台+合宙Air724UG搭建无服务器物联系统(二)---阿里物联平台搭建
微信小程序+阿里物联平台+合宙Air724UG搭建无服务器物联系统,核心为阿里物联平台,该平台作为物联网应用的中台,承担了百万级设备链接及负载均衡等功能,解决了物联网设备链接的多连接.少数据量.长链接 ...
- 微信小程序+阿里物联平台+合宙Air724UG搭建无服务器物联系统(三)---微信小程序直连阿里物联平台AliIoT
前一段时间集中设计系统整体方案,物联网平台搭建.小程序编写,硬件电路设计.SOC单片机程序开发,自己挖的坑太大了,填起来真是费劲啊!整个年假都用来填坑了,也没有时间编写博文,今天忙里偷闲集中整理一下开 ...
- 微信小程序+阿里物联平台+合宙Air724UG搭建无服务器物联系统(一)
今天准备开始用 微信小程序+阿里物联平台+合宙Air724UG搭建一套无服务器版本的物联网系统. 今天写一下主要设计思路, 前端-----与用户完成人机交互功能,准备采用微信小程序开发+阿里IoTSt ...
- 15、RDA8910(4GCAT1)CSDK二次开发:通过OneWire驱动库获取DS18B20/DHT11的数据
目录 点击这里查看所有博文 本系列博客所述资料均来自合宙官方,并不是本人原创(只有博客是自己写的),csdk只是得到了口头的允许公开授权.出于热心,本人将自己的所学笔记整理并推出相对应的使用教程, ...
- 4、RDA8910(4GCAT1)CSDK二次开发:期待已久的ADC采集
目录 点击这里查看所有博文 本系列博客所述资料均来自合宙官方,并不是本人原创(只有博客是自己写的),csdk只是得到了口头的允许公开授权.出于热心,本人将自己的所学笔记整理并推出相对应的使用教程, ...
- 1、RDA8910(4GCAT1)CSDK二次开发:环境搭建
https://blog.csdn.net/weixin_44570083/article/details/106210592 目录 点击这里查看所有博文 本系列博客所述资料均来自合宙官方,并不是 ...
- 合宙Luat | 最新网红Cat.1开发板全攻略【使用教程+注意事项+设计图纸】
合宙Luat | 最新网红Cat.1开发板全攻略[使用教程+注意事项+设计图纸] 使用指南目录参考 特别注意事项 常见问题Q&A 很多朋友认识合宙,都源于合宙的Cat.1系列产品.Air724 ...
最新文章
- java 判断object类型_Java学习-方法与多态的学习心得
- Java中通过substring和charAt截取字符串并获取指定字符
- 手写自己的MyBatis框架-V2.0参数处理
- EasyNVR H5无插件摄像机直播解决方案前端解析之:videojs初始化的一些样式处理...
- 【报告分享】阿里巴巴全生态就业体系与就业质量研究报告.pdf(附下载链接)...
- “火星人”马斯克推论:世界或是被编码而成,上帝可能是个程序员!
- 更新:第6章已上线!最酷的程序员应该知道的【LLVM】!
- 百度智能云金融安全计算平台有多强?安排!
- Hyperledger Fabric Transaction Proposal过程
- 铁路订票系统的简单设计(转载)
- 库克牛津大学演讲:AR 比 VR更深刻,领导力就是让沉默的人说话
- IDEA 配置 maven
- 判断人物眼型matlab,怎么判断眼型和脸型?
- JIAR安装报错IRA Startup Failed
- GitHub的使用(入门)
- AG9300:安格TypeC To VGA单芯片中文设计方案
- Visi如何使用Weave和Docker
- Ext.form.TextField组件的基本用法
- Linux世界这一周,有喜有忧(转)
- python怎么实现分数形式_python分数怎么表示什么
热门文章
- RT-Thread 线程同步及通信 -- 信号量、互斥量、事件、邮箱、消息队列
- OPPO K9x和荣耀X30哪个好
- Xcode 8 错误 dyld: Library not loaded: @rpath/libswiftCore.dylib 解决办法
- 用海天酱油做出的蒜香肉丝拌面口味如此正宗
- 安卓模拟器导入通讯录
- all File Format
- 携手开发者 魅族开放平台筑梦成长
- mc服务器皮肤不显示不出来,教你换皮肤!画皮肤教程!服务器再也不是史蒂夫~反正是人by...
- TCP的socket详解
- Django3中的urls.py文件层级规划include的使用