1 回答
TA贡献1851条经验 获得超4个赞
从文档:
该字符串必须包含每个字节的两个十六进制数字,ASCII 空格将被忽略。
所以会发生这种情况:
$ python3
Python 3.6.6 (default, Sep 12 2018, 18:26:19)
[GCC 8.0.1 20180414 (experimental) [trunk revision 259383]] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> bytearray.fromhex('B')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: non-hexadecimal number found in fromhex() arg at position 1
>>>
试试这个:
reply_sock.sendto(bytearray.fromhex('0B'),('10.0.0.32',15001))
如果这就是你的意思。
请注意,您except正在捕获所有异常,而不仅仅是您期望的异常,因此您没有看到导致的错误。考虑使用类似except OSError这里的东西。
另外,请考虑减少部分中的代码量try:
coords = struct.unpack('>dd',data)
#Stuff happens here
print(f'moved probe to {coords}')
bytes_to_send = bytearray.fromhex('0B')
try:
reply_sock.sendto(bytes_to_send,('10.0.0.32',15001))
except IOError as e1:
print(e1)
traceback.print_exc()
bytes_to_send = bytearray.fromhex('0D')
try:
reply_sock.sendto(bytes_to_send,('10.0.0.32',15001))
except IOError as e2:
print(e2)
traceback.print_exc()
break
这样您就可以只保护您想要的代码。
添加回答
举报