GIGE 协议摘录 —— GVSP 协议(三)

2024-06-13 04:52
文章标签 协议 摘录 gige gvsp

本文主要是介绍GIGE 协议摘录 —— GVSP 协议(三),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在这里插入图片描述

系列文章目录


GIGE 学习笔记
GIGE 协议摘录 —— 设备发现(一)
GIGE 协议摘录 —— GVCP 协议(二)
GIGE 协议摘录 —— GVSP 协议(三)
GIGE 协议摘录 —— 引导寄存器(四)
GIGE 协议摘录 —— 照相机的标准特征列表(五)
GIGE 协议 2.0 中文版


文章目录

  • 系列文章目录
  • GVSP 摘要
  • UDP 可靠性和错误恢复
  • 数据块
    • 数据块传输模式
    • 数据块数据包头
    • 标准传输模式数据包
      • 数据开始标记数据包
      • 全传输模式包
      • 块数据
  • 有效载荷类型
    • 1、扩展块模式(Extended Chunk Mode)
    • 2、图像有效载荷类型(Image Payload Type)
      • 图像数据开始标记包
      • 图像数据有效负载包
      • 图像数据结束标记包
      • 图像全输入数据包(Image All-in Packet)
    • 3、原始数据有效载荷类型(Raw Data Payload Type)
    • 4、文件有效载荷类型(File Payload Type)
    • 5、块数据有效载荷类型(Chunk Data Payload Type)
    • 6、扩展块数据有效载荷类型(已弃用)(Extended Chunk Data Payload Type (deprecated))
    • 7、JPEG有效载荷类型(JPEG Payload Type)
    • 8、JPEG 2000有效载荷类型(JPEG 2000 Payload Type)
    • 9、H.264有效载荷类型(H.264 Payload Type)
    • 10、多区域图像有效载荷类型(Multi-zone Image Payload Type)
    • 11、设备特定有效载荷类型(Device-specific Payload Type)
  • 像素布局(Pixel Layouts)
    • 1、像素对齐(Pixel Alignment)
    • 2、线和图像边界(Line and Image Boundaries)
    • 3、像素格式(Pixel Formats)
      • 3.1 Mono1p
      • 3.2 Mono2p
      • 3.3 Mono4p
      • 3.4 Mono8
      • 3.5 Mono8s
      • 3.6 Mono10
      • 3.7 Mono10Packed
      • 3.8 Mono12
      • 3.9 Mono12Packed
      • 3.10 Mono14
      • 3.11 Mono16
      • 3.12 BayerGR8
      • 3.13 BayerRG8
      • 3.69 RGB16_Planar
  • 像素格式定义(Pixel Format Defines)
    • 1、单个缓冲区格式定义(Mono buffer format defines)
    • 2、Bayer buffer format defines
    • 3、RGB打包的缓冲区格式定义(RGB Packed buffer format defines)
    • 4、YUV和YCbCr打包缓冲区格式定义(YUV and YCbCr Packed buffer format defines)
    • 5、RGB平面缓冲区格式定义(RGB Planar buffer format defines)


GVSP 摘要

    GVSP 是一种依赖于 UDP 传输层协议的应用层协议。它允许 GVSP 接收器从 GVSP 发射机接收图像数据、图像信息或其他信息。

    GVSP 数据包总是从 GVSP 发射器传输到接收器。

    该规范上的当前版本使用 UDP IPv4 作为传输层协议。由于 UDP 是不可靠的,GVSP 提供了机制来保证数据包传输的可靠性(通过 GVCP),并确保最小的流量控制。

UDP 可靠性和错误恢复

在这里插入图片描述

数据块

    该数据块被划分为多个元素,以向 GVSP 接收机提供解码该块所需的信息。

    对于图像,可以通过两种不同的方式提供来自同一帧的多个 ROIs :

  1. 在单个流信道上 —— 当它们在同一流信道上传输时,每个 ROI 必须以不同的块 ID 进行传输。在这种情况下,必须使用相同的时间戳来促进将 ROI 与给定的暴露口相匹配,如 [CR-253st] 所指定的那样。设备可以选择在同一流通道上发送所有 ROI ,以简化传输(只配置一个流通道)。

  2. 在不同的流通道上 —— 当它们在不同的流通道上传输时(每个流通道有一个 ROI),那么 ROI 应该使用相同的块 ID 值,以方便匹配。在这种情况下,时间戳仍然可以用于方便将 ROI 与给定的曝光相匹配。设备可能选择使用不同的流通道,允许不同的 ROI 发送到不同的目的地。

