0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

物联网行业中TCP通信协议介绍以及如何实现

jf_94171069 来源:jf_94171069 作者:jf_94171069 2024-09-20 16:39 次阅读

一 概述

TCP协议广泛应用于可靠性要求较高的应用场景,如网页浏览、文件传输、电子邮件等。它提供了可靠的数据传输和流控制机制,能够确保数据的完整性和有序性。然而,由于TCP协议在传输过程中引入了较多的控制信息,因此相比于UDP协议,TCP的传输速度较慢。

和UDP区别

是否连接: 可以想象成打电话,比如A给B打电话,只有建立好连接才能通信(交换数据),这种是有连接.而是用微信发消息,不需要建立连接则是无连接

是否可靠传输: 这里的可靠,并不是指A给B的数据一定完全能让B收到,只能确保B是不是收到了

字节流和数据报: TCP和文件IO一样基于 “流”,UDP则是以"数据报"为基本单位

全双工: 一个通道,双向通信

二 TCP协议内容

1 格式

wKgZombtNLuAOkYiAAELMi9BTtw334.jpg

端口:表示发送方的端口号。

目标端口:表示接收方的端口号。

4位首部长度: 用于描述TCP报头有多长,这里的单位是4个字节.如果这里是1111->15,表示报头的长度是60

注: TCP的报头长度是可变的,在下面有一个选项(可有可无),可以有一个选项,也可以有多个.

TCP报头前面20个字节是固定的,后面的选项是可变的,选项可以是0个字节,最多是40个字节

保留位: 协议中预留的一些位,目前没有特定定义或使用规则。以便以后进行扩展或未来使用。

校验和:用于检测数据报的完整性

三 TCP应答机制

TCP是可靠的传输协议,确认应答机制是TCP保证可靠性的最核心机制!

在确认应答机制中,发送方在发送数据包后会等待接收方发送确认消息。如果发送方在一定的时间内没有收到确认消息,它会认为数据包丢失或发生错误,并会重新发送数据包。接收方通过发送确认消息来告知发送方数据包已成功接收,或者指示需要重发某个数据包。

普通报文: ACK这一位为0

应答报文: ACK这一位为1

特殊情况:如果客户端一次性给服务器发多条消息,那么浏览器的应答就会产生歧义

如下图:

wKgaombtNV6AC93CAAAs4iInuKA037.png

网络上有一种特殊情况,“后发先至”,后发的请求可能先到

wKgZombtNYCAP1hVAAA3yGbUC5A757.png

因此就会产生上述两种情况.

为了解决上述问题,就可以针对请求和应答报文进行编号!

wKgZombtNZ2AU3-PAAA0kQUnzs0559.png

跟对编号就可以很明确的分出是哪个请求的应答.即使出现"后发先至"的情况也没有问题

而这个编号就对应TCP报文结构中的32位序号和32位确认序号

wKgZombtNL6AZj_0AAA5Yh8TLgA494.jpg

注: TCP报头只能存一个序号,存的是最后一个字节的序号,是根据报文长度来算的

wKgaombtNL-ADipcAAGUO_CcuFI706.jpg

上述数据的传输过程也不是一帆风顺的,可能会出现丢包,如果丢包,这就需要TCP的超时重传机制了

四 TCP重传机制

超时重传是当发送方发送数据包后,如果在一定的时间内未收到接收方的确认消息(ACK),发送方会认为数据包可能丢失或发生错误,并会重新发送该数据包。

超时重传机制的工作原理如下:

发送方发送数据包后,等待接收方的确认消息。

如果在设定的时间内,发送方未收到接收方的确认消息,就会认为数据包丢失或发生错误。

发送方会重新发送相同的数据包。

接收方收到重复的数据包时,会丢弃重复数据包,并发送之前已接收到的最后一个正确的确认消息。

发送方在收到接收方的确认消息后,继续发送下一个数据包。

超时时间如何确定?

一般操作系统中有一个配置项,描述超时时间的阈值.

如果第一次出现丢包,超出时间阈值后,进行重传.第二次的超时时间阈值就会比第一次更长.

如果重传几次依旧无法传输,就会重置TCP连接,如果还是连不上,就会直接释放连接

超时重传会出现两种情况:

数据报丢了

ack丢了

对于这两种情况发送方都区分不了这两种情况,对于第二种情况,接收方就会收到重复的数据,但可以根据序号进行去重

五 TCP三次握手

三次握手是在TCP协议中建立一个可靠的连接所使用的一种机制。它由发送方和接收方之间进行的三次通信组成,用于确保双方都愿意建立连接,并同步各自的初始序列号。

三次握手类似于打电话

如下图:

wKgaombtNbuAPBSTAAA2UVaMdAE647.png

三次握手的过程本质上是四次数据的交互.只是中间两条数据可以合并到一起

如下图所示:

wKgaombtNMKAAJAdAAA_9zoww3c584.jpg

三次握手的步骤:

第一次握手(SYN):发送方向接收方发送一个带有SYN标志的数据包(SYN包),请求建立连接。发送方会随机选择一个初始序列号,并将它放在SYN包中的序列号字段中发送给接收方。

第二次握手(SYN+ACK):接收方收到SYN包后,会向发送方发送一个带有SYN和ACK标志的数据包(SYN+ACK包),表示接受建立连接的请求,并回复确认号(ACK)和自己的初始序列号。接收方还会随机选择一个初始序列号,并将它放在SYN+ACK包中的序列号字段中发送给发送方。

