Skip to main content
 首页 » 编程设计

python之将字符串发送到 serial.to_bytes 不起作用

2025年05月04日23xxx_UU

我正在尝试发送一个包含命令的字符串变量。

像这样:

value="[0x31, 0x0a, 0x32, 0x0a, 0x33, 0x0a]" 
self.s.write(serial.to_bytes(value)) 

上面那个失败了。不会报错。

但是当我发送这样的值时它起作用了:

self.s.write(serial.to_bytes([0x31, 0x0a, 0x32, 0x0a, 0x33, 0x0a])) 

我也试过像这样发送字符串:

self.s.write(serial.to_bytes(str(value))) 

还是不行。有人可以告诉我如何通过存储在字符串中来发送值吗?

我想做这件事:

value="[0x"+anotherstring+",0x"+string2+"0x33, 0x0a]" 

并发送值。

谢谢!

请您参考如下方法:

serial.to_bytes将序列作为输入。您应该删除 value 周围的双引号以传递整数序列而不是 str 表示您要传递的序列:

value = [0x31, 0x0a, 0x32, 0x0a, 0x33, 0x0a] 
self.s.write(serial.to_bytes(value))  # works now 

在第一种情况下,您发送了一个表示 [0x31, 0x0a, 0x32, 0x0a, 0x33, 0x0a]” 的字节序列。现在,您将按预期发送序列 [0x31, 0x0a, 0x32, 0x0a, 0x33, 0x0a]。


如果要发送字符串,只需将其作为bytes发送即可:

# Python 2 
self.s.write('this is my string') 
text = 'a string' 
self.s.write(text) 
 
# Python 3 
self.s.write(b'this is my string') 
text = 'a string' 
self.s.write(text.encode()) 

对于一个序列:

for value in values: 
    # Python 2 
    self.s.write(value) 
 
    # Python 3 
    self.s.write(value.encode())