4G AT命令解析框架LwAtParser V2.0设计及实现(基于uCOS II)--中级篇 第七章 TCP协议实现

7 TCP 协议实现

7.1 数据结构

7.1.1 存放接收数据的数组

uint8_t gTcp_RxBufTCP_CHANNEL_NUMTCP_RXBUF_MAXLEN;

7.1.2 tcp client 的连接状态数组

uint8_t Tcp_StateTCP_CHANNEL_NUM = {OFF_LINE};

7.1.3 每个连接的邮箱

static OS_EVENT *Tcp_MboxTCP_CHANNEL_NUM;

7.1.4 环形缓冲区

static struct ringbuffer tcp_rx_ringbufferTCP_CHANNEL_NUM;

7.2 TCP 协议API接口函数实现

7.2.1 设计目标和原则

模块化,本模块仅提供tcp协议API接口函数。

7.2.2 tcp_init()

tcp协议初始化。

7.2.3 tcp_client_open()

建立与远程主机的tcp客户端连接。

7.2.4 tcp_client_close()

关闭与远程主机的tcp客户端连接。

7.2.5 tcp_client_write()

tcp客户端发送数据。

7.2.6 tcp_client_read()

tcp客户端接收数据

7.2.7 tcp_msg_post()

将tcp客户端数据发送到驱动层。

7.2.8 tcp_driver_copy()

从驱动层拷贝数据到tcp客户端

7.3 TCP 协议AT命令实现

为了协议的可扩展性,不在4g_core.c 中添加代码了,添加两个文件4g_tcp.h 和4g_tcp.c。

类似的,将来扩充mqtt协议的话,只需要添加4g_mqtt.h 和 4g_mqtt.c。

7.3.1 4g_tcp.h

7.3.2 4g_tcp.c

7.3.3 4g_core.c修改

7.3.3.1 PTL_COM1_RxPROC()函数

7.4 案例--TCP Task 任务

7.4.1 建立连接

res = tcp_client_open(1,"101.200.0.74",18935,TCP_IPV4);

阻塞,超时60秒。可能的失败原因,网络不可用。

7.4.2 读取数据

res_len = tcp_client_read(1,data,sizeof(data));

无阻塞读取,网络断了,返回-1; 没有数据,返回0; 大于0的数据表示实际读取到的数据长度。

7.4.3 发送数据

tcp_client_write(1,data,res_len);

将接收到的数据,原文回传给远程主机。

7.4.4 断线重连

相关推荐
楷哥爱开发41 分钟前
如何使用 Claude Fable 5 进行网页抓取?2026最新实战教程
大数据·网络·人工智能
Sirius Wu1 小时前
OpenClaw Skill:Matplotlib 可视化技能 + 沙箱双层隔离完整详解
服务器·网络·人工智能·安全·ai·架构·aigc
测试员周周2 小时前
【skills5】一份 spec 生成 k6/JMeter/Locust:性能压测 + 全站截图,上线前的双保险
功能测试·网络协议·测试工具·jmeter·http·自动化·集成测试
酣大智2 小时前
常用 IP 协议号大全(IP 层承载的上层协议)
网络·网络协议·tcp/ip
大公产经晚间消息5 小时前
《寻访独角兽》首期走进太仓,探访小科智行的硬科技“突围”
网络·人工智能·科技
JoyCong19986 小时前
ToDesk新功能科普:屏幕墙、协作模式、设备别名、USB映射...
网络·科技·电脑·远程工作·远程操作
数智化管理手记6 小时前
智能财务如何减少财务加班?智能财务落地需要哪些工具支撑?
大数据·网络·数据库·数据挖掘·精益工程
paopaokaka_luck9 小时前
基于Springboot3+vue3的旅游景区点评系统(AI审核、webSocket聊天、协同过滤算法、Echarts图形化分析)
websocket·网络协议·旅游
其实防守也摸鱼10 小时前
运维--安全与数据库
网络·数据库·学习·安全·安全威胁分析·数据库架构·软件安全
wbs_scy11 小时前
仿 muduo 高并发服务器项目:实现 Connection 连接管理模块,并整合 Any 上下文
运维·服务器·网络