查看: 990|回复: 0

[应用笔记] Lierda NT35E&NT26E UDP/TCP应用指导

[复制链接]

77

主题

118

帖子

1403

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1403
发表于 2023-6-7 11:32:39 | 显示全部楼层 |阅读模式
  1引言

  利尔达NT35E&NT26E模组内置TCP/IP协议栈,用户可以直接通过AT命令访问网络。本文档详细描述NT35E&NT26E模组的TCP-UDP AT指令操作流程。旨在帮助用户快速通过AT命令创建socket、与socket服务器建立TCP或UDP连接。

  1.1文档目的


  本文描述了如何使用Lierda NT35E&NT26E模组的AT指令,实现客户的设备作为Socket客户端与服务器进行网络连接和数据收发。

  1.2 TCP/UDP协议简介


  TCP(Transmission Control Protocol传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。由RFC793定义。它位于IP层之上,应用层之下。它为应用层提供可靠的,像管道一样的连接。它具有以下特点:
  ●TCP是面向连接的通信协议,通过三次握手建立连接,通讯完成时要拆除连接。只能用于端到端的通讯。
  
TCP提供的是一种可靠的数据流服务,提供超时重发、丢弃重复数据、检验数据、流量控制等功能,保证数据能从一端传到另一端。

  UDP(User Datagram Protocol用户数据报协议)是一种无连接传输层协议,提供面向事务的简单不可靠信息传送服务,由RFC768定义。它不提供数据包分组、组装和排序,当报文发送之后,无法得知其是否完整到达。因为UDP协议的控制选项较少,UDP在数据传输过程中延迟更小,数据传输效率更高。
图1.1 TCP服务器接收和发送数据

  1.3数据访问模式说明


  模块当前支持以下3种数据访问模式:
  
非透传Buffer模式
  非透传Push模式
  透传模式

  当使用AT+LIPOPEN打开Socket服务时,可以通过参数<access_mode>来指定Socket的数据访问模式。

  (1)非透传Buffer模式下,可以通过AT+LIPSEND命令发送数据。从网络接收数据时,模块会缓存所接收的数据,并直接上报URC:+LIPURC: <socket>,<type>,<type_data>,有数据到达时,type_data为当前一包的数据长度,之后用户可以通过AT+LIPRD命令来读取缓存数据。

  (2)非透传Push模式下,可以通过AT+LIPSEND发送数据。从网络接收数据时,数据会以如下格式直接输出到COM口上:+LIPURC:<socket>,<type>,<type_data>,recv_data。

  (3)透传模式下,模组直接将串口收到的数据发送给服务器,模组收到服务器下发的数据会直接通过串口输出。

  2环境搭建


  用户在使用NT35E&NT26E进行TCP/UDP通信时,需要使用自己的服务器进行数据交互,为了方便前期用户设备调测,这里给出利尔达X平台测试服务器的环境搭建流程和使用指导。

  2.1平台登陆


  登陆利尔达X平台:https://xiot.senthink.com/,未注册的用户可使用手机号和邮箱进行注册,登陆后平台界面如图2.1所示,点击“控制台”进入功能模块窗口界面。
图2.1 利尔达X平台界面

  在“平台能力中心”下开通“网络调试助手”功能。
图2.2 网络调试助手功能模块

  开通后进入该功能模块,点击“网络调试助手”,就可以按照图2.2所示创建所需要测试协议对应的服务器。

  2.2平台数据通信


  按照2.1章节开通“网络调试助手”后,进入该功能模块,选择左面“TCP”,点击“创建服务器”,生成用于调测TCP服务器的IP和端口。
图2.3 创建TCP服务器

  如图2.4所示,生成的IP与端口为121.89.205.240,10000,用户通过AT指令连接该TCP服务器即可进行数据收发。
图2.4 生成服务器IP、端口

图2.5 TCP/UDP调测界面

  如图2.5所示,模组上发的数据可以在“数据日志”中显示,显示格式可选择ASCII或者HEX;服务器下发数据在“在线调试”窗口进行数据填写,填写完成后点击“发送”即可,服务器下发数据格式可选择ASCII或者HEX。

  3模块应用指导


  本章节使用利尔达X平台TCP/UDP服务器调试工具,给出NT35E&NT26E模组与平台数据交互的应用指导。

  注意:使用的X平台服务器测试数据通信,按照第2章节先创建好对应的服务器(TCP or UDP)后,模组再进行通信连接。

  3.1与TCP Server数据交互


  设定模组的IP地址为121.89.205.240,端口号10000。先输入AT指令AT+LIPOPEN创建TCP客户端并与TCP Server连接,再使用AT+LIPSEND发送数据,X平台服务器调测界面上将显示模组上发的数据;X平台向NT35E&NT26E模组下发数据,模组收到数据后默认会在串口主动推送服务器下发的数据。
图3.1 模组与服务器TCP数据交互

  3.2与UDP Server交互


  设定模组的IP地址为121.89.205.240,端口号22000。先输入AT指令AT+LIPOPEN创建UDP客户端并与UDP Server连接,再使用AT+LIPSEND发送数据,X平台服务器调测界面上将显示模组上发的数据;X平台向NT35E&NT26E模组下发数据,模组收到数据后默认会在串口主动推送服务器下发的数据。
图3.2 模组与服务器UDP数据交互

  注:使用利尔达X平台服务器下发时,如果“发送”按钮显示灰色,需要点击“UDP客户端列表”选择对应的设备IP,然后可以正常数据下发。

  4 AT示例


  服务器下发数据,模组收到相应数据并推送时有两种格式:字符串和HEX。字符串用户可直接识别,HEX为0-F之间的ASCII码。如服务器下发ABCD,字符串格式推送ABCD,使用HEX格式推送41424344。模组收到服务器下发数据推送的格式取决于用户上发数据时使用的格式。

  4.1上电检查流程

  AT    //判断模组是否上电开机成功
  AT+CEREG?    //判断PS域附着状态,第二个参数为1或5表示附着正常
  AT+CGPADDR    //查询核心网是否已分配IP

  4.2 TCP Buffer模式通信流程


  4.2.1创建客户端并进入Buffer模式


  AT+LIPSTATE?    //查询当前TCP状态
  OK

  AT+LIPOPEN="TCP","121.89.205.240",10000,0    //连接TCP服务器,Buffer模式
  OK
  +LIPOPEN: 0,1    //提示连接成功,最长响应60秒,超时未反馈建议使用AT+LIPCLOSE断开socket

  AT+LIPSTATE?    //查询当前TCP状态
  +LIPSTATE: 0,TCP,121.89.205.240,10000,10002,2,0
  OK

  4.2.2 Buffer模式下发送字符串


  AT+LIPSEND=0,1,20,"test data from NT35E"    //在socketID为0的TCP链路上发送字符串数据
  OK
  +LIPSEND: 0,20,1    //发送成功

  AT+LIPSEND=0,1,20    //发送定长的字符串数据
  >
  test data from NT35E    //数据填充,数据未达到指定长度时,30秒后超时退出并上报ERROR
  OK
  +LIPSEND: 0,20,1    //发送成功

  AT+LIPSEND=0,1    //发送不定长的字符串数据,当数据长度到达1024时自动发送
  >
  test data from NT35E    //数据填充
  ◇□    //发送HEX格式的1A(0x1A)作为结束符,电脑端按下<ctrl+Z>
  OK
  +LIPSEND: 0,22,1    //数据发送成功

  4.2.3 Buffer模式下发送HEX


  AT+LIPSEND=0,0,10,"31323334353637383930"    //发送HEX字符串数据
  OK
  +LIPSEND: 0,10,1    //数据发送成功

  AT+LIPSEND=0,0,10    //发送定长的HEX字符串数据
  >
  31323334353637383930    //数据填充,未达到指定长度时,30秒后超时退出,并上报ERROR
  OK
  +LIPSEND: 0,10,1    //发送成功

  AT+LIPSEND=0,0    //发送不定长的数据
  >
  31323334353637383930□    //发送HEX格式的1A(0x1A)作为结束符,或者电脑端按下<ctrl+Z>
  OK
  +LIPSEND: 0,10,1    //数据发送成功

  注:使用不定长发送HEX数据时,串口工具不能勾选回车换行(\r\n),否则数据发送会返回ERROR。

  4.2.4 Buffer模式接收到数据


  AT+LIPSEND=0,1,20,"test data from NT35E"    //模组上发数据给服务器,字符串格式
  OK
  +LIPSEND: 0,20,1    //数据发送成功

  +LIPURC: 0,1,32    //模组接收到服务器下发的数据,长度32

  AT+LIPRD=0,32    //读取数据,字符串格式推送出来(与发送格式相同)
  +LIPRD: 0,121.89.205.240,10000,32,test data from Lierda X platform,0
  OK

  AT+LIPRD=0,32    //再次读取,缓存无数据会显示全0
  +LIPRD: 0,0.0.0.0,0,0,0,0
  OK

  4.2.5断开连接


  AT+LIPCLOSE=0    //断开<socketID>为 0 的连接,最大响应时间5S
  OK
  CLOSE OK    //断开成功

  4.3 TCP Push模式通信流程


  4.3.1创建客户端并进入Push模式


  AT+LIPSTATE?    //查询当前TCP状态
  OK

  //连接TCP服务器,最后一个参数设置为1或者缺省默认为Push模式
  AT+LIPOPEN="TCP","121.89.205.240",10000
  OK
  +LIPOPEN: 0,1    //提示连接成功,最长响应60秒,超时未反馈建议使用AT+LIPCLOSE断开socket

  AT+LIPSTATE?    //查询当前TCP状态
  +LIPSTATE: 0,TCP,121.89.205.240,10000,10003,2,1
  OK

  4.3.2 Push模式下发送字符串


  AT+LIPSEND=0,1,20,"test data from NT35E"    //在socketID为0的TCP链路上发送字符串数据
  OK
  +LIPSEND: 0,20,1    //发送成功

  AT+LIPSEND=0,1,20    //发送定长的字符串数据
  >
  test data from NT35E    //数据填充,数据未达到指定长度时,30秒后超时退出并上报ERROR
  OK
  +LIPSEND: 0,20,1    //发送成功

  AT+LIPSEND=0,1    //发送不定长的字符串数据,当数据长度到达1024时自动发送
  >
  test data from NT35E    //数据填充
  ◇□    //发送HEX格式的1A(0x1A)作为结束符,电脑端按下<ctrl+Z>
  OK
  +LIPSEND: 0,22,1    //数据发送成功

  4.3.3 Push模式下发送HEX


  AT+LIPSEND=0,0,10,"31323334353637383930"    //发送HEX字符串数据
  OK
  +LIPSEND: 0,10,1    //数据发送成功

  AT+LIPSEND=0,0,10    //发送定长的HEX字符串数据
  >
  31323334353637383930    //数据填充,未达到指定长度时,30秒后超时退出,并上报ERROR
  OK
  +LIPSEND: 0,10,1    //发送成功

  AT+LIPSEND=0,0    //发送不定长的数据
  >
  31323334353637383930□    //发送HEX格式的1A(0x1A)作为结束符,或者电脑端按下<ctrl+Z>
  OK
  +LIPSEND: 0,10,1    //数据发送成功

  注:使用不定长发送HEX数据时,串口工具不能勾选回车换行(\r\n),否则数据发送会返回ERROR。

  4.3.4 Push模式接收到数据


  AT+LIPSEND=0,1,20,"test data from NT35E"    //模组上发数据给服务器,字符串格式
  OK
  +LIPSEND: 0,20,1    //数据发送成功

  //模组接收到服务器下发的数据,长度32,字符串格式自动推送出来(与发送格式相同)
  +LIPURC: 0,1,32,test data from Lierda X platform

  AT+LIPSEND=0,0,10,"31323334353637383930"    //模组上发数据给服务器,HEX格式
  OK
  +LIPSEND: 0,10,1    //数据发送成功

  //模组接收到服务器下发的数据,长度32,HEX格式自动推送出来(与发送格式相同)
  +LIPURC: 0,1,32,7465737420646174612066726F6D204C6965726461205820706C6174666F726D

  4.3.5 断开连接

  AT+LIPCLOSE=0    //断开<socketID>为 0 的连接,最大响应时间5S
  OK
  CLOSE OK    //断开成功

  4.4 TCP 透传模式通信流程


  4.4.1创建TCP客户端


  AT+LIPSTATE?    //查询当前TCP状态
  OK

  AT+LIPOPEN="TCP","121.89.205.240",41006,2    //设置服务器IP和端口,创建TCP的socket链接
  CONNECT    //进入透传模式

  4.4.2 TCP透传模式发送和接收数据

  CONNECT    //进入透传模式
  Cat.1 send data to Server    //发送的数据
  Server send data to Cat.1    //接收到的数据
  +++    //发送+++退出透传模式
  OK
  ATO    //再次进入透传模式
  CONNECT    //进入透传模式

  OK

  注意:
  1、进入透传模式后可用+++退出透传模式。
  2、再次进入透传模式可用指令 ATO 进入透传模式。

  4.4.3断开连接


  AT+LIPCLOSE=0  
  //断开<socketID>为 0 的连接,最大响应时间5S
  OK
  CLOSE OK    //断开成功

  4.5 UDP Push模式通信流程


  4.5.1创建UDP客户端


  AT+LIPSTATE?    //查询当前UDP状态
  OK

  AT+LIPOPEN="UDP","121.89.205.240",22000    //设置服务器IP和端口,创建UDP的socket链接
  OK
  +LIPOPEN: 0,1    //创建成功,返回socketID

  AT+LIPSTATE?    //查询当前UDP状态
  +LIPSTATE: 0,UDP,121.89.205.240,22000,10002,2,1    //返回链路信息
  OK

  4.5.2发送字符串数据


  AT+LIPSEND=0,1,20,"test data from NT35E"    //在socketID为0的UDP链路上发送字符串数据
  OK
  +LIPSEND: 0,20,1    //发送成功

  AT+LIPSEND=0,1,20    //发送定长的字符串数据
  >
  test data from NT35E    //数据填充,数据未达到指定长度时,30秒后超时退出并上报ERROR
  OK
  +LIPSEND: 0,20,1    //发送成功

  AT+LIPSEND=0,1    //发送不定长的字符串数据,当数据长度到达1024时自动发送
  >
  test data from NT35E    //数据填充
  ◇□    //发送HEX格式的1A(0x1A)作为结束符,电脑端按下<ctrl+Z>
  OK
  +LIPSEND: 0,22,1    //数据发送成功

  4.5.3发送HEX数据


  AT+LIPSEND=0,0,10,"31323334353637383930"    //发送HEX字符串数据
  OK
  +LIPSEND: 0,10,1    //数据发送成功

  AT+LIPSEND=0,0,10    //发送定长的HEX字符串数据
  >
  31323334353637383930    //数据填充,未达到指定长度时,30秒后超时退出,并上报ERROR
  OK
  +LIPSEND: 0,10,1    //发送成功

  AT+LIPSEND=0,0    //发送不定长的数据
  >
  31323334353637383930    //发送HEX格式的1A(0x1A)作为结束符,电脑端按下<ctrl+Z>
  OK
  +LIPSEND: 0,10,1    //数据发送成功

  注:使用不定长发送HEX数据时,串口工具不能勾选回车换行(\r\n),否则数据发送会返回ERROR。

  4.5.4断开连接


  AT+LIPCLOSE=0    //断开<socketID>为 0 的连接,最大响应时间5S
  OK
  CLOSE OK    //断开成功

  4.6 UDP 透传模式通信流程


  4.6.1创建UDP客户端


  AT+LIPSTATE?    //查询当前UDP状态
  OK

  AT+LIPOPEN="UDP","121.89.205.240",41006,2    //设置服务器IP和端口,创建UDP的socket链接
  CONNECT    //进入透传模式

  4.6.2 UDP透传模式发送和接收数据


  CONNECT    //进入透传模式
  Cat.1 send data to Server    //发送的数据
  Server send data to Cat.1    //接收到的数据
  +++    //发送+++退出透传模式
  OK
  ATO    //再次进入透传模式
  CONNECT    //进入透传模式

  OK

  注意:
  1、进入透传模式后可用+++退出透传模式。
  2、再次进入透传模式可用指令 ATO 进入透传模式。

  4.6.3断开连接


  AT+LIPCLOSE=0    //断开<socketID>为 0 的连接,最大响应时间5S
  OK
  CLOSE OK    //断开成功

  5相关文档


  以下相关文档提供了文档的名称,版本请以最新发布的为准。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表