Python - 函数未被执行

时间:2016-03-11 12:44:06

标签: python function serial-port

我有这个程序定义一个函数,然后调用它,但无论我做什么,程序都不会执行函数的调用。我错过了什么吗?我已经检查了其他问题,但我找不到与我面临的任何相似的东西。

baudrate = 115200
port = '/dev/ttyUSB2' 
def serial_data(ser):
    print ser.name # it doesn't print here at all! 
    sys.stdout.flush()
    while True:
        yield ser.readline()
    ser.close()

    for line in serial_data('/dev/ttyUSB2', 115200):
        print "data : " 
        print line
    data = []
ser = serial.Serial(port, baudrate)
serial_data(ser)

此程序的输出是

#nothing, it just hangs.

如果我删除了无限循环,程序会立即终止。

1 个答案:

答案 0 :(得分:1)

来自:https://pythonhosted.org/pyserial/shortintro.html#readline(我相信这是你正在使用的lib)

  

使用readline()时要小心。在打开串口时指定超时,否则如果没有收到换行符,它可能永远阻塞。

由于无限循环的屈服,ser.close()函数中的serial_data(包括)之后也不会执行任何操作。

修改 试试这个:

baudrate = 115200
port = '/dev/ttyUSB2' 
ser = serial.Serial(port, baudrate, timeout=5)
print(ser.name)
print(ser.readline())
ser.close()