记关于python的串口阻塞问题

记关于python的串口阻塞问题


文章目录

  • 记关于python的串口阻塞问题
  • 前言
  • 一、关于Serial.read()
  • 二、实际代码区别
    • 1.没有timeout的创建
    • 2.timeout的创建
  • 写在结尾


前言

前段时间在集成测试工具时,有一个问题忘记记录,今天有时间记录一下


提示:以下是本篇文章正文内容,下面案例可供参考

一、关于Serial.read()

集成的开发工具在调试的发现偶现程序暂停问题,像是在哪里阻塞了,但是一直没想到关于read()函数(其实之前自己做了笔记),最后在大佬的指导下找到了原因

二、实际代码区别

1.没有timeout的创建

代码如下(示例):

ser = serial.Serial(sernum, bps)	#创建串口实例对象,这样创建的对象没有超时
while Trueif ser.inWaiting() > 0:
		r_text = ""
		r_text = (ser.read(ser.inWaiting()))	#这里如果没有接收到数据就会阻塞在这里
	    data += (r_text.decode("utf-8", "ignore")).strip()  
	    print(data)

2.timeout的创建

代码如下(示例):

ser = serial.Serial(sernum, bps,timeout=2)	#创建串口实例对象,这样创建的对象有超时
while Trueif ser.inWaiting() > 0:
		r_text = ""
		r_text = (ser.read(ser.inWaiting()))	#这里如果没有接收到数据超过2s就会往下执行
	    data += (r_text.decode("utf-8", "ignore")).strip()  
	    print(data)

希望后面大家使用Serial串口时不要忘了timeout这个参数,否则很容易出现像我一样的问题


写在结尾

我是一名车载集成测试开发工程师,希望能和志同道合的朋友一起相互学习进步

你可能感兴趣的:(python)