微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 测试测量 > Labview > 关于LABVIEW在不退出的情况下,释放串口资源

关于LABVIEW在不退出的情况下,释放串口资源

时间:10-02 整理:3721RD 点击:

自从学会用LABVIEW起,就一直被这个问题困扰着,用LABVIEW调用下串口就发现串口助手就无法使用,当初也是百思不得其解。一晃眼,两年过去了,又遇到了这个问题,这次说什么也要解决,我不是什么大牛,可能是我写的程序有问题,也希望能帮到和我有一样问题的人吧,废话不多说,开始:


更改前的程序框图


更改后的程序框图,即把执行的程序的放到一个条件语句中,结束的时候将其选否,这样,每次结束的时候即可将串口资源释放。注意选择否的时候相应的接口出不能选择默认值,见下图:


付主界面图,用完之后串口释放如图


按你的图上来说,即使选否,也没有执行visa close函数,串口会被释放吗?

我可能少放了一个图,已补上

我还是没有搞懂的,按道理来说,只有执行了visa close函数串口资源才会被释放,你第三个图仍然没有结束while循环,不结束while循环,就不会执行visa close函数

我觉得应该编写事件,在事件结构里面执行visa close函数

以后在改善下,现在效果是对的先用着

这个是基本的概念哦,资源打开,就必须考虑在任何异常的情况下关闭串口。退出程序前必须走完关闭流程,不然串口会被占用。然后开启软件的时候先配置串口,如果失败就是串口被占用,出报警信息,走一下关闭流程什么的。

对于小编的问题,我给出如下建议,希望你能对LabVIEW认识更进一步
首先需要指明的是只要使用Case结构,请在隧道输出设置的时候取消掉“未连接时使用默认”,如果没有取消,程序出错会有90%的原因与这个相关(使用默认会出现你程序中带空心的隧道点)。为什么不使用默认值呢?在你的程序中默认意味着输出“归零”,你的串口的引用数据会因为默认的关系丢失,导致发送不到“正确的通道上”,所以会提示你找不到资源,原因与是否增加开始环节是无关的,你错误定位不准确,为什么你增加该环节好使了呢?这是因为你在False分支中将正确的串口引用数据传出隧道,所以才可以释放资源。
第二点,要记住,串口获取的资源其实是一个引用,引用即串口的”身份证“,有了这个引用可以找到对应的串口,并且进行相关操作。所以,既然是引用,那么数据其实是唯一的,你只要写一次释放串口资源就可以了,不需要两次。
第三点:你程序主要想实现两个功能,即发送数据和接收显示数据。这个是两个不同类型的操作,可以采用两个循环去做这个事情,即在第一个循环中采用事件结构去发送数据,另外一个循环中不断的去接收数据,两个循环并行执行,可以充分节省内存资源。
如果有更多的问题可以回帖,我会整理整理这些问题,写个专门的教程啥的。

直接运行下关闭串口就释放串口资源了

谢谢小编分享。

最近在研究串口方面  前辈还有其他资源么 菜鸟求指点啊

谢大神指点                          。

您好,如果我想在一个程序里多次打开和关闭同一个串口该怎么操作呢,我试了下每处都放一个VISA OPEN和VISA CLOSE,貌似没用呢。

谢谢小编分享!

很简单事件结构  退出按键点下时事件就是串口关闭

我猜小编的意思是,先关闭那个开始布尔,再停止运行才达到了释放串口资源的目的,他最后附上的释放串口后的前面板截图有网格,说明这时候VI已经停止运行了

小编这个问题我也遇到过,以前有,现在还有,而且即便是NI范例也不能释放串口资源,除非整个关闭LV。而同学却从没遇到这种情况。      我在想会不会是因为 串口关闭函数 不能完美关闭 执行了读取/写入函数的串口资源(也许读/写异常?)所以他在执行关闭函数之前用条件结构使该串口在关闭前避免读/写函数; 同样,事件结构执行关闭前也没有读/写。   
请指教!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top