第三次握手(ACK):发送方收到SYN+ACK包后,会向接收方发送一个带有ACK标志的数据包(ACK包),确认接收方的确认号,并发送自己的确认号。接收方收到ACK包后,会确认发送方的确认号,并完成连接的建立。

为什么要建立连接以及建立连接的意义:

检查一下当前的网络情况是否畅通

三次握手也是在检查通信双方的发送能力和接收能力是正常的

三次握手过程中,也在协商一些重要的参数

两个重要的TCP状态:

LISTEN:表示服务器正在监听来自客户端的连接请求。服务器在LISTEN状态下,等待客户端发起连接请求。

ESTABLISHED:表示TCP连接已经建立,双方可以进行数据的传输。在ESTABLISHED状态下,双方可以互相发送数据包。

为什么两次不行

1、阻⽌重复历史连接的初始化(主要原因)

当旧的SYN报文先到达服务端,服务端回一个ACK+SYN报文

客户端收到后可以根据自身的上下文,判断这是一个历史连接(序列号过期或超时) ,那么客户端就会发送 RST 报文给服务端,表示中止这一次连接。

两次握手在收到服务端的响应后开始发生数据,不能判断当前连接是否是历史连接。

2、同步双方的初始序列号

TCP 协议的通信双方,都必须维护一个[序列号], 序列号是可靠传输的一个关键因素

接收端可以去除重复数据

接收端可以按照序列号顺序接收

标识发送的数据包,哪些已经被收到

两次握手只保证了一方的初始序列号能被对方成功接收,没办法保证双方的初始序列号都能被确认接收。

3、避免资源浪费

两次握手会造成消息滞留情况下,服务器重复接受无用的连接请求 SYN 报文,而造成重复分配资源。

只有两次握手时,如果客户端的SYN请求连接在网络中阻塞,客户端没有收到服务端的ACK报文,会重新发送SYN。

由于没有第三次握手,服务器不清楚客户端是否收到了自己发送的建立连接的 ACK 确认信号,所以每收到一个 SYN 就只能先主动建立一个连接。

六 TCP四次挥手

四次挥手是在TCP协议中用于终止一个已建立的连接的机制。它是TCP连接的正常关闭流程,由发送方和接收方之间进行的四次通信组成。

以下是四次挥手的步骤:

第一次挥手(FIN):发送方向接收方发送一个带有FIN标志的数据包(FIN包),表示发送方已经完成数据的发送,希望关闭连接。发送方不再发送数据,但仍然可以接收数据。

第二次挥手(ACK):接收方收到FIN包后,向发送方发送一个带有确认号(ACK)的数据包,表示已接收到发送方的关闭请求。接收方仍然可以发送数据。

第三次挥手(FIN):接收方向发送方发送一个带有FIN标志的数据包(FIN包),表示接收方也希望关闭连接。接收方停止发送数据,但仍然可以接收数据。

第四次挥手(ACK):发送方收到FIN包后,向接收方发送一个带有确认号(ACK)的数据包,表示已接收到接收方的关闭请求。发送方不再发送数据,也不再接收数据。

wKgZombtNMKAPAj0AAA1rjD6Lu8515.jpg

两个重要的TCP状态:

CLOSE_WAIT:表示TCP连接的一方已经收到了对方的连接终止请求(FIN包),并发送了确认(ACK包)。在CLOSE_WAIT状态下,接收方等待应用层处理完数据后的连接关闭。

TIME_WAIT:表示TCP连接的一方已经发送了连接终止请求(FIN包),并收到了对方的确认(ACK包)。在TIME_WAIT状态下,发送方等待一段时间后,保持连接状态清理(ACK包没有丢包),并释放资源。

七 TCP滑动窗口

TCP能保证可靠传输,但失去了效率.为了在保证可靠性的前提下,尽可能的提高效率,就有了滑动窗口机制

滑动窗口是在数据传输中用于流量控制和可靠传输的一种机制。它允许发送方在不等待接收方确认的情况下连续发送多个数据包,提高了传输效率。

在不引入滑动窗口的情况下:

wKgaombtNMSAC3ViAACkdT9OdXQ681.jpg

发送方和接收方一应一答,可靠性确实能得到保证,但其实大部分的时间都消耗在等待ACK上了.

因此滑动窗口就是每次批量发送一波消息,然后在等一波ACK,再发一波消息

如下图所示:

wKgZombtNMWAHz0rAADZJdo2MhQ462.jpg

wKgZombtNMiADC4-AAFdPISk62Q650.jpg

上图中窗口大小是3000,主机A发送了3000字节的数据,主机B需要确认应答,如果第一个ack成功返回主机A,说明1~1000的数据发送成功,窗口就会向后移动,并发送下一条数据,保证窗口中的数据都是需要确认应答的,或者是没发出去的.

上述过程都是正常的情况下,但也会发送丢包或者乱序的情况

情况1:数据包到了,但是ACK丢了

wKgZombtNMqARssEAAB1D4qHUis293.jpg

如上图第二个ack丢了,不用做任何处理也没关系,对于可靠传输没有任何影响.右边ack的数字,1001表示1001之前的数据都受到了,2001表示2001之前的数据都受到了,3001表示3001之前的数据都受到了.(后者包括前者).

情况2:数据包丢了

wKgaombtNMqAUsa8AACCefEEAww216.jpg

假设11000的数据包丢了,.在11000的数据开始丢的时候,主机A并不知道丢了数据,会继续往下发数据.

