【EG800Z-CN】TCP客户端示例

【EG800Z-CN】TCP客户端示例

本案例使用mk体育pico开发板和UniRTOS,通过调用UniRTOS中的Socket相关功能函数,让开发板成为TCP客户端,远程连接TCP服务器进行数据交互。

  • TCP Client

项目概述

本案例使用mk体育pico开发板和UniRTOS,通过调用UniRTOS中的Socket相关功能函数,让开发板成为TCP客户端,远程连接TCP服务器进行数据交互。

功能特性

阻塞式TCP客户端
  • 端到端连接自动化:集成“蜂窝网络附着 → PDP上下文激活 → DNS域名解析 → TCP连接建立”全流程,可一站式实现从设备上电到与远程服务器建立可靠通信链路全任务。
  • 全面可靠的数据会话管理:在成功建立TCP连接后,执行预设次数的“发送请求-接收响应”数据交互循环,并内置对send/read操作结果的严格校验,确保会话的可靠性与完整性。

开发准备

硬件要求

  • pico开发板,点此购买开发板。

  • USB数据线(USB-A转USB-C),点此购买。

  • 有效SIM卡。

软件要求

  • unirtos-toolchain.exe:编译工具链安装程序,点此获取
  • Python:用于运行unirtos-cli工具,需使用3.9及更高版本。安装步骤见快速启动-环境搭建章节。
  • Git:unirtos-cli使用该工具拉取SDK、依赖库等,需使用2.40及更高版本。安装步骤见快速启动-环境搭建章节。
  • unirtos-cli:UniRTOS的命令行工具,用于一键拉取SDK、快速创建工程。安装步骤见快速启动-环境搭建章节。
  • USB驱动:用于PC识别模块的USB枚举接口,点此获取
  • QFlash.exe:模块固件烧录程序,用于烧录UniRTOS编译生成的固件,点此获取
  • EPAT工具:芯片厂商提供的日志抓取工具,用于查看模块运行日志以分析应用程序执行情况,点此获取
  • ConnectLab:mk体育提供的物联网协议测试平台,点此跳转。

    快速上手

    下载项目

    示例代码位于UniRTOS官方创客仓库,点此访问下载。

    开发环境搭建

    参考?UNIRTOS 快速入门?文档,了解如何搭建开发环境并完成基本开发流程。

    项目结构

    tcp_demo/
    ├── main
      ├── inc               # 存放项目头文件
        └── tcp_client.h    # Demo头文件
      └── src               # 存放项目源码
        └── tcp_client.c    # Demo源代码
    ├── media               # README所需媒体文件
    ├── menucongfig         # 项目配置的功能选项	
    ├── CMakeLists.txt      # Demo构建脚本
    └── env_config.json     # UniRTOS工程环境配置

    代码拉取

    新开启一个PowerShell窗口,执行以下命令:

    # 拉取示例仓库

    unirtos-cli new -r unirtos-maker-examples

    # 进入该项目

    cd unirtos-maker-examples/tcp_demo

    构建项目

    拉取编译环境

    unirtos-cli env-setup

    在PowerShell窗口执行固件编译命令(如使用模块型号非EG800ZCN_LA,请替换实际需要编译的型号):

    unirtos-cli build -m EG800ZCN_LA -v EG800ZCNLAR01A01_OCPU_20260626

    等待编译结束后,PowerShell 窗口末尾会提示固件编译结果:

    SUCCESS: Unirtos project built successfully!

    修改配置参数

    编译前,请修改源码中需要连接的 TCP 服务器参数。修改点位于?tcp_demo/main/src/tcp_client.c?中,需要修改的参数宏为?SOCKET_BLOCK_CONNECT_SERVER_ADDR(服务器 IP 地址)、SOCKET_BLOCK_CONNECT_SERVER_PORT(服务器端口)、SOCKET_BLOCK_CONNECT_SERVER_NAME(服务器域名)。

    使用?ConnectLab?新建测试服务器,将真实的服务器地址和端口填入项目代码中。

    硬件连接

    1.按卡槽丝印提示方向拨开卡槽盖,将SIM卡放入,再扣好盖子。

    2.使用数据线连接开发板和电脑。

    软件部署

    在ConnectLab平台新建服务器配置,然后将真实的服务器地址和端口填写到项目代码中。

    日志展示

    固件烧录后开机启动,可在日志中看到类似输出:

    [TCP DEMO]dns_syn_getaddrinfo success

    [TCP DEMO]socket connect success!!

    [TCP DEMO]socket_fd=0

    [TCP DEMO]recv xx bytes: ...

     

    代码概览

    主要功能接口

    unir_tcp_demo_init
    功能:TCP阻塞客户端演示的入口与初始化函数。负责创建独立任务,让TCP通信逻辑在后台运行,不阻塞主程序。
    关键操作
    • 任务创建:调用qosa_task_create创建名为app_block的任务,执行socket_app_block_process
    • 任务配置:栈大小4 KB,普通优先级,保证TCP流程稳定运行。
    • 重要性:用户需在应用初始化时调用,用于启动整个TCP客户端通信功能。
    socket_app_block_process
    功能:TCP阻塞客户端主处理函数。完成联网、DNS解析、Socket创建、连接服务器、收发数据全套流程。
    关键操作
    • 等待网络就绪:延时10秒等待模组注网。
    • 激活PDP联网:调用socket_app_datacall_active确保数据链路可用。
    • DNS解析:通过socket_app_block_dns获取服务器IP。
    • 创建Socket:socket_app_block_create创建阻塞式 TCP Socket并连接
    • 循环收发:最多发送20次数据,等待服务器回传(阻塞等待)。
    • 关闭连接:通信完成后调用close释放资源。
    • 重要性:完整封装TCP客户端标准流程,是物联网设备TCP通信的核心参考。
    socket_app_datacall_active
    功能:PDP数据链路激活函数。检查并激活蜂窝网络连接,为TCP通信提供网络基础。
    关键操作
    • 创建DataCall对象:qosa_datacall_conn_new
    • 查询IP信息:判断PDP是否已激活。
    • 未激活则启动拨号:qosa_datacall_start激活PDN连接。
    • 重要性:TCP通信必须依赖可用网络,此函数确保网络就绪。

    沟通无界,服务无限

    了解更多关于mksports公司、产品和技术支持的信息。