最近自学了pyqt5,对于python基础都不熟悉的我来说,有点还没学会走,就先学跑了。
做出来的程序用于进行路由器升级固件使用,程序可正常运行一段时间,重复进行路由器升级操作,成功几遍后便会出现闪退的情况,没有返回有用的报错信息,只有Process finished with exit code -1073741819(0xC0000005),根据百度的方法去尝试了升级、降级python版本,pyqt5的版本,pycharm去兼容等,都没有解决问题。
发现总是出现在升级固件的过程中出现闪退,最后定位到是我将串口信息实时打印到界面的时候造成的,将这条代码注释之后,程序正常升级固件50次,未出现闪退的现象。
不知道到底是什么原因造成的
def recv_form_serial(self):
while True:
count = self.__ser.inWaiting() # 获取串口缓冲区数据
if count != 0:
self.__recv = self.__ser.read(self.__ser.in_waiting).decode("gbk", "ignore")
self.textEdit.insertPlainText(self.__recv) # 将后台信息打印到界面
self.textEdit.ensureCursorVisible() # 保证光标可见 ,用于串口数据打印后下拉
time.sleep(0.15)
if self.__messy == False:
break
elif self.__messy:
continue
self.textEdit.insertPlainText(self.__recv) 尝试多次,只要将这条代码注释,就不会闪退。具体原因还未找到。