那么主机B会在收到01000的数据前的应答中返回1001,主机A在接收到重复的几次确认之后,会重新发送11000的数据.当主机B收到11000的数据后,会把应答的数据变成最新的,例如在主机A重发01000的数据前又发了30006000的数据,并且没有丢包,在收到01000的数据后,下此应答的数字就是6001.

上述的重传过程,效率也是比较高的,并没有耽误后续数据的发送,这个称为"快速重传".

八 TCP流量控制

对于滑动窗口的大小,也并不是随意设置的.如果超出接收方的处理速度,就可能会丢失一些数据,那就还得重传这些数据.效率还得不到提升. 因为又有了流量控制机制

流量控制是在数据通信中的一种机制,用于控制发送方的数据发送速率,以适应接收方的处理能力,避免数据的丢失或拥塞。

接收方使用接收缓冲区的剩余空间大小,来作为发送方速率(滑动窗口大小)的参考数值

例如一个水桶,发送方就是往桶里放水,接收方就是出水.进水和出水的速度,就决定了 水位的高低

接收方会在收到发送方的数据后,会在返回的ACK报文中,把当前缓冲区的剩余空间大小,反馈给发送发

对应着TCP报文结构中的16位窗口大小

在TCP报文结构的选项中,有一个用于调整窗口大小的扩展因子.用于跳转滑动窗口的大小,并不是说窗口的大小最大只能是16位(64KB)

九 TCP拥塞控制

拥塞控制是用于控制在网络中发生拥塞时的数据传输速率。当网络中的流量过大,导致网络拥塞时,TCP拥塞控制机制会自动减少发送方的数据传输速率,以避免进一步加剧网络拥塞。

流量控制只是考虑了接收方的处理速率,但数据的传输还要经过很多的交换机和路由器.因此我们也要考虑这些中间结点的速率.

拥塞控制机制主要包括四个算法:慢启动、拥塞避免、快重传和快恢复。

慢启动算法是在TCP连接建立时,发送方初始的数据传输速率较低,然后逐渐增加发送方的数据传输速率,直到网络出现拥塞为止。

拥塞避免算法是在慢启动阶段结束后,发送方以线性增加的方式增加数据传输速率,以避免过快地增加网络流量。

快重传算法是当接收方收到重复的数据包时,会立即发送一个重复确认,以通知发送方有数据包丢失,从而使发送方能够更快地重传丢失的数据包。

快恢复算法是在接收到重复确认后,发送方将拥塞窗口减半,然后继续进行拥塞避免算法,以减少网络拥塞的影响。

对于流量控制和拥塞控制,本质上都是在控制窗口的大小,在实际中较小的那个作为窗口的大小

十 TCP延时应答

延时应答是指在TCP通信中,当一方发送数据给另一方时,接收方需要向发送方发送一个确认应答,表示已经成功接收到数据。延时应答是指接收方在接收到数据后,不立即发送确认应答,而是等待一段时间后再发送确认应答。

如下图:

wKgZombtNMyARCLYAAG_yzFuBms732.jpg

接收方在收到发送方的数据后,不会立即返回应答,而是接收方先进行一部分数据的处理然后再返回应答给发送方.

延时应答的主要作用是为了优化网络传输性能。TCP协议使用了滑动窗口机制,发送方会根据接收方发送的确认应答来确定下一次发送的数据量。如果接收方立即发送确认应答,那么发送方会立即发送下一批数据,造成网络拥塞。而延时应答可以让发送方在一定时间内累积多个数据包,然后一次性发送确认应答,有效减少了网络流量。

十一 TCP应用场景

TCP/IP模型的应用场景非常广泛,几乎涵盖了所有基于互联网通信的领域。以下是TCP/IP模型的主要应用场景,以分点表示和归纳的方式进行说明:

11.1 互联网通信

TCP/IP模型是互联网通信的基础,几乎所有的互联网服务都依赖于TCP/IP协议进行数据传输和通信。

网页浏览、电子邮件、文件下载、实时通信(如语音、视频会议)等,都是基于TCP/IP协议来实现的。

例如,HTTP(超文本传输协议)和HTTPS(安全超文本传输协议)用于网页浏览,SMTP(简单邮件传输协议)用于电子邮件的发送,FTP(文件传输协议)用于文件的上传和下载。

11.2 远程登录和管理

通过TCP/IP协议,用户可以通过网络远程登录到其他计算机,进行远程管理和操作。

例如,SSH(安全外壳协议)就是一种常用的远程登录协议,它提供了加密的通信通道,保证了数据传输的安全性。

11.3 文件共享

TCP/IP协议支持文件共享,用户可以通过网络访问其他计算机上的文件和资源。

例如,NFS(网络文件系统)和SMB(服务器消息块)是两种常见的文件共享协议,它们允许用户在网络上共享和访问文件。

11.4 局域网(LAN)和广域网(WAN)通信

除了互联网通信外,TCP/IP协议也广泛应用于局域网(LAN)和广域网(WAN)中。

在局域网中,TCP/IP协议通常用于连接各种设备(如计算机、打印机、服务器等),实现内部通信和资源共享。

在广域网中,TCP/IP协议被用于连接不同地理位置的网络,实现跨越城市、国家甚至全球的数据传输。

11.5 无线网络通信

TCP/IP协议在无线网络中也起着重要作用,如无线局域网(WLAN)和移动通信网络

无论是通过Wi-Fi还是移动通信网络,用户的设备都可以基于TCP/IP协议进行通信和数据传输。

