使用 TCP API
1 概述
TCP(Transmission Control Protocol,传输控制协议)是一种常用的网络传输协议,主要用于保证网络通信的可靠性和顺序性。TCP API 指令则是在基于 TCP 连接的通信中,客户端和服务器之间互相发送的用于控制、操作、查询等目的的数据指令(消息、命令)。本文主要指禾赛激光雷达和电脑主机间的通信。
2 使用方法
TCP API 指令的使用方法如下:
- 将激光雷达连接至电脑主机,确保其能够与主机正常建立通信(具体方法详见如何配置以太网);
- 从主机本地向激光雷达发送 TCP API 指令,并接收来自激光雷达的返回值,根据 TCP API 使用手册中的说明进行返回值解析,确认 API 指令发送操作是否成功。
本文将分别介绍三种不同的 TCP API 指令发送方法以及相应实例,可根据实际情况选择其中一种或多种进行使用。
注:以下实例基于 OT128 中改变工作模式 (0x1C) 这一 TCP API 指令实现,实际各个型号激光雷达的 TCP API 指令可能有所不同,具体内容请参考对应型号的 TCP API 使用手册。
3 实例介绍
3.1 使用 LidarUtilities 发送 TCP API 指令
访问禾赛官网 下载并安装 LidarUtilities,打开软件后切换到"Send PTC Command"界面,在"Send Command"中输入对应的指令码和 Payload,返回值如下图所示:

其中47 74
是识别标志位,后面1C
代表刚刚发送的指令,第四位的00
是返回码,代表返回结果 No error,第五至第八位的00
代表无 payload 信息。
注:目前 LidarUtilities 只适配部分禾赛激光雷达型号(OT128, AT128P等)。
3.2 使用 Python 脚本发送 TCP API 指令
如果当前的激光雷达型号不支持 LidarUtilities,也可以使用 Hesai 官方提供的Python 脚本,并根据实际情况配置以下内容:
在配置完成后运行该脚本,会将指定的 TCP API 指令发送给激光雷达,并获得对应的返回值信息。运行结果如下所示:
payload :
01
response:
b'Gt\x1c\x00\x00\x00\x00\x00'
command is: 1c, get return code: 00, return length: 0,
return string:
{'response_command': '1c', 'response_return_code': '00', 'response_payload_length':0,'response_payload': b''}
其中,‘return code’为00
代表该指令的返回结果 No error。
此外,也可以通过在 Wireshark 中对激光雷达发出的 TCP 报文内容进行解析获取结果。如下图中所示,该报文返回的数据字段中47 74
是识别标志位,1C
代表刚刚发送的指令,第四位的00
是返回码,代表返回结果 No error,第五至第八位的00
代表无 payload 信息。

3.3 使用外部工具(Packet Sender)发送 TCP API 指令
下载并安装Packet Sender,这是一款免费、开源的工具,其使用方法与 LidarUtilities 类似。
如下图所示,在 HEX 框中输入原始发送指令,并配置对应的激光雷达 IP 地址和 TCP 端口号,选择‘TCP’模式,然后点击 Send,就可以在下面的 Log 窗口中查看已发送的指令和接收到的返回值信息(需要根据 TCP API 使用手册中的说明进行返回值解析)。
