老程序卡住了怎么办?

时间:2025-07-25  作者: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,弹出错误提示。

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

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


审核编辑:刘清

猜您喜欢

步进电机驱动芯片在现代自动化控制系统中是非常重要的配件。主要用于控制步进电机的运行,实现精确的定位和速度控制。这种芯片通过将数字信号转换为电流信号,驱动电机按照...
2022-05-30 00:00:00

现代建筑中的安全设计中,应急照明系统是一个很重要的组成部分,在紧急情况下为人员疏散和安全提供了基本保障。根据电源配置的不同,市场上的应急照明产品主要分为采用集中...
2024-10-20 00:00:00

电子电路中,有时需要将两个点连接起来,实现电流的流通,这时就需要用到短接。贴片电阻短接,指的是利用0欧姆的贴片电阻来实现电路的短接。这种方法相比传统的导线短接,...
2024-11-29 10:26:16

厚生贴片电阻采用4位数字编码表示生产日期,解读方式如下:前两位数字代表生产年份的后两位,后两位数字代表一年中的第几周。例如,编码2230表示该电阻生产于2022...
2024-11-29 10:26:02

贴片电阻上的标识通常采用数字编码,中间带下划线的数字代表小数点的位置。这种表示方法是为了节省空间,方便在小型元件上清晰地标注阻值。例如,标值为47_的电阻,表示...
2024-11-29 10:26:11

直流接触器是应用于电力系统和自动化设备中的电气元件。主要用于控制直流电路的开关,能够有效地实现电源的接通与断开。其应用领域涵盖了多个行业。在电动机控制方面,直流...
2015-02-11 00:00:00

电容器是电子产品中重要的元件。随着科技的发展,电容器的需求也在不断增长。本文将为您介绍一些电容上市公司的龙头,帮助投资者了解市场动态。公司A公司A是电容行业的领...
2025-03-21 04:30:02

5kΩ(5千欧)和4Ω(4欧)的电阻值相差巨大,几乎不在一个数量级上。5kΩ是4Ω的1250倍。两者在电路中的作用也截然不同。5kΩ通常用于需要较大阻值的场景,...
2024-11-29 10:26:17


保险丝作为重要的过载保护元件是关键配件。岚珊保险丝因其高品质的性能和多样的规格,广受市场欢迎。本文将围绕“岚珊保险丝体积的规格及品牌”展开,详细介绍其核心规格参...
2024-01-06 01:06:30