11.6 实时通信应用

TCP/IP协议为实时通信应用提供了可靠的保障,如在线游戏、视频直播等。

这些应用对数据传输的实时性和稳定性要求较高,TCP/IP协议通过其传输层协议(如TCP和UDP)保证了数据的可靠传输和实时性。

十二 TCP组件的使用

1 Gitee链接地址

组件位于amaziot_bloom_os_sdklibrariesamxtuam_tcp.c

Gitee源码地址:https://gitee.com/ning./hongdou

Github源码地址:https://github.com/ayumid/hongdou

2 应用层组件功能介绍

提供TCP连接实例,可以通过调用组件内的API,来实现TCP本地客户端和服务器之间的通信。

使用该组件,必须同时使用AT组件,文件组件,TCP组件,掉线组件,掉线重连组件。

3 代码讲解

1 dtu_sockrcv_thread

功能:该函数用于,下行数据接收线程。

参数:无

返回值:无

示例:

//下行数据接收线程
status = OSATaskCreate(&dtu_socket_task_ref, dtu_socket_task_stack, DTU_SOCKET_TASK_STACK_SIZE, 160, "dtu_sockrcv_thread", dtu_sockrcv_thread, NULL);
ASSERT(status == OS_SUCCESS);

2 dtu_get_socket_ctx

功能:该函数用于,用于其它软件模块使用网络模块相关资源时,获取资源句柄。

参数:无

返回值:无

示例:

 dtu_socket_ctx = dtu_get_socket_ctx();

3 dtu_set_socket_fn

功能:该函数用于,初始化socket相关的信息。

参数:无

返回值:无

示例:

//初始化socket fn
dtu_set_socket_fn();

4 dtu_socket_init

功能:该函数用于,初始化socket。

参数:

参数 释义
param 参数指针

返回值:无

示例:

//打开串口,并设置回调函数
UART_OPEN(dtu_uart_data_recv_cbk); 

5 dtu_socket_write

功能:该函数用于,数据发送到服务,根据参数是TCP还是UDP调用不同的底层API。

参数:

参数 释义
data 串口数据缓冲区指针
len 数据长度

返回值:无

示例:

//打开串口,并设置回调函数
UART_OPEN(dtu_uart_data_recv_cbk); 

6 dtu_socket_dl_data_recv

功能:该函数用于,阻塞函数,用于接收服务器数据,函数进入后会一直阻塞在select函数,收到数据后,根据配置的TCP还是UDP调用不同的底层函数,再调用数据预处理函数,之后会重新阻塞在select函数。

参数:

参数 释义
fd socket描述符
sock socket指针

返回值:无

示例:

//读取下行的数据
rcv = dtu_socket_dl_data_recv(sock_temp.fd, (void *)&sock_temp);

7 dtu_socket_dl_data_pre_check

功能:该函数用于,判断下行数据类型,网络AT指令调用函数处理;透传数据直接发送到串口。

参数:

参数 释义
data 串口数据缓冲区指针
len 数据长度

返回值:无

示例:

//判断是否是网络AT指令
            dtu_socket_dl_data_pre_check(bytes,sendData);

8 dtu_send_serial_data_to_server

功能:该函数用于,发送数据到服务器,判断是否需要打开心跳定时器,根据AT指令配置,判断是否需要在数据前面增加注册包。

参数:

参数 释义
data 串口数据缓冲区指针
len 数据长度

返回值:无

示例:

dtu_send_serial_data_to_server(uartData);

4 Demo实战

4.1 创建一个Demo

复制20.1_file_xtu示例工程,到同一个文件夹下,修改文件名为20.4_trans_xtu,如图:

wKgaombtNM2AKGlMAAC7m7L3Vbk812.jpg

4.2 修改makefile

增加文件组件所在目录头文件路径,和源文件路径,如图:

wKgZombtNNCAd1rgAABLnKbLIvY943.jpg

4.3 增加头文件

使用代码编辑器,将新建的工程文件加入代码编辑器中,打开main.c,修改main.c,加入am.h等头文件,如图:

wKgaombtNNGAUWvTAAALmx7z1zs795.jpg

4.4 修改代码

示例使用的是板载5x6卡,用户的硬件可能是使用外置卡,或者是三合一全网通卡,因为硬件上三种卡使用的模组SIM接口不一样(外置卡SIM1,5x6卡和三合一卡SIM2),所以,需要通过一个全局变量来制定SIM卡硬件接口。

extern外部变量SDK_INIT_SIM_SELECT_VALUE,这里判断了是否使用外置卡,这个宏定义在Makefile里面定义。

wKgZombtNNOAZvVYAAAVMVRfTbM725.jpg

在Phase1Inits_enter中,宏定义判断是否要包含对SDK_INIT_SIM_SELECT_VALUE变量的修改。

wKgaombtNNOAaub2AAAhKBe8PfY515.jpg

在Phase2Inits_exit 调用文件组件提供的对外API,如图:

wKgZombtNNWAUw4dAABd7oD6iNk979.jpg

4.5 编译

在SDK根目录打开命令行,输入命令.build.bat -l .amaziot_bloom_os_sdksamplelibraries20.5_socket_xtu

