LabVIEWwilliam hill官网
直播中

孙振宇

11年用户 102经验值
擅长:MEMS/传感技术 光电显示 接口/总线/驱动 射频微波与天线 网络与通信
私信 关注
[问答]

有关串口通信和事件结构的求助

我想实现的VI是,通过串口通信电源仪器发送指令(设定自变量电流值),然后采集数据(因变量电压值),然后将两值绘制成曲线。
我一开始实现了目标,但是由于第一个值发送给电源时。电源本身的延迟性,采集的数据不准,导致后面的数据也不准,我想通过事件结构,先一个初始化事件,将第一个发送过去,然后等待一段时间,再进行下一个事件:循环发送接下来的自变量。但是第二个事件结构,VISA读取如果在事件内,只能读最后一个数据,如果在事件外,只能读第一个返回值,怎么解决这个问题,我觉得是不是事件结构全部完成,才能进行VISA读取,请问有没有其他好方法解决?
图片1.png
Question.zip (130.23 KB)
(下载次数: 51, 2017-8-8 23:51 上传)



回帖(4)

周建远

2017-8-8 23:53:13

最佳答案

我这里缺少两个组件,打不开 我简单写了个框架,你可以照着右边的框架改下你的程序,如果想连续读取可以把VISA读取放在最上面的顺序结构内(需要在顺序内再加一个循环)或者在下面再新建一个定时循环结构来读取  我不了解你这个程序,所以后面的我没法改  你现在没法实时读取的问题就是你原本的问题是只有发送数据时才能读取一次,即使放在循环内也要响应用户事件
举报

周建远

2017-8-9 08:34:37
你这个程序有很多问题,最浅显的两个如下。 第一,初始化一般来说是在程序开始自动执行的,非要照你这样写可以在开始给那个初始化按钮一个信号量也行;第二,我们做项目一般是把事件结构放在while循环内侧,这样事件才能循环发生和处理;第三,你这个程序的框架很有问题,不过看你也不是专业做labview的,就不细说了   最后,回答你的问题,因为你的VISA读取在事件结构内,只有发送按钮值改变时才读取一次,把VISA读取移到事件结构外面就可以了https://bbs.elecfans.com/forum.php?mod=attachment&aid=NTAyNTE0fGI3ZTU4ZjA3NTk2ZjkyZDdjM2U0YTcyZDY0ZjA5YmU1fDE3MzY4NjQ1NTc%3D&request=yes&_f=.jpg
举报
  • 捕获.JPG

孙振宇

2017-8-9 16:45:09
引用: zhouyezuishuai 发表于 2017-8-9 08:34
你这个程序有很多问题,最浅显的两个如下。 第一,初始化一般来说是在程序开始自动执行的,非要照你这样写可以在开始给那个初始化按钮一个信号量也行;第二,我们做项目一般是把事件结构放在while循环内侧,这样事件才能循环发生和处理;第三,你这个程序的框架很有问题,不过看你也不是专业做labview的,就不细说了   最后 ...

首先非常感谢回答。我确实是新手学习。但是用你的方法:把VISA读取移到事件结构外面,还是只会采集一个最开始的数。
举报

孙振宇

2017-8-10 20:44:42
引用: zhouyezuishuai 发表于 2017-8-8 23:53
我这里缺少两个组件,打不开 我简单写了个框架,你可以照着右边的框架改下你的程序,如果想连续读取可以把VISA读取放在最上面的顺序结构内(需要在顺序内再加一个循环)或者在下面再新建一个定时循环结构来读取  我不了解你这个程序,所以后面的我没法改  你现在没法实时读取的问题就是你原本的问题是只有发送数据时才能读 ...

非常感谢!!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分