数据块传输模式

    数据块放入包中,允许在流通道上传输。支持两种传输模式:标准和全传输模式。

  • 标准传输模式
    在标准传输模式下,数据开始标记包、数据有效负载包和数据结束标记包以不同的数据包分开。这是自 GigE 愿景成立以来所支持的标准方法。开始标记包和结束标记包划定了数据的有效载荷,并在连续的数据块之间提供清晰的分离点。
    在标准传输模式下存在三种不同的数据包类型:
    1. 数据开始标记包
    2. 数据有效载荷包
    3. 数据结束标记包

    下图说明了在标准传输模式下的数据包的顺序。
在这里插入图片描述

  • 全传输模式
        可选地,如果数据开始标记、数据有效载荷和数据结束标记可以装入单个数据包,那么 GVSP 发射器可以配置为重新分组它们。这是一种全能的传输模式,可用于减少拥有单独的数据开始标记和数据结束标记包的开销。应用程序必须验证是否支持此传输模式(SCCx 的第 29 位)并启用它(SCCFGx 的第 29 位),否则将使用标准传输模式。

在这里插入图片描述

数据块数据包头

    所有的 GVSP 数据包共享相同的基本报头。GVSP 协议报头不包括长度字段: GVSP 接收器使用 UDP 长度信息来确定数据包的大小。

在这里插入图片描述

标准传输模式数据包

    为标准传输模式定义了以下数据包。

数据开始标记数据包

  • 数据开始标记包必须是块的第一个包。
  • 数据引线包必须以单独的包发送,packet_id/packet_id32设置为0。它必须适合一个最多576字节的包(包括IP、UDP和GVSP头)。
  • 数据开始标记包必须遵循图24-4的布局。

在这里插入图片描述

全传输模式包

在这里插入图片描述

块数据

    块是经过标记的数据块,可以在数据块中分组以发送元数据。数据块的例子是:

  • 图像
  • 从图像中提取数据
  • AOI / 像素格式
  • I/O 引脚的状态
  • 曝光数

有效载荷类型

    为了有效地传输信息,GVSP 定义了可以从 GVSP 发射机中流式传输的各种有效载荷类型。下表中列出了这些有效负载类型。

在这里插入图片描述

1、扩展块模式(Extended Chunk Mode)

2、图像有效载荷类型(Image Payload Type)

    此有效载荷类型用于传输未压缩的图像。

    如果支持图像有效负载,则使用图像有效负载类型的流必须以光栅扫描格式在每个数据有效负载数据包中放置数据。

这意味着图像在从左到右传输,然后从上到下传输之前,要在GVSP发射器存储器中重建。这是典型的单触头传感器。

图像数据开始标记包

在这里插入图片描述

图像数据有效负载包

在这里插入图片描述

图像数据结束标记包

在这里插入图片描述

图像全输入数据包(Image All-in Packet)

3、原始数据有效载荷类型(Raw Data Payload Type)

4、文件有效载荷类型(File Payload Type)

5、块数据有效载荷类型(Chunk Data Payload Type)

6、扩展块数据有效载荷类型(已弃用)(Extended Chunk Data Payload Type (deprecated))

7、JPEG有效载荷类型(JPEG Payload Type)

8、JPEG 2000有效载荷类型(JPEG 2000 Payload Type)

9、H.264有效载荷类型(H.264 Payload Type)

10、多区域图像有效载荷类型(Multi-zone Image Payload Type)

11、设备特定有效载荷类型(Device-specific Payload Type)

自定义

在这里插入图片描述

像素布局(Pixel Layouts)

    本节描述了 GigE Vision 所支持的各种像素和图像布局。在 GigE 视觉 2.0 版本中,这些布局是基于 AIA 像素格式命名约定的。

1、像素对齐(Pixel Alignment)

    为了最小化GVSP接收端的像素处理时间,在有效载荷数据包中使用多字节的像素数据在默认情况下必须是小端化的。

    GVSP 发射机可以实现一个转换器,将像素从小端转换为大端。当受支持时,可以使用 SCPSx 引导寄存器(pixel_endianess 字段)激活此转换器。SCCx 寄存器的 big_and_little_endian_supported 字段表示是否支持此转换器。

    在下面的图中,字节 0 首先在数据线上发送,然后是字节 1 ,以此类推。

2、线和图像边界(Line and Image Boundaries)

    GigE 视觉使用在像素格式命名约定中定义的图像填充。图像填充要求在直线的末尾不插入人工填充。

    因此,对于某些分组和打包的像素格式,来自不同行的像素可能被组合在相同的字节中。例如,想象一个奇宽的图像(例如:宽度= 641像素)。如果像素成对组合(由于填充),那么第一行的最后一个像素将与第二行的第一个像素组合,如下所示。

