ExpOS技术社区

 找回密码
 立即注册

快捷登录

QQ登录

只需一步,快速开始

查看: 1798|回复: 0

为什么程序运行几分钟后卡死甚至系统重启?

[复制链接]

71

主题

104

帖子

793

积分

版主

Rank: 7Rank: 7Rank: 7

积分
793
发表于 2020-9-9 11:08:14 | 显示全部楼层 |阅读模式
本帖最后由 hixon 于 2020-9-9 11:14 编辑

最近有用户反馈,界面上有一个波形控件,通过串口发送数据来更新波形,波形控件勾选的自动刷新,发现波形的刷新会越来越慢,运行几分钟后到系统重启了。下面整理了一下整个的排查过程,希望对新用户碰到类似问题时有所帮助。
1、波形控件有“自动刷新”的属性,先把自动刷新属性勾选去掉,结果还是有问题。(初步排除是波形控件的问题)
2、接着排查串口代码,发现下面的几行代码有问题
  1. device.com0.onReceive = function(count) {
  2.     var payload = device.com0.read();
  3.     var str = util.arrayToHexString(payload) + '\n'; // 数据转换成16进制显示
  4.     ui.main.multiLineInput_read.text += str.toUpperCase();
复制代码

在主界面中有一个多行文本输入框用来显示每次串口接收到的数据,但是这行代码会导致文本框的内容越来越大,最后把内存消耗完,系统重
ui.main.multiLineInput_read.text += str.toUpperCase();

那么如何来限制一下,不让文本框的内容无限增长呢?可以判断一下长度,比如超过128就让它的文字清空:
  1. if (ui.main.multiLineInput_read.text.length > 128) {
  2.     ui.main.multiLineInput_read.text = '';
  3. }
  4. ui.main.multiLineInput_read.text += str.toUpperCase();
复制代码








回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|物一世(北京)科技有限公司 ( 京ICP备20025895 )

GMT+8, 2022-5-25 11:02 , Processed in 0.072374 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表