0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

老程序卡住了怎么办?

jf_4uwpxRjJ 来源:小草手把手LabVIEW 2023-08-10 09:54 次阅读

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

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,弹出错误提示。

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

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





审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • LabVIEW
    +关注

    关注

    1918

    文章

    3619

    浏览量

    317006
  • DAQ
    DAQ
    +关注

    关注

    6

    文章

    84

    浏览量

    31915
  • 缓存器
    +关注

    关注

    0

    文章

    63

    浏览量

    11579
  • 延时器
    +关注

    关注

    1

    文章

    36

    浏览量

    14735
  • for循环
    +关注

    关注

    0

    文章

    61

    浏览量

    2420

原文标题:【粉丝排BUG记录】老程序卡住了怎么办?

文章出处:【微信号:小草手把手LabVIEW,微信公众号:小草手把手LabVIEW】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    使用adss软件编译程序卡住了的原因?

    使用 adss软件编译程序卡住在40 %,此时显示编译已经基本结束,CPU(因特尔i9-13)占用率从80% 降低到了 5 %,说明此时CPU基本已经停止编译工作。但是编译无法正常结束,卡住一小时后
    发表于 01-19 06:46

    单独测试QSPI外设与LAN9252通讯正常,但只要一跑从站程序卡住了的原因?

    当前单独测试QSPI外设与LAN9252通讯正常,但只要一跑从站程序卡住了,QSPI状态停在HAL_QSPI_STATE_BUSY_INDIRECT_RX,有没有相关专家可以指点一番,谢谢
    发表于 03-26 07:20

    浮球开关内干簧管为何容易烧坏?请问我该怎么办

    各位大侠:大家好!下面是我画的一个简单的结构图。我想请教一个问题,不知哪位大侠可以帮我?我的问题是:下图中浮球开关内干簧管为何容易烧坏?请问我该怎么办?还有我也通过网上搜索得知需在浮球开关和电磁阀之间串联继电器,但我不知道用什么样的继电器以及如何接线?先谢过!
    发表于 04-29 12:36

    labview收串口数的时候老是卡住

    labview收串口数的时候老是卡住,点完暂停再开始,就又可以了。问问大神们怎么办
    发表于 11-03 21:46

    正在学51,但是被卡住了

    刚刚把郭老师的视频看完,但是在使用自己的单片机学习板的时候,感觉串口通信以及AD/DA这两方面被卡住了,有点难以继续推进。。。AD芯片用的是PCF8591,现在这阶段应该怎么学习呢。。。
    发表于 05-23 16:19

    labview选项卡每次第一次运行点击了按钮以后程序卡住了,请问是为什么?如何解决?

    `我做了一个选项卡界面 里面右按钮 。每次第一次运行 点击了按钮以后程序卡住了没有执行我设置的事件结构,请问这是为什么?第一次运行程序点击按钮后就卡住了,不运行测试
    发表于 07-06 15:43

    自制arduino开发板,上传程序的时候卡住不动了,一直无法上传成功,请问应该怎么办

    ,但是在上传程序的时候卡住不动了,一直无法上传成功(我直接写了一个avr单片机的测试程序,测试过 atmega328 可以正常用),现在想问下该怎么办
    发表于 08-09 13:08

    while循环里面有事件结构按钮触发一次界面就卡住了

    点击学习>>《龙哥手把手教你学LabVIEW视觉设计》视频教程当在程序运行时,点击“”新建记录“”按钮,会触发事件结构,第一次点击运行正常,当第二次点击时,整个运行画面就卡住了,按钮也不能点击,只能终止运行,附上我的程序框图,请
    发表于 08-20 23:20

    C2Prog用SCI烧录28035程序卡住了

    开始烧录时到擦除Flash A卡住了,后来就如附件截图(Wrong Key)那样了,用串口工具发数据41AA080000000000000000000000000000000000000000800000000C011223344556677有相同的回复,三个SCI模式控制脚逻辑正确,求大神回复!!!
    发表于 12-03 16:00

    程序控制进入IVOR并卡住

    当我在spc5studio中编写代码,并使用B行(SPC560B54L5)时,在这种情况下,程序控制进入IVOR并卡住它们。你能帮忙我该怎么办?以上来自于谷歌翻译以下为原文 when i
    发表于 01-14 15:45

    第68讲bank0的设置光标就卡住了

    根据视频教程,我修改了一下代码,想让开发板不重新上电的前提下,连续改变tacc的时间,代码如下:/* main函数的改动 */复制代码一上电可以正常设置,但第二次设置光标就卡住了。如下:Please
    发表于 04-22 07:45

    PyFlasher在控制台中的几行之后卡住了怎么解决?

    我正在尝试使用 Marcel Stör 的 PyFlasher 刷新自定义固件构建并下载。我正在使用 Lolin NodeMCU V3。问题是 PyFlasher 在控制台中的几行之后卡住了。我等了
    发表于 04-28 07:23

    程序在执行CSEC_WriteCommandHeader的时候卡住了怎么解决?

    大家好, 程序在执行CSEC_WriteCommandHeader的时候卡住了,查了几个方向,寄存器都没有报错,现在想知道是不是需要特殊访问CSE_PRAM。
    发表于 06-08 06:30

    make upload下载软件程序卡住了怎么解决?

    Ubuntu环境下成功下载蜂鸟e203的hello_world、coremark等例程,然后下载协处理器测试用例demo_nice后程序卡住,板子烧不了程序,但是串口能显示卡住
    发表于 08-12 07:16

    日本味精企业竟卡住了全世界芯片脖子?

    前不久,一篇名为《一家日本味精公司,卡住了全世界芯片的脖子》的文章热度颇高,由此引发了笔者的思考。
    的头像 发表于 03-01 11:25 1710次阅读