我有这个程序定义一个函数,然后调用它,但无论我做什么,程序都不会执行函数的调用。我错过了什么吗?我已经检查了其他问题,但我找不到与我面临的任何相似的东西。
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.
如果我删除了无限循环,程序会立即终止。
答案 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()