PS F:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08
λ .build.bat -l .amaziot_bloom_os_sdksamplelibraries20.5_socket_xtu
子目录或文件 outbin 已经存在。
命令语法不正确。
子目录或文件 buildobj 已经存在。
gnumake: Entering directory `F:/3.asr-b/cat.1-asr1606/1.software/BLOOM_OS_1606_OPENCPU_1191_A08/amaziot_bloom_os_sdk/sample/libraries/20.5_socket_xtu'
armcc.exe -c  --cpu Cortex-R4 --no_unaligned_access -g -O2 --apcs /inter --diag_suppress 2084,1,2,177,188,223,550,1296,2795,6319,9931,9933 --diag_error=warning --gnu --thumb --loose_implicit_cast  -DDATA_COLLECTOR_IMPL -DISPT_OVER_SSP -DDIAG_SSP_DOUBLE_BUFFER_USE_DYNAMIC_ALLOCATION -DENV_XSCALE -DL1_DCXO_ENABLED -DLTE_HIGH_MOBILITY_OPTIMIZATION -DRUN_XIP_MODE -DCRANE_Z2 -DCA_LONG_IPC_MSG -DNEZHA3 -DNEZHA3_1826 -DUPGRADE_PLMS -DUPGRADE_PLMS_SR -DLTE_GSMMULTIBCCH -DGPLC_LTE_RSSI_SCAN -DL1V_NEW_RSSI -DUPGRADE_PLMS_3G -DUPGRADE_PLMS_L1 -DUPGRADE_FG_PLMS -DFG_PLMS_URR -DUPGRADE_L1A_FG_PLMS -DUPGRADE_PLMS_STAGE_2 -DUPGRADE_MBCCH -DMULTI_BCCH_READY_IND -DURR_MRAT_ICS_SEARCH -DUPGRADE_ICS -DMRAT_NAS -DUPGRADE_PLMS_SEARCH_API -DICS_MBCCH -DICS_MBCCH_2G_RSSI -DDIAG_NEWPP -DPHS_SW_DEMO -DPHS_SW_DEMO_TTC -DPHS_SW_DEMO_TTC_PM -DFULL_SYSTEM -D_DDR_INIT_ -D_TAVOR_HARBELL_ -DUPGRADE_ARBEL_PLATFORM -D_TAVOR_B0_SILICON_ -DTDL1C_SPY_ENABLE -DDLM_TAVOR -DTAVOR -DFLAVOR_DUALCORE -DDEBUG_D2_MOR_REG_RESEREVED_ENABLE -D_DIAG_USE_COMMSTACK_ -D_TAVOR_DIAG_ -DPM_DEBUG_MODE_ENABLED -DPM_D2FULL_MODE -DPM_EXT_DBG_INT_ARR -DFEATURE_WB_AMR_PS -DMACRO_FOR_LWG -DHL_LWG -DOPTIMIZE_FOR_2G_BCCH -DPLAT_TEST -D_FDI_USE_OSA_ -DPLAT_USE_THREADX -DLWIP_IPNETBUF_SUPPORT -DCRANE_MCU_DONGLE -DAT_OVER_UART -DPHS_SW_DEMO_TTC_PM -DUPGRADE_LTE_ONLY -DEXT_AT_MODEM_SUPPORT -DLTEONLY_THIN_SINGLE_SIM -DLFS_FILE_SYS -DLFS_FILE_SYS_V2 -DPSM_ENABLE -DNO_PAHO_MQTT -DNO_XML -DNO_LWM2M -DREMOVE_MBEDTLS -DNO_AT_NET -DCRANE_SD_NOT_SUPPORT -DNTP -DYMODEM_EEH_DUMP -DENABLE_DM_LTEONLY -DLTEONLY_THIN -DNO_EXTEND_MY_Q_AT -DNOT_SUPPORT_HTTPS -DNOT_SUPPORT_PM813 -DCRANEL_4MRAM -DREMOVE_PB -DUART_NEW_VERSION -DREMOVE_MEP -DREMOVE_SMS -DREMOVE_ENVSIM -DAPN_INCODE -DLTEONLY_THIN_SINGLE_SIM_2MFLASH -DASR160X_OPENCPU_FEATURE -DENABLE_UART3_FEATRUE -DENABLE_UART4_FEATRUE -DYUGE_MBEDTLS_3_2_1 -DENABLE_MAC_TX_DATA_LOGGING -DDISABLE_NVRAM_ACCESS -DINTEL_UPGRADE_EE_HANDLER_SUPPORT -DLTE_W_PS -DL1_DUAL_MODE -DUPGRADE_HERMON_DUAL -DINTEL_UPGRADE_DUAL_RAT -DINTEL_UPGRADE_GPRS_CIPHER_FLUSH -DUPGRADE_ENHANCED_QUAD_BAND -DINTEL_2CHIP_PLAT -DI_2CHIP_PLAT -DUPGRDE_TAVOR_COMMUNICATION -DRUN_WIRELESS_MODEM -DFLAVOR_DDR12MB_GB1MB5 -DFEATURE_SHMEM -DACIPC_ENABLE_NEW_CALLBACK_MECHANISM -DRELIABLE_DATA -DMAP_NSS -DTV_FNAME=""SW_PLATFORM=PMD2NONE PHS_SW_DEMO PHS_SW_DEMO_PM SRCNUCLEUS FULL_SYSTEM NOACRTC PDFLT PLAT_TEST PV2 DIAGOSHMEM NVM WITHL1V"" -DTV_FDESC=""SW_DESCRIPTION="" -DENABLE_ACIPC -D_DATAOMSL_ENABLED_ -DUSB_CABLE_DETECTION_VIA_PMIC -DMIPS_TEST -DMIPS_TEST_RAM -DFLAVOR_DIET_RAM -DNVM_INCLUDE -DMSL_INCLUDE -DMSL_POOL_MEM -DNO_AUDIO -DOSA_QUEUE_NAMES -D_DIAG_DISABLE_USB_ -DOSA_NUCLEUS -DOSA_USED -DPM_D2NONE_MODE -DCRANE_SOC_TEMPERATURE_SENSOR -DL1_SW_UPDATE_FOR_DIGRF -DPHS_L1_SW_UPDATE_R7 -DUPGRADE_LTE -DFRBD_CALIB_NVM -DFRBD_AGC_CALIB -DFRBD_FDT_CALIB -DHSPA_MPR -DCAPT_PARAMS_OPTIMIZE -DL1_WB_R99_ONLY -DL1V_WB_R99_ONLY -DINTERGRATED_RF_SUPPORT -DL1_RX_DIV_SUPPORT -DENABLE_OOS_HANDLING -DTAVOR_D2_WB_L1_SUPPORT -DL1_DDR_HIGH_FREQ -DUPGRADE_DIGRF3G_SUPPORT -DW_PS_PLUS_G_PAGING -D"NO_APLP=0" -DINTEL_UPGRADE_UNIFIED_VOICE_TASK -DINTEL_UPGRADE_R99 -DAPLP_SPY_ENABLE -D__TARGET_FEATURE_DOUBLEWORD -DWHOLE_UMTS_STACK -DUSE_TTPCOM_CSR_BLUETOOTH_AUDIO_GAIN_CONTROL -DL1_UPGRADE_R5 -DUPGRADE_EDGE -DUPGRADE_R4_FS1 -DINTEL_UPGRADE_GSM_CRL_IF -DUPGRADE_EGPRS_M -DINTEL_UPGRADE_EGPRS_M -DINTEL_UPGRADE_RF_PARAMS_IN_CF_TDS -DINTEL_UPGRADE_2SAMPLES_PER_SYMBOL -D"GPRS_MULTISLOT_CLASS=12" -D"EGPRS_MULTISLOT_CLASS=12" -DMARVELL_UPGRADE_BSIC_REDESIGN -DMSL_INCLUDE -DINTEL_HERMON_SAC -DCRANE_CUST_BUILD -DL1_SW_UPDATE_FOR_DIGRF -DFLAVOR_COM -DSILICON_PV2 -DSILICON_SEAGULL -DSILICON_TTC_CORE_SEAGULL -DPCAC_INCLUDE -Otime  -DBUILD_DATE=""11 21 2023"" -DBUILD_TIME=""14:49:58"" -Iatcmdsinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhoptelephonyyugeinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhalUARTinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhalcoreinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhalPMUinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhalGPIOinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xosposixinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xdiagdiag_logicsrc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xcswSysCfginc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xcswplatforminc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xenvwin32inc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xcswBSPinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xcswplatformdev_platbuild -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xososainc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xosthreadxinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xosnu_xscaleinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xpcacpsminc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xpcachttpclientsrc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xdiagdiag_logicinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhoptimerinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhopintcinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xcswPMinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhoppminc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xsoftutilTickManagerinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhopBSPinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhoptelephonyatcmdsrvinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhoptelephonyatparserinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhoptelephonysdkinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xpcachttpclientinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xpcacciinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xpcaclwipv4v6srcinclude -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xpcaclwipv4v6srcincludearch -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xpcaclwipv4v6srcincludeipv4 -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xpcaclwipv4v6srcincludeipv6 -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xpcaclwipv4v6srcincludelwip -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xpcaclwipv4v6srcincludenetif -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhopmmi_matinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xtavorArbelinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xtavorenvinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhoptelephonymodeminc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xpcacdusterinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xpcacfotainc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhalI2Cinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhalACIPCinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xsoftutilfatsysflash -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xsoftutilFDIsrcINCLUDE -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhalMMUinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xsoftutilFDIsrcFDI_ADD -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xsoftutilFDIsrcFM_INC -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xsoftutilfatsysfshdr -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xsoftutillittlefsinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xpcacttsinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xpcacdialinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xsoftutilcsw_memoryinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhoputilitiesinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhopcommpminc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xsoftutilnvminc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xsoftutilEEhandlerinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xsoftutilEEhandlersrc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhopRTCinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhoptelephonyci_clientinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhalBT_deviceinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhalUARTinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhopmrdinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhopdmainc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xsoftutilsoftutilinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhalSPIinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xpcacwebsocketinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xpcacatnet_srvinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xsoftutilfotacomminc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xaud_swAudioinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xaud_swACM_COMMinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xaud_swaudio_stubsrc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhopaaminc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xaud_swAudioHALinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xhaldbgshellinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08includeasr160xpcacopencpuinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08amaziot_bloom_os_sdkutils -IF:/3.asr-b/cat.1-asr1606/1.software/BLOOM_OS_1606_OPENCPU_1191_A08/amaziot_bloom_os_sdk/sample/libraries/20.5_socket_xtuaminc -IF:/3.asr-b/cat.1-asr1606/1.software/BLOOM_OS_1606_OPENCPU_1191_A08/amaziot_bloom_os_sdk/sample/libraries/20.5_socket_xtuatcmdsinc -IF:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08/amaziot_bloom_os_sdk/librariesamxtu -DDTU_BASED_ON_TCP -DDTU_TYPE_5X6 -DDTU_UART_115200_BAUD  -o buildobj/ext_at_cmds.o F:/3.asr-b/cat.1-asr1606/1.software/BLOOM_OS_1606_OPENCPU_1191_A08/amaziot_bloom_os_sdk/sample/libraries/20.5_socket_xtu/atcmds/src/ext_at_cmds.c
armlink.exe buildobj/main.o buildobj/ext_at_cmds.o buildobj/ext_at_controller.o buildobj/am_file.o buildobj/am_at.o buildobj/am_trans.o buildobj/am_socket.o buildobj/am_hb.o buildobj/am_net.o 
                -o F:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08outbinArbel_PMD2NONE_40M.axf 
                --via F:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08prebuilt_1606lArbel_PMD2NONE_targ_objliblist.txt 
                --elf 
                --scatter F:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08prebuilt_1606lCrane_DS_4M_Ram_2M_Flash_XIP_CIPSRAM_Common_SingleSIM.sct 
                --predefine="-DLTEONLY_THIN_SINGLE_SIM" --map --symbols --info sizes,totals 
                --list F:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08outbinArbel_PMD2NONE_40M.map 
                --keep init.o(Header) --keep init.o(Vectors) --diag_suppress 6312,6314,6319,6329 
                --feedback F:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08outfeedbackLinkOptLteonlyThin_SingleSim_NoSMS.txt
F:3.asr-bcat.1-asr16061.softwareBLOOM_OS_1606_OPENCPU_1191_A08toolsbuildimage_1606l.bat
SDK_PROD_TYPE   : [DM]
SDK_CUST_SKU    : [THIN_SINGLE_SIM_NO_SMS]
SDK_PS_MODE     : [LTEONLY]
SDK_CHIP_VER    : [Z2A0]
SDK_OS_TYPE     : [TX]
Platform Convertion Tools v4.01 with PS option extension
Convertion done!
|INPUT   |outbincp_1606L.bin
|MARK    |NAME    |EXEADDR .LOADADDR.LENGTH  .CPZLADDR|COMPRESS STASTIC              |
|--------|--------|--------.--------.--------.--------|------------------------------|
|This Is LteOnly 4M|
|RW_CPZ_1|DDR_RW_ |7e11c000.80066514.0000d188.80067000|0000d188->00003000
|This Is LteOnly 4M|
|RW_CPZ_2|PS_NCAH |7e388000.8007369c.00001300.8006a000|00001300->00001000
|This Is LteOnly 4M|
|RW_CPZ_3|ITCM    |7e3dac00.8007499c.0000f51c.8006b000|0000f51c->0000a000
|This Is LteOnly 4M|
|RW_CPZ_4|CODE_PS |7e1ad000.80083eb8.0002fc5c.80075000|0002fc5c->0001e000
|This Is LteOnly 4M|
|RW_CPZ_5|CODEPSB |7e1df000.800b3b14.000339bc.80093000|000339bc->0001b000
|This Is LteOnly 4M|
|RW_CPZ_6|CODEPSC |7e216000.800e74d0.000323ec.800ae000|000323ec->0001b000
|This Is LteOnly 4M|
|RW_CPZ_7|CODEPSD |7e24c000.801198bc.00028d88.800c9000|00028d88->0001a000
|This Is LteOnly 4M|
|RW_CPZ_8|CODEPSE |7e27a000.80142644.0002e310.800e3000|0002e310->0001a000
|This Is LteOnly 4M|
|RW_CPZ_9|CODEPSF |7e2ac000.80170954.0001c948.800fd000|0001c948->00011000
|This Is LteOnly 4M|
|RW_CPZ_A|CODE_PL |7e2cd000.8018d29c.0002f914.8010e000|0002f914->0001e000
|This Is LteOnly 4M|
|RW_CPZ_B|CODEPLB |7e2fd000.801bcbb0.00038d58.8012c000|00038d58->00021000
|This Is LteOnly 4M|
|RW_CPZ_C|CODEPLC |7e337000.801f5908.000268d4.8014d000|000268d4->00012000
|--------|--------|--------.--------.--------.--------|------------------------------|
|                                                     |      0x002051dc -> 0x00148000|
|                                                     |       2.020(MB) ->  1.281(MB)|
|------------------------------------------------------------------------------------|
cp_1606L.axf
cp_1606L.bin
cp_1606L.map
gnumake: Leaving directory `F:/3.asr-b/cat.1-asr1606/1.software/BLOOM_OS_1606_OPENCPU_1191_A08/amaziot_bloom_os_sdk/sample/libraries/20.5_socket_xtu'
"copy NEZHAC_CP_CNR_MIFI_TX.bin to ./ "

