You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从TCP/IP响应字符串中解析状态、X及Y值?

解析TCP/IP响应中的状态码、X/Y坐标值

你可以通过字符串拆分+类型转换的方式提取所需字段,以下是具体实现:

完整代码实现

import socket

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect(("192.168.2.25", 3000))
    s.sendall(b'GetLayoutPosition:3\r\n')
    data = s.recv(1024)

# 解析响应内容
response_str = data.decode().strip()
# 拆分命令头与数据段
_, data_segment = response_str.split(':')
# 拆分各个字段
fields = data_segment.split(';')

# 提取目标字段并转换类型
status = int(fields[0])
x_coord = float(fields[2])
y_coord = float(fields[3])

# 输出或保存结果
print(f"状态码: {status}")
print(f"X坐标: {x_coord}")
print(f"Y坐标: {y_coord}")

# 可选:存入字典统一管理
position_data = {
    'status': status,
    'x': x_coord,
    'y': y_coord
}

关键步骤说明

  1. 清理响应字符串:用strip()去除首尾的空白字符(比如换行符\r\n),避免拆分时出现无效字段。
  2. 拆分命令与数据:通过split(':')将响应拆分为命令名称和数据部分,取索引为1的元素得到完整数据段。
  3. 拆分单个字段:用split(';')将数据段拆分为独立字段列表,对应顺序为[Status, Index, X, Y, Theta]。
  4. 类型转换:将状态码转为整数,X/Y坐标转为浮点数,方便后续的逻辑判断和数值计算。

状态判断示例

你可以根据状态码添加逻辑处理:

if status == 1:
    print("操作成功,已获取布局位置")
elif status == -2:
    print("未找到位置:无作业加载或位置不在标记集中或布局已禁用")
elif status == -4:
    print("超出范围:不在布局位置数量的0到最大值区间内")
elif status == -6:
    print("格式无效:参数数量错误或格式不正确")
else:
    print(f"未知状态码:{status}")

内容的提问来源于stack exchange,提问作者DaniloPapi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 06:55:27