我正在做一个项目,我们希望从一个通用机器人那里获得一些数据,比如位置和力数据,然后将这些数据存储在一个文本文件中供以后参考。我们可以很好地接收数据,但将其转换为可读坐标是一个问题。下面是一个示例数据字符串:
\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作为机器人的输出,但是任何帮助都是非常感谢的
使用python从robot接收数据的最简单方法是使用Universal Robots Real-Time-Data-Exchange Interface。它们提供了一些接收和发送数据的python示例。 查看my GitHub repo,获取基于UR官方代码的示例代码: https://github.com/jonenfabian/Read_Data_From_Universal_Robots
相关问题 更多 >
编程相关推荐