在这里插入图片描述

    另一个例子是当使用 Mono1p 时,图像宽度不是 8 像素的倍数。使用这种像素格式填充一个字节需要 8 个像素,因此一行的最后一个像素可能不会与字节边界对齐。

3、像素格式(Pixel Formats)

    本节说明了GVSP本地支持的各种像素格式。这些像素格式基于像素格式命名约定文档,其中每个像素格式由5个特征定义:

  1. 组件和位置(Components and Location)
  2. #位(# bits)
  3. 标志指示灯(可选)(Sign indicator)
  4. 包装方式(可选)(Packing Style)
  5. 特定于接口的(可选的)(Interface-specific)

3.1 Mono1p

3.2 Mono2p

3.3 Mono4p

3.4 Mono8

3.5 Mono8s

3.6 Mono10

3.7 Mono10Packed

3.8 Mono12

3.9 Mono12Packed

3.10 Mono14

3.11 Mono16

3.12 BayerGR8

3.13 BayerRG8

3.69 RGB16_Planar

像素格式定义(Pixel Format Defines)

    下面为 GVSP 支持的各种像素格式提供了 #define 定义。每个像素格式都用一个 32 位的值来表示。上面的 8 位表示该颜色。第二个上 8 位表示一个像素所占用的位数(包括任何填充)。这可用于快速计算使用此像素格式存储图像所需的内存量。

//===================================================
// PIXEL FORMATS
//===================================================
// Indicate if pixel is monochrome or RGB
#define GVSP_PIX_MONO 0x01000000
#define GVSP_PIX_RGB 0x02000000 // deprecated in version 1.1
#define GVSP_PIX_COLOR 0x02000000
#define GVSP_PIX_CUSTOM 0x80000000
#define GVSP_PIX_COLOR_MASK 0xFF000000
// Indicate effective number of bits occupied by the pixel (including padding).
// This can be used to compute amount of memory required to store an image.
#define GVSP_PIX_OCCUPY1BIT 0x00010000
#define GVSP_PIX_OCCUPY2BIT 0x00020000
#define GVSP_PIX_OCCUPY4BIT 0x00040000
#define GVSP_PIX_OCCUPY8BIT 0x00080000
#define GVSP_PIX_OCCUPY12BIT 0x000C0000
#define GVSP_PIX_OCCUPY16BIT 0x00100000
#define GVSP_PIX_OCCUPY24BIT 0x00180000
#define GVSP_PIX_OCCUPY32BIT 0x00200000
#define GVSP_PIX_OCCUPY36BIT 0x00240000
#define GVSP_PIX_OCCUPY48BIT 0x00300000
#define GVSP_PIX_EFFECTIVE_PIXEL_SIZE_MASK 0x00FF0000
#define GVSP_PIX_EFFECTIVE_PIXEL_SIZE_SHIFT 16
// Pixel ID: lower 16-bit of the pixel formats
#define GVSP_PIX_ID_MASK 0x0000FFFF
#define GVSP_PIX_COUNT 0x46 // next Pixel ID available

1、单个缓冲区格式定义(Mono buffer format defines)

#define GVSP_PIX_MONO1P (GVSP_PIX_MONO | GVSP_PIX_OCCUPY1BIT | 0x0037)
#define GVSP_PIX_MONO2P (GVSP_PIX_MONO | GVSP_PIX_OCCUPY2BIT | 0x0038)
#define GVSP_PIX_MONO4P (GVSP_PIX_MONO | GVSP_PIX_OCCUPY4BIT | 0x0039)
#define GVSP_PIX_MONO8 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x0001)
#define GVSP_PIX_MONO8S (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x0002)
#define GVSP_PIX_MONO10 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0003)
#define GVSP_PIX_MONO10_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0004)
#define GVSP_PIX_MONO12 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0005)
#define GVSP_PIX_MONO12_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0006)
#define GVSP_PIX_MONO14 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0025)
#define GVSP_PIX_MONO16 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0007)

2、Bayer buffer format defines

