READLINE
- 阻塞型,除非设置了timeout
READ_UNTIL
- 非阻塞型,最好设置timeout
# test serial timeout, readline and read_until
import time
import serial
import serial.tools.list_ports
def get_time_stamp():
ct = time.time()
local_time = time.localtime(ct)
data_head = time.strftime("%Y-%m-%d %H:%M:%S", local_time)
data_secs = (ct - int(ct)) * 1000
time_stamp = "%s.%03d" % (data_head, data_secs)
return time_stamp
port_list = list(serial.tools.list_ports.comports())
#print(port_list)
if len(port_list) == 0:
print('无可用串口')
else:
for i in range(0,len(port_list)):
#help(port_list[i])
#print(port_list[i].__dict__)
#print(port_list[i])
port_name = port_list[i].device
tout = 0.1
#print(port_name)
#print(type(port_name))
###############################test readline function##########################################
try:
serial_timeout = serial.Serial(port_name,115200,timeout=tout)
except Exception as e:
print('rasie exception:',e)
try:
serial_timeout.open()
except:
print(port_name,' has opened! ')
print('start test readline.........',get_time_stamp())
#write serial
try:
serial_timeout.write(b'II\n')
except Exception as e:
print(e)
#read serial
try:
serial_timeout.readline()
except Exception as e:
print(e)
#serial_timeout.close()
print('stop test readline.........',get_time_stamp())
###############################test readline function##########################################
#serial_timeout = serial.Serial(port_name,115200,timeout=tout)
try:
serial_timeout = serial.Serial(port_name,115200,timeout=tout)
except Exception as e:
print('rasie exception:',e)
try:
serial_timeout.open()
except:
print(port_name,' has opened! ')
print('start test read_until.........',get_time_stamp())
#write serial
try:
serial_timeout.write(b'II\n')
except Exception as e:
print(e)
#read serial
try:
serial_timeout.read_until(b'\n\n')
except Exception as e:
print(e)
serial_timeout.close()
print('stop test read_until.........',get_time_stamp())
输出结果:
timeout = 0.1
timeout = 10