PySerial:带有字母和引号的奇怪输出

2024-05-20 11:11:58 发布

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

因此,我尝试使用Python从我的Arduino板上的DS18B20温度传感器读取值。在我的python代码中,我使用Pyserial访问端口,下面是代码。你知道吗

import serial
def readTemp():
    temp = serial.Serial('COM3', 9600)
    line = temp.readline().strip()
    while line:
        print(line.strip())
        line = temp.readline().strip()
    temp.close()

def main():
    readTemp()

main()

在我的Arduino代码中,我对它进行了编码,以便输出数字。在下面是Arduino的输出:

21.3125
22.3750
22.3750
22.3750
22.3750

但是,当我运行Python代码时,输出中添加了一些字母和引号,但我不知道为什么以及如何删除它们。下面是Python的输出。你知道吗

b'22.3750'
b'22.0625'
b'22.0625'
b'22.0625'
b'22.0625'

其次,当人们在shell上运行python脚本时,通常会出现一个“>;>;”,表示正在运行的进程已经完成,然后shell就可以关闭了。但是,在输出python脚本之后,脚本似乎仍在运行,因为没有出现“>;”。我尝试使用ctrl+c来终止,但是无法,当我尝试关闭shell时,会出现一个弹出窗口,上面写着“你的程序还在运行,你想终止它吗?”。那么,在输出打印出来之后,有没有办法完成运行呢?你知道吗

我是Python新手,刚刚学会pyserial。非常感谢你的帮助。你知道吗


Tags: 代码gt脚本readlinemaindeflineserial
1条回答
网友
1楼 · 发布于 2024-05-20 11:11:58

关于第一个问题

别担心,这些值是以字节的形式读取的。b前面表示字节。你可以把它转换成字符串 使用解码('utf-8')。你知道吗

代码中需要更改

替换

print(line.strip())

bytesValue = line.strip()
numericValue = int(bytesVale.decode('utf-8'))
print(numericValue)

关于第二个问题, 您的进程尚未完成,因为它正在侦听设备。 条件

while line:

使过程保持活力。你知道吗

如果希望程序只读取一个值并退出,可以使用If而不是while。你知道吗

line = temp.readline().strip()
if line:
        bytesValue = line.strip()
        numericValue = int(bytesVale.decode('utf-8'))
        print(numericValue)
temp.close()

相关问题 更多 >