#define GVSP_PIX_BAYGR8 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x0008)
#define GVSP_PIX_BAYRG8 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x0009)
#define GVSP_PIX_BAYGB8 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x000A)
#define GVSP_PIX_BAYBG8 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY8BIT | 0x000B)
#define GVSP_PIX_BAYGR10 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x000C)
#define GVSP_PIX_BAYRG10 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x000D)
#define GVSP_PIX_BAYGB10 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x000E)
#define GVSP_PIX_BAYBG10 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x000F)
#define GVSP_PIX_BAYGR12 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0010)
#define GVSP_PIX_BAYRG12 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0011)
#define GVSP_PIX_BAYGB12 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0012)
#define GVSP_PIX_BAYBG12 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0013)
#define GVSP_PIX_BAYGR10_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0026)
#define GVSP_PIX_BAYRG10_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0027)
#define GVSP_PIX_BAYGB10_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0028)
#define GVSP_PIX_BAYBG10_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x0029)
#define GVSP_PIX_BAYGR12_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x002A)
#define GVSP_PIX_BAYRG12_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x002B)
#define GVSP_PIX_BAYGB12_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x002C)
#define GVSP_PIX_BAYBG12_PACKED (GVSP_PIX_MONO | GVSP_PIX_OCCUPY12BIT | 0x002D)
#define GVSP_PIX_BAYGR16 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x002E)
#define GVSP_PIX_BAYRG16 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x002F)
#define GVSP_PIX_BAYGB16 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0030)
#define GVSP_PIX_BAYBG16 (GVSP_PIX_MONO | GVSP_PIX_OCCUPY16BIT | 0x0031)

3、RGB打包的缓冲区格式定义(RGB Packed buffer format defines)

#define GVSP_PIX_RGB8 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x0014)
#define GVSP_PIX_BGR8 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x0015)
#define GVSP_PIX_RGBA8 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY32BIT | 0x0016)
#define GVSP_PIX_BGRA8 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY32BIT | 0x0017)
#define GVSP_PIX_RGB10 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x0018)
#define GVSP_PIX_BGR10 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x0019)
#define GVSP_PIX_RGB12 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x001A)
#define GVSP_PIX_BGR12 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x001B)
#define GVSP_PIX_RGB16 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x0033)
#define GVSP_PIX_RGB10V1_PACKED (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY32BIT | 0x001C)
#define GVSP_PIX_RGB10P32 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY32BIT | 0x001D)
#define GVSP_PIX_RGB12V1_PACKED (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY36BIT | 0X0034)
#define GVSP_PIX_RGB565P (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x0035)
#define GVSP_PIX_BGR565P (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0X0036)

4、YUV和YCbCr打包缓冲区格式定义(YUV and YCbCr Packed buffer format defines)

#define GVSP_PIX_YUV411_8_UYYVYY (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY12BIT | 0x001E)
#define GVSP_PIX_YUV422_8_UYVY (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x001F)
#define GVSP_PIX_YUV422_8 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x0032)
#define GVSP_PIX_YUV8_UYV (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x0020)
#define GVSP_PIX_YCBCR8_CBYCR (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x003A)
#define GVSP_PIX_YCBCR422_8 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x003B)
#define GVSP_PIX_YCBCR422_8_CBYCRY (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x0043)
#define GVSP_PIX_YCBCR411_8_CBYYCRYY (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY12BIT | 0x003C)
#define GVSP_PIX_YCBCR601_8_CBYCR (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x003D)
#define GVSP_PIX_YCBCR601_422_8 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x003E)
#define GVSP_PIX_YCBCR601_422_8_CBYCRY (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x0044)
#define GVSP_PIX_YCBCR601_411_8_CBYYCRYY (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY12BIT | 0x003F)
#define GVSP_PIX_YCBCR709_8_CBYCR (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x0040)
#define GVSP_PIX_YCBCR709_422_8 (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x0041)
#define GVSP_PIX_YCBCR709_422_8_CBYCRY (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY16BIT | 0x0045)
#define GVSP_PIX_YCBCR709_411_8_CBYYCRYY (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY12BIT | 0x0042)

5、RGB平面缓冲区格式定义(RGB Planar buffer format defines)

#define GVSP_PIX_RGB8_PLANAR (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY24BIT | 0x0021)
#define GVSP_PIX_RGB10_PLANAR (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x0022)
#define GVSP_PIX_RGB12_PLANAR (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x0023)
#define GVSP_PIX_RGB16_PLANAR (GVSP_PIX_COLOR | GVSP_PIX_OCCUPY48BIT | 0x0024)

   
 

这篇关于GIGE 协议摘录 —— GVSP 协议(三)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1056335

相关文章

读书摘录《控糖革命》

