pyserial用None接收错误的数据

时间:2017-11-22 08:27:14

标签: python-3.x pyserial

当我将字节写入串口时,我得到了我想要的数据,但是没有出现我的序列没有这个。我怎样才能删除"无&# 34 ;? 谢谢!

#encoding = utf-8
import serial

def getValues():
    ser = serial.Serial('COM3', baudrate=9600, timeout=1)
    str = 'ZREADMACS'
    ser.write(bytes(str, encoding='utf8'))
    data = ser.readline()
    print(data)

while 1:
    # data = ser.readline()
    # if data:
    #     print(str(data)[2:63])
    # else:
    #     print(getValues())
    userInput = input('Are you kidding me?')
    if userInput == "1":
        print(getValues())

这样的输出,但我不想要"无"。

Are you kidding me?1
b'client:TESTR~~address:R0003~~radiation:01000~~voltage:21000~~current:21000~~temprature:01000~~Li_power:02000~~time_delay:00010~~acs_712_zero:00000~~'
None
Are you kidding me?1
b'client:TESTR~~address:R0003~~radiation:01000~~voltage:21000~~current:21000~~temprature:01000~~Li_power:02000~~time_delay:00010~~acs_712_zero:00000~~'
None

1 个答案:

答案 0 :(得分:0)

在您的代码中,您拨打print两次。

首次使用data进行调用时,data已分配给readline结果。

第二次,您可以直接在getValues()结果上调用它。

这里的问题是getValues()没有返回任何内容,因此python将其翻译为None,然后打印出来。

如果删除最后一个print,那就很好。

您还可以将return data添加到getValues()功能。