import serial
if name == '__main__':
serial = serial.Serial('COM3',115200)
if serial.isOpen():
print('串口打开成功!\n')
f = open('./test.txt','a')
print(1)
#pass
else :
print('串口打开失败!\n')
try:
getBytes=b''
while True:
count = serial.inWaiting()
if count > 0:
data = serial.read(count)
print('数据读取成功')
if data != getBytes:
print(data)
f.write(data.decode('utf-8'))
f.write('\n')
getBytes=data
except KeyboardInterrupt:
if serial != None:
f.close()
serial.close()
加个延时试下
serial.iswaiting启动接收,并返回接收数据的长度,然后用read(n)将这指定的数据读出来。但现实中的问题是两者的中间需要加延时(根据波特率计算发送内容所需的时间,这样就不会出现延时过短读出的不全;延时时间长了就会出现前后帧发出的内容重合到一起),此外如果需要判断什么时候串口不活动,可以再serial.iswaiting一直延时(超过几个字符的传送时间,软件延时计数器累加),而在循环体外将计数器清零,在累计的几个字符时间接受的数据长度还为0则认为通讯结束。