极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 22089|回复: 7

Arduino+Labview 串口占用问题求解

[复制链接]
发表于 2017-3-3 00:07:38 | 显示全部楼层 |阅读模式
最近在学习用上位机labview控制arduino(使用Labview Visa库 而不是 Labview Arduino库,因为Visa更为自由灵活).

参考的是"糊涂塔克学习笔记02 Arduino+Labview (下)"中的例子.
直达链接: http://www.geek-workshop.com/thread-1276-1-1.html

由于手头没有"DS18b20温度传感器芯片",我就用使用一个光敏电阻来代替了,反正都是首先通过Uno(OCROBOT MANGO II) 读取电路/器件的数值,然后通过Labview来显示. 我的MANGO II是通过串口COM3连接到电脑上的.

写好程序后:
过程1, 单独使用Arduino-->tools-->serial Monitor/Plotter 没有问题, MANGO可以正常读数.
过程2, 再使用Labview来读取光敏电阻数据,也没有问题(时序问题还有缓存问题暂且不提~).

问题:过程2中, 当我"Labview中按下Stop键"-->"回到Arduino编译器-->尝试修改程序中的delay(xxx)并Upload"时, Arduino编译器反馈"Error opening serial port 'COM3'. (Port busy)".

也就是说COM3串口已经被Labview占用,所以Arduino编译器无法通过COM3对MANGO注入新的程序.

我的解决办法是: 关闭Labview, 再修改Arduino程序,再打开Labview查看调试结果. 但是这个解决办法实在太冗余(反复开关Labview), 想问问朋友们,有没有比较好的解决办法?

我觉得这个问题很重要,因为通过Labview控制Arduino的时候,经常会出现比较底层的"时序错误/buffer溢出"的问题,需要随时调整Labview界面内的循环等待时间和Arduino的数据读取时间. 然而一旦运行Labview,它作为上位机就会剥夺Arduino编辑器的权限,造成无法修改/upload新程序到板子上.

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2017-3-3 08:38:21 | 显示全部楼层
串口只能被一个软件调用。
问题出在每次退出Labview软件程序运行时没有点击“STOP停止”而是直接点击“停止运行X”导致串口没能及时退出Labview调用。所以此时Arduino编程软件就无法去访问串口啦。
所以切记,每次退出Labview程序运行时一定点击While循环里的“STOP”停止程序!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-3 16:26:09 | 显示全部楼层
@PINKWALKMAN, 谢谢楼上的回答. 我已经注意到了这个问题. 可惜还是没有用.
总结:"点击循环中使用的STOP键"-->"avrdude: ser_open(): can't open device "\\.\COM3",依旧是提示串口被占用,Arduino编译器没有从Labview手上获得串口权限.
不过很重要的一点是, 你的回答让我想起来:是不是Labview里面有一个什么模块来"主动让visa放弃串口权限"?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-3-3 18:57:48 | 显示全部楼层
接3楼本人的回复, 也感谢@PINKWALKMAN 的启发.
我现在是在Labview的后面板,while循环框图之外多加了一个VISA Close 的模块, 目的就是使得"循环读取结束之后/激活while循环的Stop键以后-->Labview通过Visa close模块主动放弃对COM3的占用".

不过如果大家还有什么更好的建议,希望能不吝赐教哇~
回复 支持 反对

使用道具 举报

发表于 2017-3-4 10:59:14 | 显示全部楼层
对了,我看啦你的Labview程序后面要加一个关闭串口指令才对,这样就结束啦串口资源的占用。
回复 支持 反对

使用道具 举报

发表于 2017-3-4 11:04:43 | 显示全部楼层
看这个图,就知道啦。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

发表于 2017-5-25 17:11:51 | 显示全部楼层
老弟是个新手 刚刚接触两三天 Visa、  linx 和labview interface for Arduino  都下载了,但是在labview中搭建好了,它们三个分别 怎么加载到Arduino中的呢
回复 支持 反对

使用道具 举报

发表于 2017-5-25 17:15:25 | 显示全部楼层
哪个大神能帮忙做个例子  用visa 简单的实现 单击灯亮  在单击灯灭就行 ,我研究一下。资料实在是太少了,对于新手有些困难,真心在此求助
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-4-20 15:41 , Processed in 0.056575 second(s), 20 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表