hixon 发表于 2020-9-9 11:08:14

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

本帖最后由 hixon 于 2020-9-9 11:14 编辑

最近有用户反馈,界面上有一个波形控件,通过串口发送数据来更新波形,波形控件勾选的自动刷新,发现波形的刷新会越来越慢,运行几分钟后到系统重启了。下面整理了一下整个的排查过程,希望对新用户碰到类似问题时有所帮助。
1、波形控件有“自动刷新”的属性,先把自动刷新属性勾选去掉,结果还是有问题。(初步排除是波形控件的问题)
2、接着排查串口代码,发现下面的几行代码有问题device.com0.onReceive = function(count) {
    var payload = device.com0.read();
    var str = util.arrayToHexString(payload) + '\n'; // 数据转换成16进制显示
    ui.main.multiLineInput_read.text += str.toUpperCase();
在主界面中有一个多行文本输入框用来显示每次串口接收到的数据,但是这行代码会导致文本框的内容越来越大,最后把内存消耗完,系统重启ui.main.multiLineInput_read.text += str.toUpperCase();
那么如何来限制一下,不让文本框的内容无限增长呢?可以判断一下长度,比如超过128就让它的文字清空:if (ui.main.multiLineInput_read.text.length > 128) {
    ui.main.multiLineInput_read.text = '';
}
ui.main.multiLineInput_read.text += str.toUpperCase();







页: [1]
查看完整版本: 为什么程序运行几分钟后卡死甚至系统重启?