已复制         1 个文件。

4.6 生成固件

参考入门中开发工具,生成工具。

4.7 查看现象

固件下载到模组后,通过AT串口配置服务器地址,然后给服务器发信息,服务器下发信息给AT口,如图,

wKgaombtNNaAbcpUAAEHW_7JSb8518.jpg

wKgZombtNNiADJgfAAB_wMZ3pzM923.jpg

5 总结

根据实验现象,按照本文所述流程,可以实现TCP功能。

本文章源自奇迹物联开源的物联网应用知识库Cellular IoT Wiki,更多技术干货欢迎关注收藏Wiki:Cellular IoT Wiki 知识库

https://rckrv97mzx.feishu.cn/wiki/wikcnBvAC9WOkEYG5CLqGwm6PHf

点击链接如何加入奇迹物联技术话题群:https://rckrv97mzx.feishu.cn/docx/Xskpd1cFQo7hu9x5EuicbsjTnTf

可以获取加入技术话题群攻略

注:本文部分内容来源于网络,如有侵权,请及时联系我们。

审核编辑 黄宇

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 通信协议
    +关注

    关注

    28

    文章

    810

    浏览量

    40119
  • 物联网
    +关注

    关注

    2894

    文章

    43301

    浏览量

    366346
  • TCP
    TCP
    +关注

    关注

    8

    文章

    1324

    浏览量

    78754
  • UDP
    UDP
    +关注

    关注

    0

    文章

    317

    浏览量

    33800