又到了每周推荐时间,这周末给大家推荐一本书《控糖革命》。身体是革命的本钱,只有保持健康的身体,才能保证持久的生产力,希望我的读者都可以身体健康,青春永驻。 推荐前,首先申明在《控糖革命》一书中,作者提出了一些颇具争议的观点,这些观点并没有经过系统的科学论证,但这并不妨碍我们从中获取一些有益的控糖建议。作者通过分享作者的个人经验和研究,为我们提供了一种全新的饮食理念,帮助我们更好地控制血糖峰值

【Linux】应用层http协议

一、HTTP协议 1.1 简要介绍一下HTTP        我们在网络的应用层中可以自己定义协议,但是,已经有大佬定义了一些现成的,非常好用的应用层协议,供我们直接使用,HTTP(超文本传输协议)就是其中之一。        在互联网世界中,HTTP(超文本传输协议)是一个至关重要的协议,他定义了客户端(如浏览器)与服务器之间如何进行通信,以交换或者传输超文本(比如HTML文档)。

【Go】go连接clickhouse使用TCP协议

离开你是傻是对是错 是看破是软弱 这结果是爱是恨或者是什么 如果是种解脱 怎么会还有眷恋在我心窝 那么爱你为什么                      🎵 黄品源/莫文蔚《那么爱你为什么》 package mainimport ("context""fmt""log""time""github.com/ClickHouse/clickhouse-go/v2")func main(

2024.9.8 TCP/IP协议学习笔记

1.所谓的层就是数据交换的深度,电脑点对点就是单层,物理层,加上集线器还是物理层,加上交换机就变成链路层了,有地址表,路由器就到了第三层网络层,每个端口都有一个mac地址 2.A 给 C 发数据包,怎么知道是否要通过路由器转发呢?答案:子网 3.将源 IP 与目的 IP 分别同这个子网掩码进行与运算****,相等则是在一个子网,不相等就是在不同子网 4.A 如何知道,哪个设备是路由器?答案:在 A

Modbus-RTU协议

一、协议概述 Modbus-RTU(Remote Terminal Unit)是一种基于主从架构的通信协议,采用二进制数据表示,消息中的每个8位字节含有两个4位十六进制字符。它主要通过RS-485、RS-232、RS-422等物理接口实现数据的传输,传输距离远、抗干扰能力强、通信效率高。 二、报文结构 一个标准的Modbus-RTU报文通常包含以下部分: 地址域:单个字节,表示从站设备

网络原理之TCP协议(万字详解!!!)

目录 前言 TCP协议段格式 TCP协议相关特性 1.确认应答 2.超时重传 3.连接管理(三次握手、四次挥手) 三次握手(建立TCP连接) 四次挥手(断开连接)  4.滑动窗口 5.流量控制 6.拥塞控制 7.延迟应答 8.捎带应答  9.基于字节流 10.异常情况的处理 小结  前言 在前面,我们已经讲解了有关UDP协议的相关知识,但是在传输层,还有

DNS协议基础笔记

1.定义 DNS(Domain Name System,域名系统)是互联网的一项核心服务,它作为将域名和 IP 地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。 2.域名解析过程 当用户在浏览器中输入一个域名,浏览器首先会检查自己的缓存中是否有该域名对应的 IP 地址。本地 DNS 服务器收到查询请求后,首先会检查自己的缓存中是否有该域名对应的 IP 地址。根域名服务器收到查询请

4G模块、WIFI模块、NBIOT模块通过AT指令连接华为云物联网服务器(MQTT协议)

MQTT协议概述 MQTT(Message Queuing Telemetry Transport)是一种轻量级的消息传输协议,它被设计用来提供一对多的消息分发和应用之间的通讯,尤其适用于远程位置的设备和高延迟或低带宽的网络。MQTT协议基于客户端-服务器架构,客户端可以订阅任意数量的主题,并可以发布消息到这些主题。服务器(通常称为MQTT Broker)则负责接受来自客户端的连接请求,并转发消

20151214 要点摘录2

算法: 四火的数据库算法10题 http://www.raychase.net/2810 leetCode解题报告 http://bookshadow.com/leetcode/ 学习算法之路(转) http://blog.csdn.net/sunboy_2050/article/details/5656823 10分钟没有思路的就找例子 http://blog.csdn

20151214 要点摘录1

eclipse用法 --- 涉及到的eclipse的使用 在接口名上按F4 可以看继承关系    按ctrl+T可以找实现类 ctrl+shift+r查找文件 MyBatis的设计主要是把对数据库的增删改查的sql语句和JavaWeb工程的POJO做绑定 1 配置sql语句的映射文件 2 在conf.xml中配置数据库连接并关联sql语句的映射文件 3 在dao中编写代码,加载con