所以我在Python上编写了一个代码,用于通过RS232端口连接到我的计算机。现在我使用以下代码使用该部分:
import serial
while True:
ser = serial.Serial('COM2', 9600, timeout = 1)
print(ser.name)
ser.write(b'w')
line = ser.readline()
print(line)
ser.close()
每当我以字节为单位发送'w'时,它会发送回值。看起来像这样:
COM2
b' 0.000 kg \r\n'
首先打印com-port的名称,然后在下一行打印接收到的数据。然而。我想将值(数字)隔离为int。
我尝试使用:
line = ser.readline()[:-6]
int(line)
这摆脱了所有垃圾“kg \ r \ n”。并且只留下数字。但是,当然,Python不允许我将字节字符串更改为整数。这可能是一个愚蠢的初学者问题,就像我的其他两个帖子一样,但请耐心等待我,我现在只编写了大约2周。
答案 0 :(得分:0)
您猜测必须将读取的串行二进制文件返回的字节转换(即 decode )到字符串,您可以进一步解析。使用bytes.decode("ascii")
应该在这里(看不到奇怪的字符)。
然后,转换为 float ,而不是 int 。此外,如果您知道第一个字段是您的值,则使用str.split
对更改更加健壮:
>>> line = b' 0.000 kg \r\n'
>>> value = float(line.split()[0].decode("ascii"))
结果为0.0