从通用机器人接收数据并解码

2024-10-02 14:29:17 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一个项目,我们希望从一个通用机器人那里获得一些数据,比如位置和力数据,然后将这些数据存储在一个文本文件中供以后参考。我们可以很好地接收数据,但将其转换为可读坐标是一个问题。下面是一个示例数据字符串:

\X0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\X0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\\\\\\\\\0?\x00\x00\x16C\x00\x00\xc0?\x00\x00\x16C\x00\x00\x00\x00?\xcd\xcc\xcc>\x00\x00\x96C\x00\x00\X800\x1e\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x88\xfb\x7f?\xd0M><\xc0G\x9e:tNT?\r\x11\x07\xbc\xb9\xfd\x7f?~\xa0\xa1:\x03\x02+?\x16\xeb\x7f\xcf\xcc\xbc9\xdfl\xbbq\xc3\x8a>;i\x19T<\xf3\xf9\x7f\xbf\xb4k\x87\xbb->\xc2>\\x00\0 0 0\0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\\\\x00\X0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\\\\\\\\\\0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\xa7\xdcU@\xa7\xdcU@\xa7\xdcU@\xa7\xdcU@\xa7\xdcU@\xa7\xdcU@\xfe\xff\xff\xff\xff\xff\xff\xff\xfe\xff\xff\xff\xfe\xff\xff\xff\xfe\xff\xff\xff\xff\xff\xff\xff\xff\xecb\xc7@\xecb\xc7@\xecb\xc7@\

*未收到整个字符串

起初我认为它是十六进制的,所以我尝试了以下代码:

packet_12 = packet_12.encode('hex')
x = str(packet_12)
x = struct.unpack('!d', packet_12.decode('hex'))[0]
all_data.write("X=", x * 1000)

但是没有用。我用编解码器和.encode尝试了几种不同的解码方法,但都不起作用。我在另一篇文章中发现了以下两个代码块:

y = codecs.decode(packet_12, 'utf-8', errors='ignore')


packet_12 = s.recv(8)
z = str(packet_12)
x = ''.join('%02x' % ord(c) for c in packet_12)

两个都不适合我的申请。最后,我尝试将整个sting保存在一个.txt文件中,并用python打开它,然后用下面的代码对其进行解码,但仍然没有发生任何事情

with io.open('C:\\Users\\myuser\\Desktop\\decode.txt', 'r', encoding='utf8') as f:
    text = f.read()

with io.open('C:\\Users\\myuser\\Desktop\\decode', 'w', encoding='utf8') as f:
    f.write(text)

我知道我可能遗漏了一些非常简单的东西,比如使用错误的解码类型,或者我甚至可能将jibberish作为机器人的输出,但是任何帮助都是非常感谢的


Tags: 数据代码gtpacketdecodex00x7fxff