收藏 人收藏

    评论

    相关推荐

    联网行业MQTT通信协议详解以及使用

    联网、小型设备、移动应用等方面有较广泛的应用。 二 MQTT协议特点 MQTT是一个基于 客户端-服务器 的消息发布/订阅传输
    的头像 发表于 09-20 17:08 13次阅读
    <b class='flag-5'>物</b><b class='flag-5'>联网</b><b class='flag-5'>行业</b><b class='flag-5'>中</b>MQTT<b class='flag-5'>通信协议</b>详解<b class='flag-5'>以及</b>使用

    简单认识UART通信协议

    模块等多种设备之间的数据传输。以下是对UART通讯协议的详细简述,内容将涵盖其基本原理、工作方式、配置参数、常见应用以及与其他通信协议的比较。
    的头像 发表于 07-25 18:07 978次阅读

    华纳云:TCP IP协议的发展和优势

    如何被组织、传输和路由。TCP/IP协议集包含了许多协议,每个协议负责网络通信过程的不同方面。
    的头像 发表于 07-25 16:49 246次阅读

    工业以太网通信协议的主要类别

    随着工业4.0和智能制造的快速发展,工业以太网通信协议与标准在工业自动化领域扮演着越来越重要的角色。工业以太网不仅提供了高效、可靠的数据传输手段,还为实现设备间的无缝集成和信息共享提供了可能。本文将详细介绍工业以太网
    的头像 发表于 06-28 18:02 822次阅读

    西门子S7协议TCP协议的区别

    在工业自动化领域,通信协议的选择对于确保设备间的顺畅通信和数据的可靠传输至关重要。西门子S7协议TCP协议作为两种常用的
    的头像 发表于 06-19 15:54 1963次阅读

    简单认识UART串行通信协议

    的数据通信,特别是在嵌入式系统、计算机外设以及微控制器等场景。本文将对UART串行通信协议进行详细的介绍,包括其基本原理、工作方式、参数设
    的头像 发表于 05-27 16:09 1399次阅读

    IOT(联网)的七大通信协议之Http协议

    一、什么是http协议?嵌入式HTTP协议是一种轻量级的通信协议,专为嵌入式系统设计,用于实现设备与互联网之间的
    的头像 发表于 05-24 08:11 2127次阅读
    IOT(<b class='flag-5'>物</b><b class='flag-5'>联网</b>)的七大<b class='flag-5'>通信协议</b>之Http<b class='flag-5'>协议</b>

    RS485通信协议的特性和应用范围

    随着工业自动化和联网技术的飞速发展,数据通信协议的重要性日益凸显。RS485通信协议作为一种广泛应用于工业自动化领域的串行通信协议,其稳定
    的头像 发表于 05-23 16:27 1185次阅读

    mqtt协议tcp协议区别

    带宽和高延迟的网络环境,尤其在联网环境中表现优秀。而TCP协议是面向连接的、可靠的、基于字节流的传输层通信协议,主要用于互
    的头像 发表于 04-01 09:15 1360次阅读

    UART串口通信协议是什么?

    UART (Universal Asynchronous Receiver/Transmitter) 是一种通信接口协议,用于实现串口通信。它是一种简单的、可靠的、广泛应用的串口
    的头像 发表于 03-19 17:26 955次阅读

    TCP和UDP协议有什么区别?如何通过网关实现TCP协议通信

    TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议,能够保证数据从发送方到达接收方,是联网领域常见的
    的头像 发表于 01-24 11:07 456次阅读
    <b class='flag-5'>TCP</b>和UDP<b class='flag-5'>协议</b>有什么区别?如何通过网关<b class='flag-5'>实现</b><b class='flag-5'>TCP</b><b class='flag-5'>协议</b><b class='flag-5'>通信</b>?

    联网网关需要哪些关键功能?如何保护联网网关?

    通信实现设备之间的数据交换和互联互通。 联网网关需要具备一些关键功能,主要包括以下几个方面: 1. 协议转换功能:
    的头像 发表于 12-15 10:10 873次阅读

    关于EthernetIP转ModbusTCP协议转换的成熟应用

    将不同设备之间的通信协议进行转换,实现数据的传输和共享。 智能楼宇系统:智能楼宇系统涉及到多种不同品牌和类型的设备,包括空调、照明、安防等。通过使用Ethernet/IP转Modbus TC
    发表于 12-13 17:26

    TCP/IP 协议通信接口的实现

    电子发烧友网站提供《TCP/IP 协议通信接口的实现.pdf》资料免费下载
    发表于 10-26 09:21 1次下载
    <b class='flag-5'>TCP</b>/IP <b class='flag-5'>协议</b><b class='flag-5'>通信</b>接口的<b class='flag-5'>实现</b>

    TCP/IP协议和OPC协议的区别

    随着计算机网络技术的飞速发展,网络通信已经成为现代工业自动化控制系统不可或缺的一部分。在众多的网络通信协议,传输控制协议
    的头像 发表于 10-20 17:34 3966次阅读