老程序卡住了怎么办?

时间:2025-05-02  作者:Diven  阅读:0

昨天某学员联系我,给我拍了这么一个图,问怎么解决。

老程序卡住了怎么办?

f47c2bea-36ac-11ee-9e74-dac502259ad0.jpg

我一看,这不简单嘛,就是串口缓存不够溢出了。

解决方法就是:读快点,缓存搞大点,把延时去掉或者改小不就OK了么?

给了答案后,过了半天回复,仍旧没有解决,现象是程序就只执行了一次,卡住了,不执行。

晚上10点又在问我,这工作劲。我想那就远程看程序了。

远程一打开,顿时感觉程序是“意大利面”,看起来心烦意乱。不过为了解决BUG,我决定静下心来分析。

学员说这个一个国外合作的很久前的LabVIEW的采集程序,硬件啥都有,只是程序在,跑程序的老电脑不在了。换了台新电脑,驱动啥的都装好了。就几个串口,还有DAQ采集的。然后领导要恢复起来,能运行。

看的很头大,程序总共就一个while里面,while里面有FOR循环,FOR循环里面还有定时循环。

这1个while循环里面,有5个仪器的读写程序,还有2个DAQ采集卡。都在一个while里面。感觉写程序的,哪里有空位,就写到哪里。反正已给字:乱。

我心里第一想的,这么乱的程序,不如自己重写。

但是,重写工作量大,先解决问题为主吧。人家只要能用就行。

尝试运行一次,果然卡住,由于程序就一个while,高亮执行很久,单步也一样。只能导出打探针看看执行情况。

终于发现了原因,有个仪器有个设置程序,设置之后,会读取仪器是否有设置成功的指令返回。结果这个程序,用了一个while循环,不停的读取串口缓冲,判断是否有某个字符串,收到这个字符串,才退出while。

而实际这个仪器设置有问题,没有回复正确字符串,while循环退不出,把这个程序卡住了。而且这个while,作为子vi的子vi的子vi的程序,嵌套很深。后来把仪器设置对了,问题解决。

原版程序不方便截图,大概如下图所示,大家自己内心体会一下。

f4a1e6be-36ac-11ee-9e74-dac502259ad0.png

全程远程1小时5分钟。

所以这里不得不说,有些人写代码确实能跑,但是稍微不注意,就跑不起来。包括这个等待仪器回复的这个while,按常理,不应该用一个while判断,即使判断,也要设置一个超时,等待一定时间后后,自动退出while,弹出错误提示。

所以,很多人问的一个简单问题,背后可能是其更大的问题。

希望我们都不要遇到和接手“祖传”代码。


审核编辑:刘清

猜您喜欢

eMMC(嵌入式多媒体卡)是应用于智能手机、平板电脑及其便携设备的存储解决方案。了解eMMC的参数对于选择合适的存储设备非常重要。eMMC的容量通常从4GB到5...
2017-04-23 00:00:00

贴片电阻上的104并非直接代表阻值,而是一种数字编码表示法。其中,10代表有效数字,而4代表10的幂次方。因此,104代表的阻值是10 * 10^4 欧姆,也就...
2024-11-29 10:25:48

电路理论中,电阻是一个非常重要的概念。电阻的大小直接影响电流的流动和电路的性能。根据电阻的特性,可以将其分为不同类型,其中特别的电阻被称为“定值电阻”或“线性电...
2025-04-18 11:01:43

安全警示灯是保障道路安全和提高能见度的重要设备,其参数直接影响使用效果。亮度是关键参数,单位为流明(lm),亮度越高,夜间可视距离越远。光源类型常见的有LED和...
2009-07-18 00:00:00

电容器在电路中作用大,好的电容器能保证电路稳定。反之,坏的电容器会引起故障。那电容好坏怎么测量呢?下面我们就来看看几种测量方法。视觉检查最简单的检查方法是观察。...
2025-03-27 04:30:35

LED 灯因其节能、寿命长等优点,已经逐渐取代传统照明方式,走进了千家万户。然而,很多人不知道的是,LED 灯需要特殊的电源供应才能正常工作,这就是 LED 灯...
2024-08-14 00:00:00

电源模块/电源供应器是现代电子设备中不可少的重要组件。主要功能是将输入的电源转换为设备所需的稳定电压和电流,以确保设备的正常运行。无论是在家用电器、计算机、通讯...
2014-04-13 00:00:00

同步整流技术,作为一种高效的电源转换方式,正越来越地应用于各种电子设备中,从笔记本电脑到智能手机,从服务器到电动汽车,都能看到的身影。通过使用MOSFET等低导...
2024-07-28 00:00:00

单光子雪崩二极管传感器(Single-Photon Avalanche Diode,简称SPAD)是高灵敏度的光电探测器,能够在极低光强的条件下探测到单个光子。...
2025-04-04 21:01:40