CustomTCPServer 自定义TCP服务器
CustomTCPServer 算子属于线程类算子,用于在 RVS 的分线程中启动一个 TCP server 服务器。
该服务器可以接收自定义的字符串信息,并支持七种数据类型(工作方式),回复可预期的字符串。
tip:该算子运行逻辑与CommonTCPServer 通用TCP服务器 完全一致,区别是本算子支持自定义命令的功能。
七种数据类型分别是 empty、SET String、SET Pose、SET JointArray、GET String、GET Pose、GET JointArray。
算子面板
算子面板用于设定通讯过程中通讯命令指令和消息类型。
另:分隔符和命令分隔符等参数见算子参数。
指令/Command
:字符串类型,默认为空,必填!不可为空!不可为会被RVS翻译的关键字。当收到的TCP消息开头内容与指令相同时,该条目对应的算子端口将被触发数据类型/Data type
:枚举类型,默认为empty,可以为empty、SET String、SET Pose、SET JointArray、GET String、GET Pose、GET JointArray。这个参数决定了该算子工作方式,详见样例表备注/Remarks
:字符串类型,默认为””(空字符串),此处可添加对该行指令的说明,可使用中文。活动信息(只读)/Last message(only read)
:字符串类型,只读,可选可复制,用于查看最近一次触发该命令时的TCP收发消息,便于调试。删除/Delete
:按钮类型,点击后将删除这条指令。➕/➕
:按钮类型,点击后将增加一条TCP通讯接收指令。更新面板/Update Panel
:按钮类型,点击后刷新“活动信息”栏,便于调试。应用/Apply
:按钮类型,点击后将应用当前面板设定的消息指令方案,算子端口也会自动做出对应调整。
样例表
下列样例中:
命令分隔符(command_delimiter)使用“,”(逗号)
分隔符(delimiter)使用“#”井号
回复结束符(arc_eof)为空
数据类型 | 用途 | 客户端发送内容 | 客户端发送样例 | 服务器回复内容 | 服务器回复样例 |
---|---|---|---|---|---|
empty | 仅触发RVS的事件信号 | [custom_command][command_delimiter][delimiter] | CAPTURE,# | [custom_command][arc_eof] | CAPTURE |
SET String | 给RVS传入字符串 | [custom_command][command_delimiter][data][delimiter] | SetStr,Hello# | [custom_command][arc_eof] | SetStr |
SET Pose | 给RVS传入位姿 | [custom_command][command_delimiter][data][delimiter] | SetPose,1 2 3 0.1 0.2 -0.3# | [custom_command][arc_eof] | SetPose |
SET JointArray | 给RVS传入六轴关节值 | [custom_command][command_delimiter][data][delimiter] | SetJots,0.1 0.2 0.3 -0.4 -0.5 -0.6# | [custom_command][arc_eof] | SetJots |
GET String | 获取RVS中的字符串 | [custom_command][command_delimiter][delimiter] | GetStr,# | [data][arc_eof] | Hello |
GET Pose | 获取RVS中的位姿 | [custom_command][command_delimiter][delimiter] | GetPose,# | [data][arc_eof] | 1 2 3 0.1 0.2 -0.3 |
GET JointArray | 获取RVS中的六轴关节值 | [custom_command][command_delimiter][delimiter] | GetJots,# | [data][arc_eof] | 0.1 0.2 0.3 -0.4 -0.5 -0.6 |
样例算子图
算子参数
端口/port
:创建 TCP server 服务器所使用的本机服务端口。
<div
说明
实际运行时,如果提示 TCP 服务端创建失败,往往是所选取的端口已经被其他服务所占用,更换端口即可。如果在同一个 RVS 软件中,创建多个TCP 服务端算子,彼此的 port 也要互斥。
连接数量/connections
:可支持同时连接的客户端数量。服务器模式/server_mode
:运行模式。Once:表示完成一次 TCP 对话以后自动断开同客户端的连接 。(比如客户端首先同该算子建立了 TCP 连接,然后第一次发送了 test1 命令的字符串之后,继续发送 test2 命令的字符串,此时就会报错)。
Continous:表示客户端建立链接后可以无限次数的对话。
分隔符/delimiter
:消息结束符,包含RT 换行符、 “;”、“#”、“$”。当选择了其中某一种时,另外三种就会被视作普通字符随意使用 。服务端在接收客户端发送的消息时,会捕获第一个消息结束符之前的所有消息。
备注
由于不同的通信软件、电脑系统软件、机器人操作系统软件对回车换行的定义不一致,一般不建议选择RT作为消息结束符。
命令分隔符/command_delimiter
:命令结束符。当选择了其中某一种时,另外一种就会被视作普通字符随意使用。服务端在接收客户端发送的消息时,会将第一个命令结束符之前的所有消息视为命令字符,之后的消息视为内容信息。如果命令字符不是 SET_POSE1 、SET_POSE2 、GET_POSE1 、GET_POSE2 、SET_JOINT 、GET_JOINT 、CAPTURE 中的任意一个,则是无效命令,不做任何后续处理与响应。Space:空格。
,:逗号。
回复结束符/arc_eof
:回传值结束符。当输入该值时,在回传值结尾添加结束符。默认为空。
控制信号输入输出
输入:
start
:触发start信号端口运行算子,开始创建 TCP 服务端,创建成功后监听服务端口并等待客户端访问。
<div
说明
本算子仅需要初始化运行一次即可。
stop
:触发 stop 信号端口后,开始停止 TCP 服务端的监听。
reset
:该功能保留。
输出:
finished
:该功能保留。
failed
:算子运行失败后触发该端口。
started
:算子成功建立 TCP 服务端后触发该端口。
processing
:该功能保留。
stopped
:算子成功停止 TCP 服务端的监听后触发该端口。
reset
:该功能保留。