-1

我通过串行(pySerial)从 arduino 获取数据。然后通过分隔符(:) 将其拆分为 3 个值。我正在使用 slice ([0:5]) 删除 2 个额外的字符(我认为它是新行)。

到目前为止,一切都很好。但是然后 rjust 或 zfill 甚至 format() 根本无法正常工作。例如,如果我使用 zfill(5) 并且 arduino 输出的值是 8.00,则没有变化,我得到 3 个字符。如果我使用 zfill(7) 那么它可以工作,我总共得到 7 个字符。

到底是怎么回事?

Arduino 每约 1 秒输出一次:22.00:36.00:58.00

import time
import serial

connected = False

port = '/dev/ttyACM0'
baud = 9600

ser = serial.Serial(port, baud)

# loop until arduino is ready
while not connected:
    serin = ser.read()
    connected = True

# read aruino output
while ser.readline():
    readings = ser.readline().split(':', 2)

    lum = readings[2][0:5].rjust(5, '0')
    #lum = readings[2][0:5].zfill(5) same result as with rjust

    print(lum)
    time.sleep(1)

我正在使用 Arduino Uno 连接到运行 Rasberian OS 的 Raspberry Pi,并将 IDLE 作为 python 编辑器。

4

1 回答 1

2

readline()包含换行符。剥离换行符。

readings = ser.readline().rstrip().split(':', 2)

>>> '0.00\n'.rjust(5, '0')
'0.00\n'
>>> '0.00\n'.rstrip().rjust(5, '0')
'00.00'
于 2013-06-22T16:57:43.323 回答